Zookeeper 集群部署
一、 Zookeeper 简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
- zookeeper 集群node节点数量 n -1宕机,集群仍然可以正常提供服务,所以一般以奇数的节点组成集群,故集群节点数量通常为 3节点,5节点 …
二、 Zookeeper 集群部署
- 部署环境
操作系统 | IP | 主机名 |
---|---|---|
CentOS Linux release 7.5.1804 (Core) | 192.168.169.10 | zk-node1 |
CentOS Linux release 7.5.1804 (Core) | 192.168.169.20 | zk-node2 |
CentOS Linux release 7.6.1810 (Core) | 192.168.169.30 | zk-node3 |
1、zookeeper 依赖 JDK,检查每个节点是否安装jdk ,如果没有则需安装JDK
[root@zk-node1 zookeeper]# java -version //执行命令会显示JDK版本信息
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
2、zookeeper 节点之间需要互相通信,需要关闭防火墙,保证节点之间网络连通正常,在每个节点执行
[root@zk-node1 zookeeper]# setenforce 0
[root@zk-node1 zookeeper]# sed -ri 's/^(SELINUX=).*/\1disable/g' /etc/selinux/config
[root@zk-node1 zookeeper]# systemctl stop firewalld
[root@zk-node1 zookeeper]# systemctl disable firewalld
3、zookeeper 官网下载安装包,上传至所有节点服务器,并解压
zookeeper 官网
[root@zk-node1 zookeeper]# ls
apache-zookeeper-3.7.1-bin.tar.gz
[root@zk-node1 zookeeper]# tar xvf apache-zookeeper-3.7.1-bin
4、修改主配置文件
[root@zk-node1 zookeeper]# cd apache-zookeeper-3.7.1-bin/conf/
[root@zk-node1 conf]# cp zoo_sample.cfg zoo.cfg
[root@zk-node1 conf]# cat zoo.cfg
# Follower和Leader之间的心跳检测时间
tickTime=2000
# Follower和Leader的连接超时时间
initLimit=10
# Follower数据同步Leader的超时时间
syncLimit=5
#指定数据存储路径
dataDir=/home/zookeeper/apache-zookeeper-3.7.1-bin/data
#指定日志路径
dataLogDir=/home/zookeeper/apache-zookeeper-3.7.1-bin/logs
#zookeeper 监听在本地端口
clientPort=2181
#组成集群内的所有节点
server.1=192.168.169.10:2188:3288
server.2=192.168.169.20:2188:3288
server.3=192.168.169.30:2188:3288
示例配置server.1=192.168.169.10:2188:3288 表示如下
server.1 表示节点序列号
192.168.169.10 集群节点的IP
2188 节点之间内部通信端口
3288 节点之间 master 选举端口
5、在所有节点创建数据目录和日志目录
[root@zk-node1 ~]# mkdir /home/zookeeper/apache-zookeeper-3.7.1-bin/data/
[root@zk-node1 ~]# mkdir /home/zookeeper/apache-zookeeper-3.7.1-bin/logs/
6、将这个配置文件拷贝到其他节点相同的路径下
[root@zk-node1 conf]# scp zoo.cfg root@192.168.169.20:/home/zookeeper/apache-zookeeper-3.7.1-bin/conf/
[root@zk-node1 conf]# scp zoo.cfg root@192.168.169.30:/home/zookeeper/apache-zookeeper-3.7.1-bin/conf/
7、分别在所有节点的数据目录下创建 myid 文件并写入序列号,每个节点序列号必须和主配置文件一致
[root@zk-node1 ~]# cd /home/zookeeper/apache-zookeeper-3.7.1-bin/data/
[root@zk-node1 data]# echo 1 > myid
[root@zk-node2 ~]# cd /home/zookeeper/apache-zookeeper-3.7.1-bin/data/
[root@zk-node2 data]# echo 2 > myid
[root@zk-node3 ~]# cd /home/zookeeper/apache-zookeeper-3.7.1-bin/data/
[root@zk-node3 data]# echo 3 > myid
8、所有节点启动 zookeeper
[root@zk-node1 ~]# sh /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start
[root@zk-node2 ~]# sh /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start
[root@zk-node3 ~]# sh /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start
9、查看节点的状态 ,leader 为主节点,follower为 从节点
[root@zk-node1 ~]# /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@zk-node2 ~]# /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@zk-node3 ~]# /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower