美文网首页ZooKeeper大数据程序员
Zookeeper分布式集群部署

Zookeeper分布式集群部署

作者: 心_的方向 | 来源:发表于2016-10-20 18:40 被阅读157次

    Zookeeper官方架构图解析

    zookeeper.png
    1. zookeeper最少为三台且必须为奇数(3、5、7···)。
    2. 多个zookeeper服务器工作前会选举出一个节点作为leader(为了保持数据的一致性),其余的节点作为follower,如果这个leader节点宕掉,剩下的zookeeper服务器会知道这个leader宕掉,从而在剩余的节点中再选举出一个leader。
    3. zookeeper正常工作的前提是所有节点时间必须同步。

    Zookeeper数据结构解析

    shujujiegou.png
    1. zookeeper维护一个和文件系统类似的数据结构;zookeeper集群中的每个节点都被路径唯一标识。
    2. 为了较快的读取速度,zookeeper中的数据都会v存放在JVM内存中。

    搭建Zookeeper集群前的准备

    1. 配置SSH无秘钥登录。
      先在一台机器上生成公钥和秘钥。

    [wulei@bigdata-00 ~]$ ssh-keygen -t rsa

    分发公钥到另外两太机器。

    [wulei@bigdata-00 ~]$ ssh-copy-id bigdata-01
    [wulei@bigdata-00 ~]$ ssh-copy-id bigdata-02

    为了方便三台机器的互相登录,在其余两台做同样的操作。

    1. 集群时间的同步。(Zookeeper正常工作的前提)
      在集群中找一台服务器作为时间服务器,开启服务并进行相应的配置

    [wulei@bigdata-01 ~]$ sudo /etc/init.d/ntpd status
    ntpd (pid 1724) is running...
    [wulei@bigdata-01 ~]$ sudo vim /etc/ntp.conf
    #修改如下
    #Hosts on local network are less restricted.
    restrict 192.168.200.0 mask 255.255.255.0 nomodify notrap
    #修改如下
    #Please consider joining the pool (http://www.pool.ntp.org/join.html).
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    #添加如下
    server 127.127.1.0 #local clock
    fudge 127.127.1.0 stratum 10

    在三太服务器上为同步时间设置定时任务(crontab -e)

    #time server
    */5 * * * * /usr/sbin/ntpdate bigdata-01 >/dev/null 2>&1

    检验三台服务器时间是否同步

    date1.png
    date2.png
    date3.png

    修改BIOS时间与操作系统时间同步

    [wulei@bigdata-00 ~]$ sudo vim /etc/sysconfig/ntpd
    #添加如下内容
    SYNC_HWCLOCK=yes

    正式搭建Zookeeper集群

    1. 解压Zookeeper包后并配置
    • 创建zookeeper存放数据的目录

    [wulei@bigdata-00 app]$ mkdir -p zookeeper-3.4.6/data/zkDate
    [wulei@bigdata-00 zkDate]$ pwd
    /opt/app/zookeeper-3.4.6/data/zkDate

    • 修改配置文件中数据存储的目录。首先拷贝一份 conf/zoo_sample.cfg 并重命名为 zoo.cfg

    [wulei@bigdata-00 zookeeper-3.4.6]$ mv conf/zoo_sample.cfg conf/zoo.cfg
    [wulei@bigdata-00 zookeeper-3.4.6]$ vim conf/zoo.cfg
    #修改如下
    dataDir=/opt/app/zookeeper-3.4.6/data/zkDate

    • 在配置文件中增加分布式节点。其中2888为监听端口,3888为选举的通信端口。

    server.1=bigdata-00:2888:3888
    server.2=bigdata-01:2888:3888
    server.3=bigdata-02:2888:3888

    1. 将Zookeeper分发到其他两台机器上后分别在各自的数据存储目录下创建myid文件,标记所在机器的编号。

    [wulei@bigdata-00 zkDate]$ cat myid
    1
    [wulei@bigdata-01 zkDate]$ cat myid
    2
    [wulei@bigdata-02 zkDate]$ cat myid
    3

    1. 启动三个节点的Zookeeper进程

    [wulei@bigdata-00 zookeeper-3.4.6]$ bin/zkServer.sh start
    JMX enabled by default
    Using config: /opt/app/zookeeper-3.4.6/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

    1. 查看三个节点的模式状态。看那一台是leader,那两台是follower


      f1.png
      f2.png
      f3.png
    2. 用Zookeeper客户端连接服务端以及基本命令的使用

    [wulei@bigdata-00 zookeeper-3.4.6]$ bin/zkCli.sh
    [zk: localhost:2181(CONNECTED) 2] create /test "wulei"
    Created /test
    [zk: localhost:2181(CONNECTED) 3] ls /
    [zookeeper, test]
    [zk: localhost:2181(CONNECTED) 4] get /test
    "wulei"
    [zk: localhost:2181(CONNECTED) 5] rmr /test
    [zk: localhost:2181(CONNECTED) 8] ls /
    [zookeeper]

    1. 在一个节点上创建一个文件,然后查看三个zookeeper节点数据是否同步


      t1.png
      t2.png
      t3.png

    刚开始学写博客,希望能被指出博客中的不足。
    欢迎和我交流技术

    相关文章

      网友评论

        本文标题:Zookeeper分布式集群部署

        本文链接:https://www.haomeiwen.com/subject/sivxuttx.html