安装zookeeper
集群配置如下:
服务器ip | 主机名 | myid的值 |
---|---|---|
172.16.106.231 | node01 | 1 |
172.16.106.232 | node02 | 2 |
172.16.106.233 | node03 | 3 |
一、配置环境
cd /opt
curl https://repo.huaweicloud.com/java/jdk/8u172-b11/jdk-8u172-linux-x64.tar.gz -O
tar zxvf jdk-8u172-linux-x64.tar.gz
vi /etc/profile
# 填入以下内容
# export JAVA_HOME=/opt/jdk1.8.0_172
# export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
cd /opt
curl https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz -O
tar zxvf zookeeper-3.4.9.tar.gz
二、修改配置文件
cd /opt/zookeeper-3.4.9/conf
cp zoo_sample.cfg zoo.cfg
mkdir /opt/zookeeper-3.4.9/zkdatas/
vi zoo.cfg
修改并添加以下内容
dataDir=/opt/zookeeper-3.4.9/zkdatas
autopurge.snapRetainCount=3 # 保留多少快照
autopurge.purgeInterval=1 # 日志几个小时清理一次
# 集群服务器地址
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
添加myid配置
在第一台机器上/opt/zookeeper-3.4.9/zkdatas/
这个路径下创建一个文件,文件名字是myid,内容是1
cd /opt/zookeeper-3.4.9/zkdatas/
echo 1 >> myid
配置ip地址,将下面的内容填写在/etc/hosts中
172.16.106.231 node01
172.16.106.232 node02
172.16.106.233 node03
scp -r /opt/zookeeper-3.4.9 node02:/opt/
scp -r /opt/zookeeper-3.4.9 node03:/opt/
修改每个主机的/opt/zookeeper-3.4.9/zkdatas/myid
为对应的主机号
node02节点换为2
node03节点换为3
三、启动zookeeper
/opt/zookeeper-3.4.9/bin/zkServer.sh start
测试zookeeper是否启动
[root@node02 zkdatas]# jps # 一个查看java相关的进程
1398 QuorumPeerMain # 这个就是zookeeper
1418 Jps
查看谁是leader谁是following。
/opt/zookeeper-3.4.9/bin/zkServer.sh status
启动成功之后的输出为
[root@node01 ~]# /opt/zookeeper-3.4.9/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
[root@node02 ~]# /opt/zookeeper-3.4.9/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
[root@node03 ~]# /opt/zookeeper-3.4.9/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
四、问题汇总
- 在启动的时候出现contact error。
[root@node02 zkdatas]# /opt/zookeeper-3.4.9/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
答:需要关闭防火墙
centos7 关闭防火墙
sudo systemctl stop firewalld 临时关闭
sudo systemctl disable firewalld ,然后reboot 永久关闭
sudo systemctl status firewalld 查看防火墙状态。
# 如果没有关闭,可以重启一下
- 集群启动的自动化脚本
2.1 需要配置免密登录,请参考文章Hadoop安装(vmfusion for mac、centos7)中关于ssh免密登录。
# 生成一个公私钥对
ssh-keygen -t rsa
私钥在/root/.ssh/id_rsa中
公钥在/root/.ssh/id_rsa.pub中
将公钥的内容放在其他用户的~/.ssh/authorized_keys中,本机就能免密ssh访问其他用户了
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCk63c0LR+FKS6zMqNgGqRtxKBc8ht59v2qnI22JTeQQ7o864fVJYEzHqY33MGcBBYM/V/J1HDdqH0SgVwxLLlY0v2p5wnjRKnCcBULB/SVYU8vg57l8pZAD+gmCWaiKtWMZDVqxluj5P4YItfeS2cuKwmN7RRbA4YV3QjPdClbFSH2vrNq93O39ZjnLYO+WNejz1cOx5AZV3ml7ffQ/wcgEo+CRdp5p/K5XeV7zj4MEgpIgYVKhFlljtOHvOIx6lphlRNwz9SKuq/0nsiUapXLMTIR2qkFebAl0JcqfdZjs1ErYBXR0rpz5RBOESKFjvZVaI2cvIaLLsK8L9vQKYer root@node01
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDC30SFIXvbhzl7HqkDeU+VpFOHeVGg7ZUpYFdOUDLD0zU31QIFFEntW/St7jDYDkzxZyyUF0KOlWtomSoo6pHkL3Vp4TOf3bJu1L/lfKfnWX8nb7Mktb6mEHUu4/qkK35/AOr5F+e0UFRbaM7S2GMCOBpDcD4f8UmMG/ApbEalg4pURV6u02LXVcO+GZBcUupH8/Uv2FQ8w0QP7H1FxoLD9QP+KLDNmGbDAaTGFfORotg+Jm47S3jSXWNLAHEZIZN+44a/568hgOn5sX7IbKyrKNs4RbhOkEJ1ZK89Rf+SASUkJ4ClG4Eba+fLKYrP7Rc4OGwDTX26XotXPiVIS+/L root@node02
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxfbBtCRUEKnJNGbTFCuFLyGCX6s336mZkGYNHRCVYf/MjNLo/qbRm1lUppZ1GAJ6xJdwmxighZEpdDgjgmhr2PxpgiL1E5usr1uUnB3KC9+qCAdWVSgLCr/+PixCL4u9cP89ngj4xIsmpqktg2QoZLL3KZUtmQNkUP3nwWeXlWQlCj3kRpA2dh+lMOxgd4FndllgPESHocZhFar1uwmQkJh9EHXHA6EN36BtJO+GN/dbMRhbSU5qFP8CkZEyHpIPdmUwADTZA/BAaGZ6x5HYyMBTFNsLGbmWFBgCorMveolePIkJoC2idPJu+qOfEL4JJ9qYoVptwETgTl08mTpO5 root@node03
2.2 编写脚本
#!/bin/bash
# 参数 start 启动
# 参数 stop 关闭
# 参数 restart 重启
echo "start zkServer..."
for i in 01 02 03
do
ssh node$i "source /etc/profile;/opt/zookeeper-3.4.9/bin/zkServer.sh $1"
done