Zookeeper集群搭建
2018-08-05 本文已影响0人
touch_The_Sky
Zookeeper在分布式系统中一般用来当做注册中心、配置中心,或者用来实现分布式锁等, 不论哪一个角色在系统中都是绝对的中心,Zookeeper一旦挂掉对系统的影响无疑是毁灭性的, 所以生产环境中一般都会配置为集群保证服务的高可用。
下面我们在一台机器上模拟一下zookeeper集群,其实在多台机也是一样的过程
1 . 安装三个zookeeper
1. 下载zookeeper
2. 修改配置文件
将conf/zoo_sample.cfg复制一份命名为zoo.cfg
# 内存数据的备份地址,必须保证路径存在
dataDir=/usr/local/zookeeper1/data
# 存放日志地址,必须保证路径存在
dataLogDir=/usr/local/zookeeper1/logs
3. 启动 zkServer
zkServer.sh start
4. netstat -ntlp #查看是否启动成功
3 . 在 所有zoo.conf 中添加以下信息(单机模拟clientPort不能相同 )
tickTime=2000 # Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,每个 tickTime 时间就会发送一个心跳。
dataDir=/usr/local/zookeeper1/data #Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里
clientPort=218x #zookeeper提供服务的接口也就是监听客户端连接的端口,自己修改
initLimit=5 #用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数。5就表示最长接受5*2000=10秒间隔
syncLimit=2 #Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
server.1=127.0.0.1:2887:3887 #1表示这是第几号服务器, 2883:3888 集群成员之间交换信息的端口:Leader挂了重新选举Leader的端口
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
4 . 创建myid文件
在我们配置的dataDir目录下创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,例如:server.1的dataDir下应该建立一个myid的文件,其中写入1
5. 启动集群
先启动哪个无所谓, 由于前面的节点在启动时候会尝试去连接其他节点,所以先启动的节点会有报错信息,这是正常的不用理会,等到leader选举出来了就可以正常工作了
image.png
客户端连接:
客户端连接集群方式: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
各节点以逗号分隔
dubboAdmin 连接zookeeper集群:
#修改webapps/ROOT/Web-Info/dubbo.properties:
dubbo.registry.address=zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
或者直接使用ip
dubbo.registry.address=zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
查看节点状态:
./zkServer.sh status