ZooKeeper使用(3)-- ZooKeeper的集群部署(Linux)
紧接上文所说,在上一篇文章中我们讲述了standalone模式的zookeeper服务是如何启动的
紧接上文所说,在上一篇文章中我们讲述了standalone模式的zookeeper服务是如何启动的,在这篇文章我们说说zookeeper集群是怎么搭建的,并且对其中的注意点进行说明,下面就开始正题。
因为机器不够,这里我们就在一台机器上来部署一个zookeeper集群,暂且称之为伪集群吧,毕竟真实的生产环境,如果把一个zookeeper集群都部署在现网的机器上,那么机器出现了问题,那么整个zookeeper服务都不可用了。所以在真实生产环境,大家还是把zookeeper集群中的各个zookeeper服务部署在不同的机器上。
首先我们在机器上创建三个目录,zookeeper-3181,zookeeper-4181,zookeeper-5181,将standalone模式下的文件都拷贝一份到各个目录下,这里我们在本机的3181、4181和5181端口启动三个服务,我们在拷贝之后需要做的有以下几件事情:
(1)修改conf/zoo.cfg文件中的clientPort(原来设置是2181端口),分别设置为3181、4181和5181;
(2)在conf/zoo.cfg底部增加zookeeper集群配置,如下
server.1=localhost:2877:3877
server.2=localhost:2878:3878
server.3=localhost:2879:3879
(备注:这里的端口号需要netstat -ano | grep 3181类似的方式判断端口是否被占用,如果比占用需要进行调整。)
(3)需要在conf/zoo.cfg中dataDir配置的目录下创建myid文件,用于标识zookeeper服务;
确保完成了上面的3项修改后,接下来就可以启动各个zookeeper服务了。如下所示:
我们可以看到这时候zookeeper集群便正常的启动起来了,而且从通过./zkServer.sh status命令还可以查询zookeeper在集群中的角色,如leader、follower。
下面我们看看zookeeper集群能否正常在某个zookeeper服务挂掉之后整个集群能否正常提供服务。
这里我们把4181端口的zookeeper服务给kill掉,然后看看其他两个zookeeper服务能否主动自动选举出新的leader。
使用kill关掉4181端口的zookeeper进程,
这时候,我们再查看一下其他两个zookeeper服务在集群中的状态:
从截图可以看出来,这时候5181端口的服务成了新的leader,表明整个集群能否正常的进行leader选举,从而保证了当集群中的某个zookeeper服务挂掉之后其他zookeeper服务能够继续提供相关服务。
我们看到,这时候我们重新启动4181端口的zookeeper服务,它会自动成为原来zookeeper集群中的follower角色。
如果想了解我最新的博文,请关注我的博客。如果想看到更多相关技术文章并愿意支持我继续写下去,欢迎给我打赏,对您的打赏我表示非常感谢。
更多推荐
所有评论(0)