转载请注明出处:http://blog.csdn.net/beitiandijun/article/details/41802835
ubuntu下搭建zookeeper集群步骤
主要参考文档:
http://zookeeper.apache.org/doc/r3.3.3/zookeeperStarted.html
http://www.blogjava.net/hello-yun/archive/2012/05/03/377250.html
一、下载源码:
官方网站:
http://mirrors.cnnic.cn/apache/zookeeper/
本次搭建下载为3.4.6,最新release版本。
二、zookeeper集群种类
1、单节点方式:部署在一台机器上
2、单IP多节点:部署在同一IP,但是有多个节点,各有自己的端口
3、多IP多节点:部署在不同IP,各有自己的端口
三、搭建:
1、单节点方式比较简单:
如果没有特殊需求,不需要修改配置文件,直接使用默认配置文件即可。
配置默认内容为:
命令行格式为:
bin/zkServer.sh start
查看是否成功运行:
bin/zkServer.sh status
成功运行输出为:
注意:
(1)bin/zkServer.sh start运行后终端输出信息不能代表已经成功运行,必须使用bin/zkServer.sh status测试才能确定。
启动成功与否,执行bin/zkServer.sh start之后,终端都会输出:
(2)端口的占用有可能导致失败,失败原因可以在zookeeper.out文件中找到:
举例:使用8080作为端口:
(3)重复启动,则终端输出:
(4)退出zookeeper:
bin/zkServer.sh stop
(5)sudo -E使用
Tony在帮我调试zookeeper搭建时,使用这个选项可以保存当前用户的环境变量,不然当进程切换时某些权限会在切换中失去,因此使用-E选项可以使sudo权限一直保持,不然可能会报错。本例中的报错显示,无法调用java:
2、单IP多节点:
(1)修改配置文件:
拷贝多份zookeeper程序,例如设置三个server,分别创建目录server1、server2、server3,每个目录下存放一份zookeeper程序,并修改各自配置文件如下:
server1
server2:
server3:
注意:
同一IP上搭建多个节点的集群时,必须要注意端口问题,端口必须不一致才行;
创建多个节点集群时,在dataDir目录下必须创建myid文件,myid文件用于zookeeper验证server序号等,myid文件只有一行,并且为当前server的序号,例如server.1的myid就是1,server2的myid就是2等。
(2)启动过程:
本次启动顺序为server1、server2、server3
在启动过程中会验证一些配置问题。
步骤一:启动server1
使用bin/zkServer.sh status查看server1的启动结果:
然后查看server1的zookeeper.out文件发现:
注:如上面两幅图片所示,当搭建集群时,如果只启动一个节点,会出现两个现象:现象一,此时验证启动状态,会发现启动失败;现象二,zookeeper.out文件中也显示连接其他节点失败。
此时不要担心,这是正常状况。当再启动一个节点时,现象一就会消失;当所有节点都成功启动时,现象二就会消失。
步骤二:启动server2
查看server2启动后的zookeeper.out文件:
上面两幅图片说明,server2启动后,server1和server2就自动组成集群,并且选举server2为leader,server1自然就为follower。
步骤三:启动server3:
验证一:clientPort使用相同端口时启动结果:
启动后,查看zookeeper.out文件:
验证二:server3的选举leader端口和连接leader通信端口和server1的相同时:
启动后,查看zookeeper.out文件:
验证三:没有创建myid文件:
启动后查看zookeeper.out文件:
正常启动server3后
查看zookeeper.out文件:
使用bin/zkServer.sh status查看三者状态:
3、多IP多节点:
将zookeeper拷贝到每个节点一份。
多IP多节点与单IP多节点搭建过程基本一致,上述过程不再重复描述,仅重点说一个地方:
主机名与IP地址的映射。
本例中采用4个IP上的4个节点,域名和IP的对应关系为:
rman-nod1 10.110.0.60
rman-nod2 10.110.0.61
rtask-nod3 10.110.10.30
rtask-nod4 10.110.10.40
注:其中rman-nod1和rman-nod2为双网卡节点,其他为单网卡节点;
其中rman-nod1的网址为: 10.110.0.60----对外
10.110.10.2----对内
rman-nod2的网址为: 10.110.0.61---对外
10.110.10.6----对内
zookeeper配置文件server的IP为:
因此连接总是失败。
当将zookeeper配置文件中server的IP改为对内IP时,就可以正确连接: