• ZooKeeper集群配置


    参考文档:

    1. ZooKeeper 3.4文档:https://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html
    2. ZooKeeper Getting Started Guide:https://zookeeper.apache.org/doc/trunk/zookeeperStarted.html
    3. ZooKeeper Administrator's Guide:https://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html
    4. ZooKeeper入门指南(中文):http://zookeeper.majunwei.com/document/3.4.8/GettingStarted.html
    5. 构建高可用ZooKeeper集群:http://www.cnblogs.com/cyfonly/p/5626532.html
    6. ZooKeeper基本原理:http://www.cnblogs.com/luxiaoxun/p/4887452.html

     本文涉及zookeeper集群的安装配置。 

    一.环境

    1. 操作系统

    CentOS-7-x86_64-Everything-1511

    2. 版本

    JDK 8u131http://www.oracle.com/technetwork/java/javase/downloads/index.html

    zookeeper 3.4.10(截至20170703的稳定版本):http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

    3. 拓扑

    1. 采用VMware ESXi虚拟出的3台服务器zk-node1~3,地址分别是10.11.4.191~193。

    二.ZooKeeper安装配置

    以节点zk-node1为例,zk-node2/3根据情况调整。

    1. 安装jdk

    ZooKeeper运行在java环境下,文档中建议安装jdk 1.7以上版本(含)。

    1)下载

    2)安装jdk

    #安装完成后可使用"java -version"查看环境是否准备就绪
    [root@zk-node1 src]# rpm -ivh jdk-8u131-linux-x64.rpm

    2. 安装ZooKeeper

    1)下载ZooKeeper

    2)解压并生成zoo.cfg文件

    [root@zk-node1 ~]# cd /usr/local/src/
    [root@zk-node1 src]# tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/
    [root@zk-node1 src]# cd /usr/local/
    [root@zk-node1 local]# mv zookeeper-3.4.10/ zookeeper/
    [root@zk-node1 local]# chown -R root:root zookeeper/
    [root@zk-node1 local]# cd zookeeper/
    [root@zk-node1 zookeeper]# cp conf/zoo_sample.cfg conf/zoo.cfg

    3)设置zoo.cfg文件

    [root@zk-node1 zookeeper]# vim conf/zoo.cfg
    
    #tickTime:zookeeper中一个最小的时间单元,单位毫秒(ms),zookeeper中所有时间都是以这个时间单元为基础,进行整数倍配置;
    tickTime=2000
    
    #initLimit,zookeeper接受客户端(非用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接并完成数据同步的超时时间间隔,以tickTime为基础的倍数;
    initLimit=10
    
    #syncLimit,配置leader与follower之间之间进行心跳检测的最大延时时间,以tickTime为基础的倍数;
    syncLimit=5
    
    #dataDir,zookeepe存储快照文件的目录,默认情况下,事务日志也在此目录;
    #dataLogDir,默认不配置时为dataDir;
    dataDir=/usr/local/zookeeper/data
    dataLogDir=/usr/local/zookeeper/logs
    
    #clientPort,zookeeper服务监听端口;
    clientPort=2181
    
    #server.id= ip1:port1:port2,id即Server ID,用来标识集群中的机器序号(在dataDir目录下创建 myid 文件,文件内容即为机器对应的Server ID数字);
    #ip1是节点的 IP,port1用于指定follower服务器与leader服务器进行通信和数据同步的端口,port2用于进行leader选举过程中的投票通信;此项参数在单机模式时不做配置。
    server.1= 10.11.4.191:2888:3888
    server.2= 10.11.4.192:2888:3888
    server.3= 10.11.4.193:2888:3888

    4)创建myid文件

    #myid值需要根据节点调整
    [root@zk-node1 ~]# mkdir -p /usr/local/zookeeper/data
    [root@zk-node1 ~]# mkdir -p /usr/local/zookeeper/logs
    [root@zk-node1 ~]# echo "1" > /usr/local/zookeeper/data/myid

    5)设置环境变量

    [root@zk-node1 ~]# echo -e "export PATH=$PATH:/usr/local/zookeeper/bin" >> /etc/profile
    [root@zk-node1 ~]# source /etc/profile

    3. 设置iptables

    [root@zk-node1 ~]# vim /etc/sysconfig/iptables
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 2181 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 2888 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3888 -j ACCEPT
    
    [root@zk-node1 ~]# service iptables restart

    4. 启动

    #在启动第一个节点时,可能会有报错,节点全部启动后不会再报错
    [root@zk-node1 ~]# zkServer.sh start

    5. 设置开机启动

    [root@mesos-node1 ~]# cd /etc/rc.d/init.d/
    [root@mesos-node1 init.d]# vim zookeeper
    #!/bin/bash
    #chkconfig:2345 20 90
    #description:zookeeper
    #processname:zookeeper
    
    case $1 in
              start) su root /usr/local/zookeeper/bin/zkServer.sh start;;
              stop) su root /usr/local/zookeeper/bin/zkServer.sh stop;;
              status) su root /usr/local/zookeeper/bin/zkServer.sh status;;
              restart) su root /usr/local/zookeeper/bin/zkServer.sh restart;;
              *)  echo "require start|stop|status|restart"  ;;
    esac
    
    [root@mesos-node1 init.d]# chmod +x zookeeper
    [root@mesos-node1 init.d]# chkconfig --add zookeeper

    6. 验证

    1)查看状态

    [root@zk-node1 ~]# zkServer.sh status

    [root@zk-node2 ~]# zkServer.sh status

    [root@zk-node3 ~]# zkServer.sh status

    1. 节点zk-node1与zk-node2是集群中的follower,zk-node3是集群中的leader。

    2)远程连接

    [root@zk-node1 ~]# zkCli.sh -server 10.11.4.193

    1. 从zk-node1远程连接zk-node3成功;
    2. 远程连接后的根路径为/zookeeper,对客户端来说,zookeeper集群是一个整体,连接到zookeeper集群实际上可独享整个集群的服务。
  • 相关阅读:
    今天还做了点有意义的事
    读“记当年的公开课”
    无语
    小议如何控制学生机结束学生端多媒体控制平台程序
    今天去了中山
    Windows服务创建及安装
    SQL Server数据库表锁定原理以及如何解除表的锁定示例演示
    本地SQL脚本操作外部服务器结果集
    list.FindAll
    一个高效的数据分页的存储过程 可以轻松应付百万数据
  • 原文地址:https://www.cnblogs.com/netonline/p/7695034.html
Copyright © 2020-2023  润新知