码迷,mamicode.com
首页 > 其他好文 > 详细

【图文详解】Zookeeper集群搭建(CentOs6.3)

时间:2018-04-25 22:12:15      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:/usr   .sh   写入   export   情况   三台   src   顺序   相关配置   

Zookeeper简介:

Zookeeper是一个分布式协调服务,就是为用户的分布式应用程序提供协调服务的。

A、zookeeper是为别的分布式程序服务的

B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)

C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……

D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:

  • 管理(存储,读取)用户程序提交的数据;
  • 并为用户程序提供数据节点监听服务;

Zookeeper集群机制

  • Zookeeper集群的角色: 1个leader 和 多个follower

  • 只要集群中有半数以上节点存活,集群就能提供服务,因此集群中机器数量适合选择奇数台,避免leader选举时出现同票数的情况。

Zookeeper选举机制

  1. 服务器1启动,此时只有它一台服务器启动了,它发出去的报没有任何响应,所以它的选举状态一直是LOOKING状态
  2. 服务器2启动,它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以id值较大的服务器2胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),所以服务器1,2还是继续保持LOOKING状态.
  3. 服务器3启动,根据前面的理论分析,服务器3成为服务器1,2,3中的老大,而与上面不同的是,此时有三台服务器选举了它,所以它成为了这次选举的leader.
  4. 服务器4启动,根据前面的分析,理论上服务器4应该是服务器1,2,3,4中最大的,但是由于前面已经有半数以上的服务器选举了服务器3,所以它只能接收当小弟的命了.
  5. 服务器5启动,同4一样,当小弟.

综上可知:

  • 先后启动集群中3台机器,则机器2为leader
  • 先后启动集群中7台机器,则机器4为leader

Zookeeper集群搭建

1、前期准备

  • 3台虚拟机(Linux-----CentOs6.3)

    mini1----192.168.25.13
    
    mini2----192.168.25.14
    
    mini3----192.168.25.15
  • 三台虚拟机上分别都装好jdk

2、上传Zookeeper安装包到mini1上

3、解压安装包,并将解压后的目录改名为zk放到/usr/local/目录下

tar -zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 /usr/local/zk

技术分享图片

4、进入zk目录下的conf目录中查看相关配置文件

cd /usr/local/zk/conf

技术分享图片

5、将zoo_sample.cfg拷贝一份并重命名为zoo.cfg

cp zoo_sample.cfg zoo.cfg

技术分享图片

6、 修改配置文件zoo.cfg(基本保持默认,修改图中两处配置即可)

vim zoo.cfg

技术分享图片

  • tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳

  • initLimit:此配置表示,允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。

  • syncLimit:此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。

  • dataDir:数据存放的位置

  • dataLogdDir:日志信息存放的位置

  • server.a=b:c:d

    a:集群中此台服务器的编号
    
    B:此台服务器的ip
    
    C:Zookeeper服务器之间的通信端口
    
    D:Leader选举的端口

7、在zk目录下创建data目录

mkdir /usr/local/zk/data

技术分享图片

8、在data目录中创建myid文件,并写入此台服务器的编号(在zoo.cfg配置文件里填写过)

echo 1 > myid

技术分享图片

9、配置环境变量

vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zk
export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH

技术分享图片

10、将zk目录分别发送给mini2和mini3两台机器

scp -r /usr/local/zk/ 192.168.25.14:/usr/local/
scp -r /usr/local/zk/ 192.168.25.15:/usr/local/

技术分享图片

11、将环境变量文件分别发送给mini2和mini3两台机器

scp /etc/profile 192.168.25.14:/etc/
scp /etc/profile 192.168.25.15:/etc/

技术分享图片

12、到mini2机器的/usr/local/目录下可以看到刚传过来的zk目录

技术分享图片

13、到mini2的zk目录下的data目录将myid文件内容改为mini2这台机器的编号(mini3做同样操作)

cd /usr/local/zk/data/
echo 2 > myid(mini3的编号为3)

技术分享图片

14、分别启动三台机器上的Zookeeper,并查看状态(启动前重新加载环境变量)

source /etc/profile
zkServer.sh start
zkServer.sh status

技术分享图片

技术分享图片

技术分享图片

自此Zookeeper集群搭建结束,我们可以看到mini3是集群中的leader,其他两台是follower,如果你的启动顺序是按顺序启动mini1,mini2,mini3则mini2会是集群中的leader


更多推荐:


作者:py小杰

博客地址:http://www.cnblogs.com/52mm/

本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接

【图文详解】Zookeeper集群搭建(CentOs6.3)

标签:/usr   .sh   写入   export   情况   三台   src   顺序   相关配置   

原文地址:https://www.cnblogs.com/52mm/p/p6.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!