分别登录server1、server2、server3执行,操作、配置相同:
##创建安装目录/usr/local/services/zookeeper
mkdir -p /usr/local/services/zookeeper
cd /usr/local/services/zookeeper
##下载安装包zookeeper-3.4.13.tar.gz
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
##解压缩zookeeper-3.4.13.tar.gz
tar -zxvf zookeeper-3.4.13.tar.gz
分别登录server1、server2、server3执行,操作、配置相同:
cd /usr/local/services/zookeeper/zookeeper-3.4.13/conf
##先备份,再修改
cp zoo_sample.cfg zoo.cfg
配置文件参数修改如下,可自行根据需求配置:
# /usr/local/services/zookeeper/zookeeper-3.4.13/conf/zoo.cfg
# 发送心跳时间,单位:毫秒
tickTime=2000
# 配置Zookeeper集群中服务端(Leader)接受客户端(Follower)初始化连接的最大心跳时间间隔数
# 当超过10个(initLimit个)心跳时间2000(tickTime毫秒)后Zookeeper服务器仍未收到客户端返回的信息,则认为客户端(Follower)连接失败
initLimit=10
# 配置Leader和Follower之间发送消息时,请求和应答时间的长度最大不能超多的多少个(syncLimit个)心跳时间(tickTime毫秒)
syncLimit=5
# Zookeeper保存数据的目录
dataDir=/tmp/zkdata
# Zookeeper保存是指数据的目录
dataLogDir=/tmp/zkdataLog
# 客户端访问 zookeeper 的端口号
clientPort=2181
# 客户端最大连接数
#maxClientCnxns=60
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
# server.id=host:port1:port2
# id 是一个数字(1~255),代表服务器编号Server ID,标识机器在集群中的机器序号,dataDir目录下的myid文件内容就是此 ID
# host 是此服务器IP地址
# port1 是此服务器与集群中的Leader服务器交换信息的端口
# port2 当集群中的Leader服务宕机后,集群中的其他服务器使用此端口相互通信,重新选举出新的Leader
# 注意:若配置为伪集群,因为 B 都相同,所以 D 配置的实例通信端口不能一样
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
创建的myid文件的位置:zoo.cfg文件中 dataDir=/tmp/zkdata 参数配置的目录;
创建的myid文件的内容:zoo.cfg文件中 server.id=host:port1:port2 中的id,与服务器一一对应,且集群中的服务器id各不相同。
分别登录server1、server2、server3执行,操作、配置不同:
##登录server1
cd /tmp/zkdata
echo "1" > myid
##登录server2
cd /tmp/zkdata
echo "2" > myid
##登录server3
cd /tmp/zkdata
echo "3" > myid
分别登录server1、server2、server3执行,操作、配置相同:
cd /usr/local/services/zookeeper/zookeeper-3.4.13/bin
##启动服务
./zkServer.sh start
##查看进程号是否存在
jps
##查看服务状态
./zkServer.sh status
如果按顺序依次启动集群中的节点,第二个成功启动的节点将会成为 leader 。
注意:当只启动server1时,执行 ./zkServer.sh status 查看状态如下:
原因: zoo.cfg配置文件中设置集群内有3台服务器,仅启动节点server1,投票数不会过半,所以server1上提示“It is probably not running”。可以理解为程序启动了,但并未启动服务。若此时执行命令 ./zkServer.sh start-foreground 查看日志,也将有java.net.BindException错误,待启动集群中其它节点后,status将会因产生有效投票结果而变化。
##查看服务启动详细日志
./zkServer.sh start-foreground
##默认服务启动日志文件
cat /usr/local/services/zookeeper/zookeeper-3.4.13/bin/zookeeper.out
检查是否是端口占用,kill相应进程或者更改服务端口:
sudo netstat -nltp | grep 2181
检查集群中所有服务器的防火墙配置:
##查看防火墙状态
firewall-cmd --state
##关闭防火墙
systemctl stop firewalld.service
原文:https://www.cnblogs.com/DeepInThought/p/11006805.html