2-1 ZK-3.4.10部署
最后更新于:2022-04-02 07:40:16
#### 单机伪集群搭建(测试环境用)
##### 基本环境
| 主机名 | 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切换情况
';