zookeeper伪集群模式安装和配置

伪分布式集群:在一台Server中,启动多个ZooKeeper的实例。

下面来看看zookeeper怎么进行安装的吧。

下载

选择一个稳定版本进行下载,我这里下载的是zookeeper-3.4.6版本。

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

解压

tar -zxvf  zookeeper-3.4.6.tar.gz

# 3个实例,复制三份 zk1zk2zk3
cp -r zookeeper-3.4.6 zk1
cp -r zookeeper-3.4.6 zk2
cp -r zookeeper-3.4.6 zk3

创建实例配置文件

cd zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo1.cfg
cp zoo_sample.cfg zoo2.cfg
cp zoo_sample.cfg zoo3.cfg

修改配置

tickTime=2000
dataLogDir=/opt/zk1/log  
dataDir=/opt/zk1/data  
clientPort=2181  
initLimit=10  
syncLimit=5  
server.1=127.0.0.1:2881:3881  
server.2=127.0.0.1:2882:3882  
server.3=127.0.0.1:2883:3883
  1. 分别配置三个实例的clientPort端口为2181, 2182, 2183
  2. 分别配置是哪个实例的dataDir目录为 /opt/zk1/data , /opt/zk2/data , /opt/zk3/data ,并创建这三个目录,没有创建该目录会启动出错
  3. 定义zookeeper集群的各个实例的ip和端口,server.1=127.0.0.1:2881:3881 ,server.2=127.0.0.1:2882:3882,server.3=127.0.0.1:2883:3883

解释:

  • dataDir定义zookeeper实例存储持久出具的本地文件系统位置

  • clientPort定义zookeeper客户端连接zookeeper服务端时使用的端口

  • server定义zookeeper集群的各个实例的ip和端口

  • tickTime

    指定了zookeeper中的基本时间单元(以毫秒为单位)

    zookeeper集群中,每个服务器都有一个id(数字),服务器id在集群中是唯一的,并且取值范围是1~255,通过一个名为myid的纯文本设置,这个文件保存在dataDir中

  • server.n=hostname:port:portn是服务器id,第一个port是follower用来连接leader的端口,第二个port是用于leader选举

  • clientPort监听client连接的端口号

  • initLimit设定了所有follower与leader进行连接并同步的时间范围。如果在设定的时间段内,半数以上的follower跟随者未能完成同步,leader会宣布放弃领导地位,然后进行另外一次leader选举,如果这种情况经常发生,则表明设定的值太小

  • syncLimit设定了允许一个follower与leader这进行同步的时间。如果在设定的时间段内,一个follower未能完成同步,会自己重启,所有关联到follower的客户端将连接到另一个follower

创建dataDir和实例id文件
mkdir -p /opt/zk1/data  
mkdir -p /opt/zk2/data  
mkdir -p /opt/zk3/data  
echo 1 > /opt/zk1/data/myid  
echo 2 > /opt/zk2/data/myid  
echo 3 > /opt/zk3/data/myid

启动zookeeper服务

bin/zkServer.sh start zoo1.cfg
bin/zkServer.sh start zoo2.cfg
bin/zkServer.sh start zoo3.cfg

查看是否启动成功

jps

看到类似下面的进程就表示3个实例均启动成功

13419 QuorumPeerMain

13460 QuorumPeerMain

13561 Jps

13392 QuorumPeerMain

如果未成功启动,可以到zookeeper.out文件中查看启动失败的日志信息。

客户端连接

./zkCli.sh -server 127.0.0.1:2181

关闭zookeeper

bin/zkServer.sh stop

检验,在三个节点上分别执行命令zkServer.sh status,从下面的图中我们会发现zk2和zk3为Follower,zk1为Leader。

7.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口) 
         这个配置项的书写格式比较特殊,规则如下: 
   server.N=YYY:A:B
其中N表示服务器编号,YYY表示服务器的IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只能时A端口和B端口不一样。 
下面是一个非伪集群的例子: 
 server.1=233.34.9.145:2008:6008
    server.2=233.34.9.146:2008:6008
    server.3=233.34.9.147:2008:6008

出现问题

如果出现失败,需要查看bin/zookeeper.out日志
1、16 09:14:02,659 [myid:3] - ERROR [node3/120.77.171.8:50003:QuorumCnxManager$Listener@517] - Exception while liste

阿里云买了三台机ecs,但是搭建zookeeper总是报错,后来搭建伪分布式时把server的ip写成localhost就可以搭建成功,
如果写成外网ip地址,启动就报错
原因是:这里的IP只支持内网IP







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最土老杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值