zoukankan      html  css  js  c++  java
  • Zookeeper集群部署

    操作系统:Centos7.4

    JDK版本:jdk1.8.0_23

    Zookeeper版本:zookeeper-3.4.12

    1.关闭防火墙

    [root@localhost data]# firewall-cmd --state
    running
    [root@localhost data]# systemctl stop firewalld.service
    [root@localhost data]# systemctl disable firewalld.service

    stop是临时关闭

    disable是永久关闭

    2.修改配置文件

    • 创建配置文件
    [root@localhost conf]# cp /usr/local/zookeeper-3.4.12/zoo_sample.cfg ./zoo.cfg
    • 配置环境变量
    [root@localhost data]# vim /etc/profile

      在尾部更改为:

    export JAVA_HOME=/usr/local/jdk1.8.0_231
    export ZK_HOME=/usr/local/zookeeper-3.4.12
    export PATH=$JAVA_HOME/bin:$ZK_HOME/bin:$PATH

      使更改生效:

    source /etc/profile
    • 创建路径,写入serverID

    [root@localhost conf]# mkdir -p /usr/local/zookeeper-3.4.12/data
    [root@localhost conf]# mkdir -p /usr/local/zookeeper-3.4.12/log
    [root@localhost conf]# echo 1 > /usr/local/zookeeper-3.4.12/data/myid
    [root@localhost conf]# echo 2 > /usr/local/zookeeper-3.4.12/data/myid
    [root@localhost conf]# echo 3 > /usr/local/zookeeper-3.4.12/data/myid

    • 修改zoo.cfg内容:
    #Zookeeper的时间单位,不配置,默认值3000,单位ms
    tickTime=2000
    #节点初始化时间,follower启动过程中与leader节点进行数据同步的时间,单位为tickTime,正整数。 initLimit=10
    #心跳最大延迟周期,leader与follower进行心跳检测的最大延时时间,在此时间内是否
    #收到follower节点心跳检测响应来确定follower节点是否存活,单位为tickTime,正整数。 syncLimit
    =5
    #zookeeper保存数据的目录 dataDir=/usr/local/zookeeper-3.4.12/data
    #日志目录选项,若未配置,默认使用鹤dataDir相同的目录 dataLogDir
    =/usr/local/zookeeper-3.4.12/log
    #客户端连接Zookeeper集群中节点的端口号,Zookeeper监听此端口接收客户端的访问请求。 clientPort
    =2181

    #配置格式:server.id=host:port:port
    #1.不能有相同id的节点,要与对应节点data目录下myid文件中值相同。
    #2.host为对应节点的IP地址。
    #3.前一个port代表用于节点之间通信,后一个用于选举leader主节点。 server.
    1=192.168.43.11:2888:3888 server.2=192.168.43.12:2888:3888 server.3=192.168.43.13:2888:3888

    #从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置如下两个参数实现定时清理。
    #指定清理频率,单位为小时,值为1或更大的整数,默认是0,表示不开启自己清理功能。
    #autopurge.purgeInterval 
    #与上面参数搭配使用,指定了需要保留的文件数目,默认为3
    #autopurge.snapRetainCount

    也可以配置好一台,发送到其他两台上:

    [root@localhost data]# scp -r /usr/local/zookeeper-3.4.12 root@192.168.43.12:/usr/local/
    [root@localhost data]# scp -r /usr/local/zookeeper-3.4.12 root@192.168.43.13:/usr/local/
    scp -r local_folder remote_username@remote_ip:remote_folder 

    3.启动zookeeper集群

    • 启动:
    [root@localhost data]# zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    • 查看启动状态: 
    [root@localhost bin]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
    Mode: follower

    4.选主机制

    假如有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:

    • 服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。
    • 服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。
    • 服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。
    • 服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为小弟。
    • 服务器5启动,后面的逻辑同服务器4成为小弟。

    关于选主机制请参考原博:https://www.cnblogs.com/shuaiandjun/p/9383655.html

    zookeeper-3.4.12
  • 相关阅读:
    android有点纠结的小问题
    持久化应用程序实例的状态
    preference activity框架
    RISC与CISC比较
    C++ const用法
    虚析构函数
    best-case analysis in real-time system
    jitter
    C/C++中static,const,inline三种关键字详细总结
    #pragma warning(disable 4786)
  • 原文地址:https://www.cnblogs.com/sjxbg/p/12201557.html
Copyright © 2011-2022 走看看