1、ZooKeeper介绍
1.1、ZooKeeper 在 Java 版本 1.8 或更高版本中运行(JDK 8 LTS、JDK 11 LTS、JDK 12 - 不支持 Java 9 和 10),它作为 ZooKeeper 服务器的集合运行,三个 ZooKeeper 服务器是一个整体的最小推荐大小,我们还建议它们在不同的机器上运行。
1.2、ZooKeeper 集群强烈建议使用奇数台机器,例如,在四台机器上,ZooKeeper 只能处理一台机器的故障;如果两台机器发生故障,则其余两台机器不构成多数。但是,如果有五台机器,ZooKeeper 可以处理两台机器的故障。容错集群设置至少需要三台服务器。
1.3、通常三台服务器对于生产安装来说绰绰有余,但为了在获得最大的可靠性,您可能希望安装五台服务器。
1.4、官方网站:
https://zookeeper.apache.org/
1.5、下载地址:
https://downloads.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
1.6、说明文档:
https://zookeeper.apache.org/doc/current/zookeeperAdmin.html
2、部署zookeeper集群,这里使用三台服务器组成集群模式。
操作系统:CentOS-7.x
ip地址:192.168.21.100,192.168.21.101,192.168.21.128
zookeeper默认使用2181端口,集群模式还会用到2888、3888端口,建议zookeeper部署在内网环境中,服务器上关闭防火墙,分别在三台服务器上操作。
2.1、安装Java
ZooKeeper依赖Java才能运行,首先安装Java环境,我们使用Java 1.8版本
Linux系统下安装Java JDK:https://www.osyunwei.com/archives/12872.html
2.2、安装ZooKeeper
mkdir -p /data/server/zookeeper #创建安装目录
mkdir -p /data/server/zookeeper/data #创建数据目录
mkdir -p /data/server/zookeeper/logs #创建日志目录
下载目录:/usr/local/src/apache-zookeeper-3.8.1-bin.tar.gz
cd /usr/local/src/
tar zxvf apache-zookeeper-3.8.1-bin.tar.gz -C /data/server/zookeeper --strip-components 1
#拷贝配置文件
cp /data/server/zookeeper/conf/zoo_sample.cfg /data/server/zookeeper/conf/zoo.cfg
vi /data/server/zookeeper/conf/zoo.cfg #修改添加,注意端口等参数不要重复添加,否则启动失败
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/server/zookeeper/data #数据目录
dataLogDir=/data/server/zookeeper/logs #日志目录
clientPort=2181
#maxClientCnxns=60
#metricsProvider.exportJvmInfo=true
#admin服务配置
#admin.enableServer=true
#admin.serverPort=8088
4lw.commands.whitelist=*
#添加zookeeper节点
#服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
#本机的地址也可以写成server.1=0.0.0.0:2888:3888
server.1=192.168.21.100:2888:3888
server.2=192.168.21.101:2888:3888
server.3=192.168.21.128:2888:3888
#添加访问权限,只允许以下ip读写访问
acl=127.0.0.1:rw
acl=localhost:rw
acl=192.168.21.0/24:rw
acl=192.168.1.0/24:rw
:wq! #保存退出
#添加myid文件,每个节点的内容不同,分别对应server.1的这个数字1,server.2的这个数字2,server.3的这个数字3
echo "1" >/data/server/zookeeper/data/myid #192.168.21.100设置为1
echo "2" >/data/server/zookeeper/data/myid #192.168.21.101设置为2
echo "3" >/data/server/zookeeper/data/myid #192.168.21.128设置为3
vi /etc/profile #配置环境变量
#set zookeeper environment
export ZOOKEEPER_HOME=/data/server/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
:wq! #保存退出
source /etc/profile #使配置立即生效
启动命令:/data/server/zookeeper/bin/zkServer.sh start
停止命令:/data/server/zookeeper/bin/zkServer.sh stop
重启命令:/data/server/zookeeper/bin/zkServer.sh restart
状态查看命令:/data/server/zookeeper/bin/zkServer.sh status
[root@localhost conf]# /data/server/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/server/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
ps -ef |grep zookeeper #查看进程
telnet 192.168.21.100 2181 #查看端口
vi /etc/rc.d/rc.local #添加开机启动
/bin/sh /data/server/zookeeper/bin/zkServer.sh start
:wq! #保存退出
#使用普通用户myuser启动,注意需要设置zookeeper的目录所有者为myuser用户
su - myuser -c "/bin/sh /data/server/zookeeper/bin/zkServer.sh start"
#默认/etc/rc.local没有执行权限,需要手动添加执行权限
chmod +x /etc/rc.d/rc.local
sh /data/server/zookeeper/bin/zkServer.sh start #启动zookeeper,注意zookeeper集群需要所有节点同时启动
至此,Linux系统下部署ZooKeeper集群完成。