因为这里zookeeper的集群部署都会2n+1台
Dubbo建议使用Zookeeper作为服务的注册中心。
Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将ZK集群的节点数量要为奇数(2n+1:如3、5、7个节点)较为合适。
ZooKeeper与Dubbo服务集群架构图
这里我们首先选择三台机器
10.19.42.53
10.19.190.32
10.19.165.206
1、 修改操作系统的/etc/hosts文件,添加IP与主机名映射:
添加下面三个解析:
10.19.42.53 zk-001
10.19.190.32 zk-002
10.19.165.206 zk-003
2.这里我们下载zookeeper的压缩包(这里我的jdk的环境是1.8)
cd /data/tools
上传压缩包zookeeper-3.4.9.tar.gz
tar -xf zookeeper-3.4.9.tar.gz
这里可以做一个软连接
ln -sv zookeeper-3.4.9 zookeeper
cd zookeeper
mkdir /data/zookeeper/{data,logs} -p
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
其他三个节点修改一下相应的地方即可
参数说明:
tickTime=2000
tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。
initLimit=10
initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
syncLimit=5
syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir=/home/wusc/zookeeper/node-01/data
dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里。
clientPort=2181
clientPort这个端口就是客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求。
vim /data/zookeeper/zk1/data/myid
1
其他节点的值分别是2,3
添加如下防火墙规则
##### zookeeper
iptablse -A INPUT -m state --state NEW -m tcp -p tcp --dport 2081 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重启防火墙:
# service iptables restart
增加zookeeper环境变量
编辑文件 /etc/profile
,添加如下:
export ZOOKEEPER_HOME=/data/tools/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
cd /etc/rc.d/init.d
touch zookeeper && chmod +x zookeeper
vim zookeeper
#!/bin/bash
case $1 in
start) su root /data/tools/zookeeper/bin/zkServer.sh start;;
stop) su root /data/tools/zookeeper/bin/zkServer.sh stop;;
status) su root /data/tools/zookeeper/bin/zkServer.sh status;;
restart) su root /data/tools/zookeeper/bin/zkServer.shrestart;;
*) echo "requirestart|stop|status|restart" ;;
esac
// 添加到开机启动 chkconfig zookeeper on chkconfig --add zookeeper
// 启动或停止 service zookeeper start | stop | restart
参考文章:
http://www.open-open.com/lib/view/open1454043410245.html
http://blog.csdn.net/hongtu1993/article/details/53215587
zookeeper集群的部署