为什么要数据同步(Zookeeper)

1.为什么要做数据同步?

		防止单台机器节点宕机后,数据丢失或者访问不到

2.当Leader宕机后,会发生什么?

		其余的Follwer机器会根据特定的规则选择出一个Leader,当集群机器节点存在于半数以上则能继续对外提供服务

3.搭建ZK集群环境

		注意:配置任何文件都要找到对应目录     查看当前目录地址:pwd
	
		
		3.1 搭建zk集群之前,保证每一台机器都要JDK环境,并且机器数量不能小于3台
			第一台:192.168.67.41                 
			第二台:192.168.67.42
			第三台:192.168.67.43
			(根据自身情况选择)
			
			
			如果安装完系统后默认存在JDK应该如何操作:
				1.查找当前系统当中存在的jdk
					npm -qa |grep java
				2.使用rmp -e --nodeps jdk-openxxxxxxxxx
			
			如何配置JDK:
				
				1.在/usr/local下新建了一个文件夹java,将JDK的tar包上传到Linux系统对应目录当中
				2.切换到对应目录,找到刚刚上传的tar包
					cd /usr/local/java                         
					可以通过ll命令查看当前目录下的所有文件
				3.解压jdk安装包
					tar -zxvf jdk-1.8xxxxxx.tar.gz
				
				4.配置jdk环境变量,更改环境变量文件
					vi /etc/profile
				5.切换到该文件的最后一行,然后编辑(按i),将对应内容复制或者手写到该文件当中
					如有疑问请搜索:Linux配置JDK环境变量,将对应配置目录改为自己目录即可
			
			
		3.2 配置ZK集群
			3.2.1 首先在/usr/local下创建一个文件夹zookeeper,将本地windows计算机当中的zookeeper-3.6.10.tar.gz包上传到Linux系统对应目录当中
			3.2.2 切换到/usr/local/zookeeper目录当中
			3.2.3 使用tar -zxvf zookeeper-3.4.10.tar.gz解压到当前文件夹
			3.2.4 编辑系统环境变量,加入zk环境变量
					vi /etc/profile
					文件末尾加入如下内容(路径根据自身情况进行书写)
						export JAVA_HOME=/opt/jdk1.8.0_71
						export ZOOKEEPER_HOME=/usr/local/zookeeper
						export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
						export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
			3.2.5 将zookkeeper解压目录的conf文件夹下的zoo_sample.cfg 改名为zoo.cfg 
				mv zoo_sample.cfg zoo.cfg
			3.2.6 修改对应的zoo.cfg
				3.2.6.1 修改dataDir内容指向到自定义地址,建议在zookeeper解压目录下新建一个data文件夹,然后指向到该文件夹
							dataDir是数据文件存放地址
				3.2.6.2 在zoo.cfg文件末尾加入集群机器配置关系
					server.myid(zk机器标识)=IP地址:2888:3888
					server.0=192.168.7.66:2888:3888
					server.1=192.168.7.77:2888:3888
					server.2=192.168.7.88:2888:3888
				3.2.6.3 esc,:wq!保存并退出
			
			3.2.7 创建对应服务器标识
				要知道当前在那一台服务器,然后创建对应myid标识
				
				cd /usr/local/zookeeper/zookeeper-3.4.10/data
				创建myid文件	vi myid  
				编辑myid文件加入对应服务器标识
			
			
		3.3 注意问题
			我们可以在一台机器上配置完JDK以及zk和环境变量后,将当前机器关闭,右键克隆
			克隆完成需要改对应IP地址和Myid文件配置:
				IP地址更改:
					vi /etc/sysconfig/network-scripts/ifcfg-eno167xxxxxxxxxxxxx 
					
					将IPADDR内容修改为静态IP地址,比如192.168.7.77
				
				Myid文件改为对应服务器标识即可
			
			集群环境各个机器节点需要通信
				集群机器需要关闭防火墙
				conentos7关闭防火墙:
					systemctl stop firewalld.service
					systemctl disable firewalld.service

		3.4 启动zk服务
			切换到对应bin目录:
				cd /usr/local/zookeeper/zookeeper-3.4.10/bin
			启动zk服务:./zkServer.sh start
			停止zk服务:./zkServer.sh stop
			重启zk服务:./zkServer.sh restart

4.监控zk

		4.1 在linux当中,可以通过再bin目录下使用./zkServer.sh status查看当前服务器的角色以及状态
		4.2 windows如何操作zk
			4.2.1 找到zk压缩包,将压缩包解压到当前文件夹
			4.2.2 将conf文件夹下的zoo_sample.cfg文件改为zoo.cfg
			4.2.3 在解压目录下创建一个data文件夹,修改zoo.cfg中dataDir数据目录路径(不是必须)
			4.2.4 启动zk,找到bin目录下有一个zkServer.cmd(启动前保证有JDK环境变量)
		4.3 操作zk	
			操作 工具 :ZooInspector
			找到对应目录:E:\学习文档\Zookeeper\ZooInspector\build
			双击启动jar文件:zookeeper-dev-ZooInspector.jar
	
	5.介绍zoo.cfg文件内容:
		tickTime代表心跳时间,一般情况下来讲,每一台服务器会定时发送心跳,如果超过该时间没有发送心跳则代表当前服务器宕机,最小超时时间为两个心跳时间
		initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值
		clientPort:服务的监听端口,默认为2181
		dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)
		syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。
		server.A=B:C:D:
		A是一个数字,表示这个是第几号服务器,B是这个服务器的ip地址
		C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
		D是在leader挂掉时专门用来进行选举leader所用
	
	6.利用zk原生客户端操作zk服务器
		在上面案例中利用到了ZooInterceptor工具操作了zk服务器,那么就相当于利用客户端进行操作
		6.1 查看当前zk服务器的目录结构
			ls /目录 查看该目录下的所有文件
			ls2 /目录 查看该目录下文件的更新次数
			
		6.2 创建节点:不能跳目录创建
			create 目录 节点值
			示例:
				在根目录下创建一个节点,值为空
				create /znode ''
				在根目录的zookeeper目录下创建一个节点znodeChild,值为znodeValue
				create /zookeeper/znodeChild znodeValue
				
				
			节点分类型:节点分为临时和持久
				默认情况下创建的节点为持久节点
				
				创建临时节点如下:(临时节点创建后不能有子节点)
					create -e 目录 节点值 [权限]
					示例:
					create -e /zNodeEphemearl EphemearlValue 
		6.3 获取节点
			get 节点
		
		6.4 修改节点
			set 节点 节点值
		
		6.5 删除节点
			delete 节点 只能一层一层删除
			rmr 节点 递归删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值