在单机上实现ZooKeeper伪集群部署

一、背景

Zookeeper是为了解决分布式应用场景的,所以通常都会运行在集群模式下。在单机上实现ZooKeeper伪集群部署,一般用于本地测试。生产环境上不会这样做。由于手头机器不足,所以今天打算在一台机器上部署三个Zookeeper服务来组成一个Zookeeper集群。


二、步骤

1、解压Zookeeper的安装包到/opt目录下,这里用三个目录来代表三个Zookeeper实例,分别是/opt/zookeeper1,/opt/zookeeper2和/opt/zookeeper3

2、然后编辑每个Zookeeper目录下的conf/zoo.cfg文件。三个配置配置文件的内容分别如下:

$ cat /opt/zookeeper1/conf/zoo.cfg
tickTime=2000
dataDir=/opt/zookeeper1/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

$ cat /opt/zookeeper2/conf/zoo.cfg
tickTime=2000
dataDir=/opt/zookeeper2/data
clientPort=2182
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

$ cat /opt/zookeeper3/conf/zoo.cfg
tickTime=2000
dataDir=/opt/zookeeper3/data
clientPort=2183
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

3、 其中有几点需要注意

3.1、dataDir:三个Zookeeper实例的dataDir目录要区别开,这里分别指定到各个Zookeeper实例目录下的data目录;

3.2、clientPort:定义Zookeeper客户端连接Zookeeper服务端时使用的端口,这里因为是在一台机器上做的集群,所以三个实例的端口要区分开。

3.3、server.x: 定义Zookeeper集群的各个实例的ip和端口,这里因为是在一台机器上做的集群,所以IP都定义为127.0.0.1,但是后面的端口要区分开。


4、创建data目录和实例id文件

mkdir /opt/zookeeper1/data
mkdir /opt/zookeeper2/data
mkdir /opt/zookeeper3/data
echo 1 > /opt/zookeeper1/data/myid
echo 2 > /opt/zookeeper2/data/myid
echo 3 > /opt/zookeeper3/data/myid
这里要注意需要在每个Zookeeper的dataDir目录下创建myid文件,内容是记录各个Zookeeper的实例ID。


5、启动Zookeeper服务

分别进入各个Zookeeper的bin目录,然后运行“./zkServer.sh start”来启动一个Zookeeper服务。


6、客户端连接

随便进入一个Zookeeper的bin目录,然后运行下面的命令来分别连接Zookeeper服务。

./zkCli.sh -server 127.0.0.1:2181
./zkCli.sh -server 127.0.0.1:2182
./zkCli.sh -server 127.0.0.1:2183
在其中的一个client上创建一个znode节点:

create /mykey myvalue
然后在别的client上查看新创建zonde节点:

get /mykey


7、查看Zookeeper状态

启动Zookeeper之后,由于Zookeeper自己会有一套leader的选举算法,所以此时如果想知道那个Zookeeper是leader可以在各个Zookeeper的bin目录运行“./zkServer.sh status”命令来查看

如果是Leader:

$ ./zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper1/bin/../conf/zoo.cfg
Mode: leader

如果不是Leader:

$ ./zkServer.sh status  
JMX enabled by default  
Using config: /opt/zookeeper3/bin/../conf/zoo.cfg  
Mode: follower 

此时可以把leader的那个节点停了,然后再看查看其它两个Zookeeper实例,此时剩下的两个Zookeeper实例就会再选举出一个leader。


三、总结

对比通常的在多台服务器上集群部署,总体思路是一样的,只是有几个注意点,见红色字体。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值