02 ZooKeeper集群搭建

1 安装

下载地址:
http://www.apache.org/dyn/closer.cgi/zookeeper/
生产环境中有线下载stable版本
目录结构:
bin 存放系统脚本
conf 存放配置文件
contrib zk附加功能支持
dist-maven maven仓库文件
docs zk文档
lib 依赖的第三方库
recipes 经典场景样例代码
src zk源码
下载完成后将tar包拷入虚拟机 /usr/local/src下

# 解压zookeeper到/usr/local并重命名
tar -zxvf zookeeper-3.4.12.tar.gz -C ../
cd ..
mv zookeeper-3.4.12 zookeeper

2 JDK环境变量配置

vi /etc/profile
# 进入编辑模式
export JAVA_HOME=/usr/local/jdk1.8.0_221
export ZOOKEEPER_HOME=/usr/local/zookeeper
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
# 保存后执行使环境变量生效
source /etc/profile

3 Zookeeper配置

重命名 zoo_sample.cfg

cd /usr/local/zookeeper/conf
# 重命名zoo_sample.cfg --> zoo.cfg
mv zoo_sample.cfg zoo.cfg

修改 zoo.cfg

# 如果没有该目录需要手动创建
dataDir=/usr/local/zookeeper/data
# 文件末尾添加3个节点(IP换成自己的集群)
server.0=192.168.204.131:2888:3888
server.1=192.168.204.132:2888:3888
server.2=192.168.204.133:2888:3888

创建服务器标识

cd /usr/local/zookeeper/data
# 创建文件myid
touch myid
# 将标识写入myid
echo 0 > myid

将此环境拷入剩余两个节点

scp -r /usr/local/zookeeper/ [email protected]:/usr/local/zookeeper
scp -r /usr/local/jdk1.8.0_221/ [email protected]:/usr/local/jdk1.8.0_221
scp -r /etc/profile [email protected]:/etc/profile

分别进入剩余两个节点:

# 环境变量生效
source /etc/profile
# 更改服务标识
echo 1 > /usr/local/zookeeper/data/myid
echo 2 > /usr/local/zookeeper/data/myid

启动Zookeeper
路径 /usr/local/zookeeper/bin/

集群启动(所有zk服务都必须启动)
zkServer.sh start
# 查看节点状态
zkServer.sh status

5 启动报错解决方案

没有到主机的路由 (Host unreachable)

# 关闭防火墙
systemctl stop firewalld
# 查看防火墙状态
systemctl status firewalld

拒绝连接 (Connection refused)
启动的顺序是slave-01>slave-02>slave-03

由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。

其他结点可能也出现类似问题,属于正常。

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

你可能感兴趣的:(02 ZooKeeper集群搭建)