分布式部
规划:在129,130,131服务器上面分布部署zookeeper
准备工作
- 准备三台服务器,使用的是VMware Workstation这个虚拟机并复制三份centos7的镜像
- 安装jdk
- 下载zookeeper,并上传到linux服务器上
- 解压到指定目录:
[bushro@hadoop129 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
配置
把129中的zookeeper文件同步到130,131服务器上面
[bushro@hadoop129 module]$ xsync zookeeper-3.4.10/
配置服务器编号
(1)在/opt/module/zookeeper-3.4.10/这个目录下创建zkData
[bushro@hadoop129 zookeeper-3.4.10]$ mkdir -p zkData
(2)在/opt/module/zookeeper-3.4.10/zkData目录下创建一个myid的文件
[bushro@hadoop129 zkData]$ touch myid
(3)编辑myid文件
在文件中添加与server对应的编号:1
(4)拷贝配置好的zookeeper到其他机器上
xsync的使用参考https://blog.csdn.net/BushQiang/article/details/103772688
[bushro@hadoop129 zkData]$ xsync myid
并分别在hadoop130、hadoop131上修改myid文件中内容为2、3
配置zoo.cfg文件
- (1)重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg
[bushro@hadoop129 conf]$ mv zoo_sample.cfg zoo.cfg
- (2)打开zoo.cfg文件
修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.4.10/zkData
增加如下配置
#######################cluster########################## server.1=hadoop129:2888:3888 server.2=hadoop130:2888:3888 server.3=hadoop131:2888:3888
- (3)同步zoo.cfg配置文件
[bushro@hadoop129 conf]$ xsync zoo.cfg
- (4)配置参数解读
server.A=B:C:D
A是一个数字,表示这个是第几号服务器; 集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。 B是这个服务器的ip地址; C是这个服务器与集群中的Leader服务器交换信息的端口; D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
集群操作
(1)分别启动129,130,131上面的Zookeeper
[bushro@hadoop129 zookeeper-3.4.10]$ bin/zkServer.sh start [bushro@hadoop130 zookeeper-3.4.10]$ bin/zkServer.sh start [bushro@hadoop131 zookeeper-3.4.10]$ bin/zkServer.sh start
查看状态
129开始启动的时候,由于是集群是3台服务器,只有半数以上(2)才可以正常运行一台是不行的,130启动后集群可以正常运行,它的myid比较大,所以它是Leader,131启动后它就只能是follower