在ubuntu中进行ZooKeeper分布式模式安装(ZooKeeper集群)

背景:

分别在三台服务器上安装zookeeper,这三台服务器上未来将分别安装solr,此处安装的zookeeper就是用来为solr的使用服务的(用于协调三台服务器上的solr配置文件、solr数据等等)。


概要:

首先要明确的是,ZooKeeper集群是一个独立的分布式协调服务集群,“独立”的含义就是说,如果想使用ZooKeeper实现分布式应用的协调与管理,简化协调与管理,任何分布式应用都可以使用。

ZooKeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,所以,在配置ZooKeeper集群的时候,每一个结点的zoo.cfg中都要配置上集群中其它结点的映射信息。

zooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中Leader出了问题,系统会采用该算法重新选出一个Leader。因此,各个结点之间要能够保证互相连接,必须配置上述映射。ZooKeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算法的结点就能成为Leader。


一、安装环境

1、安装jdk,最新版的zookeeper需要1.8版本以上的jdk。

2、下载zookeeper安装包,建议下载最新版本,下载tar.gz格式的包即可,下载地址:http://apache.fayea.com/zookeeper/


二、解压

1、在下载目录中进行解压:tar -zxf zookeeper-3.4.3.tar.gz

2、解压后得到目录:zookeeper-3.4.3,可将zookeeper-3.4.3/conf目录下的zoo_sample.cfg文件拷贝一份,命名为为:zoo.cfg

3、将zoo.cfg内容修改为:

3.1、其中,黑色涂擦部分分别是三台服务器的内网ip地址;

3.2、2888、2889、2890端口号是zookeeper服务之间通信的端口,表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;

3.3、3888、3889、3890端口号表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于ip都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号;

3.4、tickTime=2000,Zookeeper服务器心跳时间,单位毫秒;

3.5、dataDir=/data/zkdata/1/,数据持久化路径,必须事先建好,zkdata目录下的子目录“1”对应于server.1中的“1”,表示此ip属于第一台服务器,并且需要在目录“1”下创建一个文件“myid”,myid的文件内容只填写“1”

类似的,配置好第一台服务器后,将整个目录“zookeeper-3.4.3”分别拷贝到第二台、第三台服务器上,并且将dataDir的值分别改为:/data/zkdata/2/、/data/zkdata/3/

并且相应的在目录"2"下创建文件“myid”,文件内容只填写“2”;在目录“3”下创建文件“myid”,文件内容只填写“3”

3.6、clientPort=2181 客户端连接zookeeper服务的端口号;

3.7、syncLimit=2  Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

3.8、initLimit=5  投票选举新leader的初始化时间


三、启动并测试zookeeper

1、分别在三台服务器中的zookeeper-3.4.3/bin/目录下执行:./zkServer.sh start

2、输入jps命令查看进程,其中,QuorumPeerMain是zookeeper进程,表示启动成功;

3、由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以日志中出现的异常【[WorkerSender[myid=1]:QuorumCnxManager@382] - Cannot open channel to 2 at election address ****】属于正常现象,其他结点也会出现类似问题,直到最后一个节点启动时才不会出现这种异常现象。

4、还可以查看集群中各个结点的角色(或是Leader,或是Follower),如下所示,在ZooKeeper集群中的每个结点的zookeeper-3.4.3目录下执行./bin/zkServer.sh status

5、另外,可以通过客户端脚本连接到ZooKeeper集群上。对于客户端来说ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉是在独享整个集群的服务,所以你可以在任何一个结点上建立到服务集群的连接,例如在任何一个节点上的zookeeper-3.4.3目录下执行./bin/zkCli.sh -server 节点ip地址:2181


四、停止zookeeper服务

1、在各节点的zookeeper-3.4.3目录下执行./bin/zkServer.sh stop

2、如果要重启zookeeper服务,则在各节点的zookeeper-3.4.3目录下执行./bin/zkServer.sh restart


五、zookeeper常用客户端命令

ZooKeeper命令行工具类似于Linux的shell环境,不过功能肯定不及shell啦,但是使用它我们可以简单的对ZooKeeper进行访问,数据创建,数据修改等操作.  使用 zkCli.sh -server 节点ip:2181 连接到 ZooKeeper 服务,连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。

常用命令可参考链接:http://blog.csdn.net/xiaolang85/article/details/13021339

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值