zookeeper文档(1)----zookeeper集群搭建

时间:2022-06-22 08:24:55

转载请注明出处: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、单节点方式比较简单:

如果没有特殊需求,不需要修改配置文件,直接使用默认配置文件即可。

配置默认内容为:

 zookeeper文档(1)----zookeeper集群搭建

命令行格式为:

bin/zkServer.sh  start

查看是否成功运行:

bin/zkServer.sh  status

成功运行输出为:

 zookeeper文档(1)----zookeeper集群搭建

注意

(1)bin/zkServer.sh start运行后终端输出信息不能代表已经成功运行,必须使用bin/zkServer.sh status测试才能确定。

启动成功与否,执行bin/zkServer.sh start之后,终端都会输出:

zookeeper文档(1)----zookeeper集群搭建

(2)端口的占用有可能导致失败,失败原因可以在zookeeper.out文件中找到:

举例:使用8080作为端口:

zookeeper文档(1)----zookeeper集群搭建

(3)重复启动,则终端输出:

zookeeper文档(1)----zookeeper集群搭建

(4)退出zookeeper:

bin/zkServer.sh   stop

 zookeeper文档(1)----zookeeper集群搭建

(5)sudo  -E使用

Tony在帮我调试zookeeper搭建时,使用这个选项可以保存当前用户的环境变量,不然当进程切换时某些权限会在切换中失去,因此使用-E选项可以使sudo权限一直保持,不然可能会报错。本例中的报错显示,无法调用java:

 zookeeper文档(1)----zookeeper集群搭建

 

 

 

 

2、单IP多节点:

(1)修改配置文件:

         拷贝多份zookeeper程序,例如设置三个server,分别创建目录server1、server2、server3,每个目录下存放一份zookeeper程序,并修改各自配置文件如下:

 

server1

 zookeeper文档(1)----zookeeper集群搭建

server2:

 zookeeper文档(1)----zookeeper集群搭建

server3:

 zookeeper文档(1)----zookeeper集群搭建

 

注意:

同一IP上搭建多个节点的集群时,必须要注意端口问题,端口必须不一致才行;

创建多个节点集群时,在dataDir目录下必须创建myid文件,myid文件用于zookeeper验证server序号等,myid文件只有一行,并且为当前server的序号,例如server.1myid就是1server2myid就是2等。

 

(2)启动过程:

本次启动顺序为server1、server2、server3

在启动过程中会验证一些配置问题。

 

步骤一:启动server1

使用bin/zkServer.sh  status查看server1的启动结果:

zookeeper文档(1)----zookeeper集群搭建

然后查看server1的zookeeper.out文件发现:

 zookeeper文档(1)----zookeeper集群搭建

注:如上面两幅图片所示,当搭建集群时,如果只启动一个节点,会出现两个现象:现象一,此时验证启动状态,会发现启动失败;现象二,zookeeper.out文件中也显示连接其他节点失败。

此时不要担心,这是正常状况。当再启动一个节点时,现象一就会消失;当所有节点都成功启动时,现象二就会消失。

 

 

步骤二:启动server2

查看server2启动后的zookeeper.out文件:

 zookeeper文档(1)----zookeeper集群搭建zookeeper文档(1)----zookeeper集群搭建

上面两幅图片说明,server2启动后,server1和server2就自动组成集群,并且选举server2为leader,server1自然就为follower。

 

 

 

步骤三:启动server3:

验证一:clientPort使用相同端口时启动结果:

启动后,查看zookeeper.out文件:

 zookeeper文档(1)----zookeeper集群搭建

验证二:server3的选举leader端口和连接leader通信端口和server1的相同时:

启动后,查看zookeeper.out文件:

zookeeper文档(1)----zookeeper集群搭建 

验证三:没有创建myid文件:

启动后查看zookeeper.out文件:

 zookeeper文档(1)----zookeeper集群搭建

 

正常启动server3后

查看zookeeper.out文件:

 zookeeper文档(1)----zookeeper集群搭建

 

使用bin/zkServer.sh status查看三者状态:

 zookeeper文档(1)----zookeeper集群搭建

 

 

 

 

 

 

 

 

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文档(1)----zookeeper集群搭建

因此连接总是失败。

当将zookeeper配置文件中server的IP改为对内IP时,就可以正确连接:

 zookeeper文档(1)----zookeeper集群搭建