一、环境配置
- JDK1.8+
- Zookeeper 3.6.1
- 机器配置 Ubutu 16
IP 编号 192.168.59.131 1 192.168.59.132 2 192.168.59.134 4
二、集群安装
2.1 配置服务器编号
2.1.1 /opt/software/zookeeper-3.6.1-bin/这个目录下创建 zkData
zerah@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin$ ll
总用量 52
drwxr-xr-x 7 root root 4096 7月 16 17:44 ./
drwxr-xr-x 3 root root 4096 7月 16 15:52 ../
drwxr-xr-x 2 zerah zerah 4096 4月 21 22:59 bin/
drwxr-xr-x 2 zerah zerah 4096 4月 21 22:59 conf/
drwxr-xr-x 5 zerah zerah 4096 4月 21 23:00 docs/
drwxr-xr-x 2 root root 4096 7月 16 15:52 lib/
-rw-r--r-- 1 zerah zerah 11358 4月 21 22:59 LICENSE.txt
-rw-r--r-- 1 zerah zerah 432 4月 21 22:59 NOTICE.txt
-rw-r--r-- 1 zerah zerah 1963 4月 21 22:59 README.md
-rw-r--r-- 1 zerah zerah 3166 4月 21 22:59 README_packaging.md
drwxr-xr-x 2 root root 4096 7月 16 17:46 zkData/
2.1.2 在 /opt/software/zookeeper-3.6.1-bin/zkData目录下创建一个 myid的文件
zerah@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/zkData$ touch myid
添加myid文件,注意一定要在 linux里面创建,在 notepad++里面很可能乱码
2.1.3编辑 myid文件
[atguigu@hadoop102 zkData vi myid
在文件中添加与 server对应的编号:
1
其他节点针对IP做相应得配置
2.1.4 分别修改每个机器的zk数据存储路径
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/conf# vi zoo.cfg
dataDir=/opt/software/apache-zookeeper-3.6.1-bin/zkData
2.1.5 zoo.cfg集群配置
增加如下配置(若地址配置为主机名,需要配置host)
#######################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
demo
######################################Cluster##############################
server.1=192.168.59.131:2888:3888
server.2=192.168.59.132:2888:3888
server.4=192.168.59.134:2888:3888
2.1.6 配置参数解读
server.A=B:C:D
- A是一个数字,表示这个是第几号服务器;集群模式下配置一个文件 myid 这个文件在 dataDir目录 下,这个文件里面有一个数据就是 A的值,Zookeeper启动时读取此文件,拿到里面 的 数据与 zoo.cfg里面 的配置信息比
较从而判断到底是哪个 server。 - B是这个服务器的地址;
- C是这个服务器 Follower与集群中的 Leader服务器交换信息的端口;
- D是 万一集群中的 Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的
Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
3.集群操作 || 选举机制
3.1.1分别启动zk server
### 启动
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/bin# ./zkServer.sh start
### 状态查看
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/bin# ./zkServer.sh status
### 停止
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/bin# ./zkServer.sh stop
如果只启动一台zk server,查看状态会出错,因为集群有三台服务器,只启动一台没达到半数以上,因此无法保证集群可靠性:
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/bin# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/software/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
启动第二台,第二台为leader:
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/bin# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/software/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
启动第三台,第三台是flower
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/bin# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/software/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
停掉第二台,第三台是Leader
root@zerah-virtual-machine:/opt/software/apache-zookeeper-3.6.1-bin/bin# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/software/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader