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

    1、机器列表及相关设计

    服务器编号 服务器 IP 地址 LF 通信端口 LF 选举端口 客户端端口
    1 192.168.229.131 2010 6008 2180
    2 192.168.229.134 2010 6008 2180
    3 192.168.229.133 2010 6008 2180

    由于是在三台不同的服务器上搭建的集群,为了操作方便,所以每台机器上创建的文件夹都是相同路径,相同名称的 

    2、将 zookeeper-3.4.14.tar.gz 分别上传到三台服务器上,每台服务器上分别使用命令解压得 zookeeper-3.4.14 文件夹

    // 解压 zookeeper 的压缩包
    tar -zxvf zookeeper-3.4.14.tar.gz

    3、分别在三台服务器的 zookeeper-3.4.14 文件夹下,新建文件夹 mylog、mydata,用于存放 zookeeper 的日志和数据

    4、进入 zookeeper-3.4.14 下的 conf 文件夹下,复制 zoo_sample.cfg 并且命名为 zoo.cfg

    5、编辑 zoo.cfg (由于我们这里不是伪集群,是在三台不同的服务器上进行的集群,所以三台机器的配置文件是一样的)

    # tickTime:客户端与服务器、服务器与服务器之间维持心跳的时间间隔,也就是每一个 tickTime 会发送一次心跳,单位为毫秒
    tickTime=2000
    # initLimit:集群中 Leader 和 Follow 初始化连接时最多能容忍的心跳数
    # 也就是初始化过程中,如果 Leader 和 Follow 在 (10*tickTime)ms的时间内还没有连接上,则认为连接失败
    initLimit=10
    # syncLimit:同步通信实现, Leader 和 Follow 服务器之间发送请求和接收应答最多能容忍的心跳数
    # 也就是 Leader 和 Follow 如果发送的请求在 (5*tickTime)的时间没没有应答,那么就认为 Leader 和 Follow 之间连接失败
    syncLimit=5
    # 自定义的 zookeeper 数据存放目录
    dataDir=/usr/local/zookeeper/zookeeper-3.4.14/mydata
    # 自定义的 zookeeper 的日志存放目录
    dataLogDir=/usr/local/zookeeper/zookeeper-3.4.14/mylog
    # 客户端连接的端口
    clientPort=2180
    # Zookeeper集群中节点个数一般为奇数个(>=3),若集群中 Master 挂掉,剩余节点个数在半数以上时,就可以推举新的主节点,继续对外提供服务
    # Zookeeper集群配置项的格式比较特殊,具体规则如下: server:N=YYYY:A:B
    # N:表示服务器编号,例如 0、1、2......
    # YYYY:表示服务器的IP地址.
    # A:为LF的通信端口,表示该服务器与集群中的 Leader 交换信息的端口
    # B:为选举端口,表示选举新 Leader 时,服务器之间相互通信的端口(当 Leader 挂掉时,其它的服务器会相互通信,选择出新的 Leader)
    # 一般来说,集群中的 A 和 B 都是一样的,只有伪集群的时候 A 和 B 才不一样
    server.1=192.168.229.131:2010:6008
    server.2=192.168.229.134:2010:6008
    server.3=192.168.229.133:2010:6008

    6、在 zookeeper-3.4.14 的 mydata 文件下下面新建 myid 文件,并编辑 myid 文件,并且在里面写入对应的 server 的数字

    // 进入 mydata 目录下
    cd /usr/local/zookeeper/zookeeper-3.4.14/mydata
    // 新建文件 myid
    touch myid

    7、分别查看三台机器的防火墙是否关闭,如果未关闭,请先关闭防火墙

    // 查看防火墙状态
    [root@CentOS002 bin]# sudo service iptables status
    表格:filter
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    // 关闭防火墙
    [root@CentOS002 bin]# sudo service iptables stop
    iptables:将链设置为政策 ACCEPT:filter                    [确定]
    iptables:清除防火墙规则:                                 [确定]
    iptables:正在卸载模块:                                   [确定]
    // 再次查看防火墙状态,发现防火墙已经关闭了
    [root@CentOS002 bin]# sudo service iptables status
    iptables:未运行防火墙。

    8、同时启动三台服务器上的 zookeeper 服务,并且三台服务器的角色信息如下

    启动服务的时候需要注意,一定要等全部启动完成之后再去查看状态,可能稍微有一点点延迟,如果启动一台或者两台使用 ./zkServer.sh status 去查看状态的话,会有 Error conftacting service,It is probably not running 的报错信息,如果不能正常启动,去 zookeeper.out 文件中查看不能启动的原因.

    9、连接客户端,由于集群之后连接客户端的命令不再是 ./zkCli.sh 了

    // 连接 zookeeper 客户端,端口我在 zoo.cfg 中修改成了 2180
    ./zkCli.sh -server 192.168.229.131:2180

    10、测试

    在 131 这台机器上创建一个节点 /xiaomaomao

    在 134 这台机器上查看,看节点以及数据是否已经同步了,如果节点和数据能够正常同步,那么 zookeeper 集群搭建就完成了

     

  • 相关阅读:
    广告术语及缩写
    run `npm audit fix` to fix them, or `npm audit` for details
    Notes:SVG(2)---各种常见图形
    Notes:SVG(1)
    Notes:indexedDB使用
    Notes: select选择框
    Notes:DOM的事件模拟
    Notes: DOM Range
    Git-Notes
    Javascript一些实用技巧
  • 原文地址:https://www.cnblogs.com/xiaomaomao/p/13800523.html
Copyright © 2011-2022 走看看