zookeeper集群的部署
Posted BigBao的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper集群的部署相关的知识,希望对你有一定的参考价值。
因为这里zookeeper的集群部署都会2n+1台
zookeeper的介绍:
zookeeper是一个分布式的开源框架,它能很好的管理集群,而且提供协调分布式应用的基本服务。
它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。
zookeeper本身可以以standalone模式(单节点状态)安装运行,不过它的长处在于通过分布式zookeeper集群(一个leader,多个follower),基于一定的策略来保证zookeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
zookeeper集群中主要有两个角色:leader和follower。
领导者(leader),用于负责进行投票的发起和决议,更新系统状态。
学习者(learner),包括跟随者(follower)和观察者(observer)。
其中follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票。
而observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。
一个zookeeper集群需要运行几个zookeeper节点呢?
你可以运行一个zookeeper节点,但那就不是集群了。如果要运行zookeeper集群的话,最好部署3,5,7个zookeeper节点。本次实验我们是以3个节点进行的。
zookeeper节点部署的越多,服务的可靠性也就越高。当然建议最好是部署奇数个,偶数个不是不可以。但是zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳。
你需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘,因为独立磁盘可以确保zookeeper是高性能的。如果你的集群负载很重,不要把zookeeper和RegionServer运行在同一台机器上面,就像DataNodes和TaskTrackers一样。
这里我们首先选择三台机器
10.19.42.53
10.19.190.32
10.19.165.206
其他三个节点修改一下相应的地方即可
参数说明:
增加zookeeper环境变量
编辑文件 /etc/profile
,添加如下:
export ZOOKEEPER_HOME=/data/tools/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
增加zookeeper的启动脚本
cd /etc/rc.d/init.d
touch zookeeper && chmod +x zookeeper
vim zookeeper
zookeeper集群的搭建很简单,我们只需要修改每台服务器的zoo.cfg配置文件然后进行相关的操作即可。
#!/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
这里我们可以查看一下我们的zookeeper服务端口,就是我们上面定义的那个
这里我们启动第一台的时候会报错,接着把接下来的两台服务器起来之后才不会报错,我们可以看一下三台服务器的status.我们会看到有一台服务器的状态是leader,其余两台的状态是follower
如果我们这里是单台的zookeeper的话,我们查看到的状态是standalone,这里我们在搭建zookeeper集群的时候一定要停止已经启动的zookeeper,
当我们的集群安装完成之后,我们可以通过客户端脚本连接到zookeeper集群上。对于客户端来说,zookeeper集群是一个整体,连接到zookeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个zookeeper结点上建立到服务集群的连接,例如
bin/zkCli.sh -server 10.19.190.32:2081
这里有一点要注意的是。我们配置hosts的时候
[wwwad@zk3 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 zk3
10.19.118.88 zk1
10.19.106.84 zk2
10.19.171.44 zk3
这个我把127.0.0.1的解析到了zk3,而且还是放在10.19.171.44 zk3
之前,我怎么起都是报错的。这里我们需要把127.0.0.1的解析去掉,或者放在最后
参考文章:
因为我放文字链接会报错。所以截图了
烂泥的文章:http://www.ilanni.com/?p=11393
http://www.open-open.com/lib/view/open1454043410245.html
http://blog.csdn.net/hongtu1993/article/details/53215587
可以看看zookeeper服务器配置项详解:
http://www.bug315.com/article/159.htm
http://www.bug315.com/article/160.htm
以上是关于zookeeper集群的部署的主要内容,如果未能解决你的问题,请参考以下文章