Linux下zookeeper集群环境搭建
自行搭建一个zookeeper集群(本例只使用3个zookeeper,搭建zookeeper集群,zookeeper个数必须为奇数)
1.zookeeper下载
第一种方式:下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ (选择一个镜像地址后下载相应版本zookeeper)
下载到电脑上然后传输到Linux系统上相应的文件中
第二种方式:执行命令 yum -y install wget(安装了wget忽略此步骤)
在相应文件加下直接 执行 wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz(我选用的是3.4.10版)
2.修改配置文件后进行选举
(我是下载到 /home/jiang/myapp/目录下,原文地址:http://www.cnblogs.com/northern-light/)
2.1 tar -zxf zookeeper-3.4.10.tar.gz 得到文件:zookeeper-3.4.10
2.2 得到 zk1 zk2 zk3
cp -r zookeeper-3.4.10 /usr/local/kafkacloud/zk1 :将文件拷贝到/usr/local/kafkacloud/目录下并重命名为zk1
cd /usr/local/kafkacloud/ :切换到/usr/local/kafkacloud/目录下
【下面的命令均是在/usr/local/kafkacloud/目录下执行】
cp -r /usr/local/kafkacloud/zk1 zk2
cp -r /usr/local/kafkacloud/zk1 zk3
2.3 修改配置文件
分别拷贝zoo_sample.cfg得到zoo.cfg文件并修改zoo.cfg参数(zk1/zk2/zk3均需要)
cp zk1/conf/zoo_sample.cfg zoo.cfg
vim zk1/conf/zoo.cfg
设置参数:(路径根据自己需求进行设置)
dataDir=/usr/local/kafkacloud/zk1/zkdata (并在对应文件目录下创建 zkdata文件夹)
添加 dataLogDir=/usr/local/kafkacloud/zk1/zkdatalog (并在对应文件目录下创建 zkdatalog文件夹)
clientPort=2181 (zk1设置为 2181 zk2 :2181 zk3:2183)
添加 (zk1 zk2 zk3的zoo.cfg文件里都需要添加这三行参数)
server.1=192.168.10.13:2881:3881
server.2=192.168.10.13:2882:3882
server.3=192.168.10.13:2883:3883
:wq (保存退出)
(myid文件中的数字用于标记zookeeper,用于选举)
执行 echo "1" > zk1/zkdata/myid :wq (保存退出)
echo "2" > zk1/zkdata/myid :wq (保存退出)
echo "3" > zk1/zkdata/myid :wq (保存退出)
2.4 启动zookeeper进行选举
zk1/bin/zkServer.sh start
zk2/bin/zkServer.sh start
zk3/bin/zkServer.sh start
2.5 查看选举后的状态
Mode: follower :表示跟随者
Mode: leader :表示Leader
zk1/bin/zkServer.sh status
zk2/bin/zkServer.sh status
zk3/bin/zkServer.sh status
3. 写一个简单的zookeeper集群启动和停止脚本
启动zookeeper集群脚本:
vim start-zks.sh (文件名字克可随意选取)
打开文件添加以下语句后保存退出
#!/bin/bash
/usr/local/kafkacloud/zk1/bin/zkServer.sh start
/usr/local/kafkacloud/zk2/bin/zkServer.sh start
/usr/local/kafkacloud/zk3/bin/zkServer.sh start
关闭zookeeper集群脚本:
vim stop-zks.sh (文件名字克可随意选取)
#!/bin/bash
/usr/local/kafkacloud/zk1/bin/zkServer.sh stop
/usr/local/kafkacloud/zk2/bin/zkServer.sh stop
/usr/local/kafkacloud/zk3/bin/zkServer.sh stop
给创建的两个脚本文件赋予执行权限
chmod +x start-zks.sh
chmod +x stop-zks.sh
4.防火墙端口开放
执行 vim /etc/sysconfig/iptables (将 2181 2182 2183端口开放)
文件示例:
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT (需要添加)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2182 -j ACCEPT (需要添加)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2183 -j ACCEPT (需要添加)
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT (这三句不能掉)
:wq (保存退出)
重启防火墙: service iptables restart
关于zoo.cfg配置文件参数说明
tickTime:基本事件单元,以毫秒为单位。这个时间作为zookeeper服务器之间或客户端与服务器
之间维持心跳的时间间隔,也就是每隔tickTime时长会发送一个心跳。
dataDir: 存储内存中数据库快照的位置,即zookeeper保存数据的目录,默认情况下,zookeeper
将写数据的日志文件也保存在这个目录里。
dataLogDir: 写数据的日志文件保存的目录。
initLimit : 用来配置zookeeper接受客户端初始化连接时最长能忍受initLimit个心跳时间间隔数
syncLimit : 这个参数表示Leader与Follwer之间发送消息,请求和应答时长,最长不能超过syncLimit个心跳时间间隔
server.A = B:C:D A:表示这是第几个服务器
B :表示这个服务器的IP
C : 表示这个服务器与集群中的Leader服务器交换数据的端口
D :用于选举的端口(C和D表示的两个端口号不能一样)