🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### 单机伪集群搭建(测试环境用) ##### 基本环境 | 主机名 | IP地址 |监听端口| leader交互端口|选举端口|myid | | :------------: | :------------: | :------------: | :------------: | :------------: | :------------: | | zk01 | 192.168.0.230 | 2181| 6001 | 6101| 1| | zk01 | 192.168.0.230 |2182| 6002 | 6102| 2| | zk01 | 192.168.0.230 |2183| 6003 |6103 | 3| ##### 文件目录和配置 |主机名|配置目录|数据目录|myid目录| | :------------: | :------------: | :------------: | :------------: | |zk01 |/usr/local/zk/conf/zk01.cfg|/data/zk01/|/data/zk01/myid| |zk01 |/usr/local/zk/conf/zk02.cfg|/data/zk02/|/data/zk02/myid| |zk01 |/usr/local/zk/conf/zk03.cfg|/data/zk03/|/data/zk03/myid| ##### 服务安装 jdk1.8安装(略) ```shell cd /opt http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz tar xzf zookeeper-3.4.10.tar.gz mv zookeeper-3.4.10 /usr/local/ && cd /usr/local/ ln -s zookeeper-3.4.10 zk ``` ##### 初始化配置 ```shell useradd zookeeper mkdir /data/zk0{1..3}/logs -p chown -R zookeeper.zookeeper /data/zk0{1..3} chown -R zookeeper.zookeeper /usr/local/zookeeper-* cd /usr/local/zk/bin/ && rm -f zkCli.cmd zkEnv.cmd zkServer.cmd ``` ##### 增加环境变量 ```shell echo ' ' >> /etc/profile echo '#Add zookeeper env. 20170822 ' >> /etc/profile echo 'export ZOOKEEPER_HOME=/usr/local/zk' >> /etc/profile echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile . /etc/profile su - zookeeper ``` #### 初始化myid ```shell echo 1 >> /data/zk01/myid echo 2 >> /data/zk02/myid echo 3 >> /data/zk03/myid ``` #### 编辑配置文件 ```shell #zk01.cfg itickTime=2000 dataDir=/data/zk01/ clientPort=2181 initLimit=5 syncLimit=2 server.1=192.168.0.112:6001:6101 server.2=192.168.0.112:6002:6102 server.3=192.168.0.112:6003:6103 #zk02.cfg itickTime=2000 dataDir=/data/zk02/ dataLogDir=/data/zk02/logs clientPort=2182 initLimit=5 syncLimit=2 server.1=192.168.0.112:6001:6101 server.2=192.168.0.112:6002:6102 server.3=192.168.0.112:6003:6103 #zk03.cfg itickTime=2000 dataDir=/data/zk03/ clientPort=2183 initLimit=5 syncLimit=2 server.1=192.168.0.112:6001:6101 server.2=192.168.0.112:6002:6102 server.3=192.168.0.112:6003:6103 ``` ##### 连接集群并测试 ```shell zkCli.sh -server 192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183 ``` #### 分布式集群搭建(生产环境用) ##### 基本环境 | 主机名 | IP地址 | myid | | :------------: | :------------: | :------------: | | zk01 | 192.168.0.230 | 1 | | zk02 | 192.168.0.231 | 2 | | zk03 | 192.168.0.232 | 3 | #### 端口配置 | Port|作用| | :------------: | :------------: | | 2181 | 服务监听 | | 2888 | zk与Leader通讯,Master监听该端口 | | 3888 | zk选举Leader用 | #### 角色关系 client client是集群中的一个节点,以固定间隔时间向server发消息,表示自己存活,Server向client回传ack确认消息 如果client没有收到ack消息,自动冲顶效到另外一台server server zk集群中一个节点,想client提供所有服务 想client发送ack消息,表明server还健在 Ensemble zk集群,成员最小数是3 Follower 服务器节点,执行leader的指令 ##### 服务安装 ```shell cd /opt http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz tar xzf zookeeper-3.4.10.tar.gz mv zookeeper-3.4.10 /usr/local/ && cd /usr/local/ ln -s zookeeper-3.4.10 zk ``` #### 初始化配置 所有zk服务器创建数据目录和用户 ```shell useradd zookeeper mkdir /data/zk/logs -p chown -R zookeeper.zookeeper /data/zk chown -R zookeeper.zookeeper /usr/local/zookeeper-* cd /usr/local/zk/bin/ && rm -f zkCli.cmd zkEnv.cmd zkServer.cmd ``` ##### 增加环境变量 ```shell echo ' ' >> /etc/profile echo '#Add zookeeper env. 20170821 ' >> /etc/profile echo 'export ZOOKEEPER_HOME=/usr/local/zk' >> /etc/profile echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile . /etc/profile su - zookeeper ``` #### 配置文件 ##### zk01/zk02/zk03 ```shell itickTime=2000 dataDir=/data/zk/ clientPort=2181 initLimit=5 syncLimit=2 server.1=192.168.0.230:2888:3888 server.2=192.168.0.231:2888:3888 server.3=192.168.0.232:2888:3888 ``` ##### 初始化myid ```shell #192.168.0.230 echo 1 >> /data/zk/myid #192.168.0.231 echo 2 >> /data/zk/myid #192.168.0.232 echo 3 >> /data/zk/myid ``` ##### 启动集群,查看角色状态 ```shell zkServer.sh start zkServer.sh stop zkServer.sh status ``` 执行 zkServer.sh status ```shell ZooKeeper JMX enabled by default Using config: /usr/local/zk/bin/../conf/zoo.cfg Mode: leader ``` ###### 连接集群并测试 ```shell zkCli.sh -server 192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183 ``` 停止leader,查看其他zk节点,观察leader切换情况