zookeeper集群部署
        
 
     
      //
 # zookeeper集群部署(docker-compose)
服务器IP:
10.150.100.21
10.150.100.22
10.150.100.23
- 基础配置
 
#创建目录,授权
mkdir -p /data/ck-cluster && cd /data/ck-cluster
mkdir -p zookeeper/{zookeeper_conf,zookeeper_data,zookeeper_logs} && chown -R 1001:0 zookeeper/
#创建配置文件,这里的data 是容器内部目录,与docker-compose对应挂载
cat >zookeeper/zookeeper_conf/zoo.cfg<<'EOF'
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=10.150.100.21:2888:3888
server.2=10.150.100.22:2888:3888
server.3=10.150.100.23:2888:3888
EOF
#三台服务器都写入 myid
root@ck-cluster01:/opt/ck-cluster# cd /data/ck-cluster && echo 1 > zookeeper/zookeeper_data/myid && chown -R 1001:0 zookeeper/
root@ck-cluster02:/opt/ck-cluster# cd /data/ck-cluster && echo 2 > zookeeper/zookeeper_data/myid && chown -R 1001:0 zookeeper/
root@ck-cluster03:/opt/ck-cluster# cd /data/ck-cluster && echo 3 > zookeeper/zookeeper_data/myid && chown -R 1001:0 zookeeper/
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 配置docker-compose
 
cd /data/ck-cluster
cat >docker-compose.yaml<<'EOF'
version: '3'
services:
  gtrc_zookeeper:
    restart: always
    image: bitnami/zookeeper:3.4.14
    container_name: gtrc_zookeeper
    privileged: true
    environment:
      - TZ=Asia/Shanghai
      - ZK_HEAP_SIZE="1G"
      - ZK_JVM_FLAGS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true"
    volumes:
      - /etc/localtime:/etc/localtime
      - ./zookeeper/zookeeper_data:/data/zookeeper/data
      - ./zookeeper/zookeeper_logs:/data/zookeeper/logs
      - ./zookeeper/zookeeper_conf/zoo.cfg:/opt/bitnami/zookeeper/conf/zoo.cfg
#    ports:
#      - "0.0.0.0:2181:2181"
#      - "0.0.0.0:2888:2888"
#      - "0.0.0.0:3888:3888"
    entrypoint: ["/opt/bitnami/zookeeper/bin/zkServer.sh","start-foreground"]
    network_mode: host
EOF
#启动容器
docker-compose -f docker-compose.yaml up -d
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# zookeeper集群部署
# 安装jdk环境
# zookeeper安装
zookeeper-Apache下载地址 (opens new window)
# 配置zookeeper集群
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 
tar xf zookeeper-3.4.14.tar.gz -C /opt 
ln -s /opt/zookeeper-3.4.14/ /opt/zookeeper
cd /opt/zookeeper/
 1
2
3
4
2
3
4
- 配置zoo.cfg
 
mkdir -p /data/zookeeper/{data,logs}
vi /opt/zookeeper/conf/zoo.cfg
 1
2
2
单机模式示例
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
 1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
集群模式
添加hosts,或者DNS解析
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=hdss14-12.host.com:2888:3888
server.2=hdss14-21.host.com:2888:3888
server.3=hdss14-22.host.com:2888:3888
 1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 添加myid
 
注意这个myid要与zoo.cfg里面的 server.ID 对应
[root@hdss14-12 src]# echo '1' > /data/zookeeper/data/myid 
[root@hdss14-21 src]# echo '2' > /data/zookeeper/data/myid 
[root@hdss14-22 src]# echo '3' > /data/zookeeper/data/myid
 1
2
3
2
3
# 启动,检查
#启动
/opt/zookeeper/bin/zkServer.sh start 
#三台都执行,再检查
/opt/zookeeper/bin/zkServer.sh status
 1
2
3
4
5
2
3
4
5
- zookeeper启动异常,检查
 
bash -x /opt/zookeeper/bin/zkServer.sh start
找到java 执行的那条命令,在命令行执行,查看报错日志
 
 1
2
3
2
3

[root@hdss14-12 zookeeper]# ./bin/zkServer.sh status 
ZooKeeper JMX enabled by default 
Using config: /opt/zookeeper/bin/../conf/zoo.cfg 
Mode: follower 
[root@hdss14-21 zookeeper]# ./bin/zkServer.sh status 
ZooKeeper JMX enabled by default 
Using config: /opt/zookeeper/bin/../conf/zoo.cfg 
Mode: leader 
[root@hdss14-22 zookeeper]# ./bin/zkServer.sh status 
ZooKeeper JMX enabled by default 
Using config: /opt/zookeeper/bin/../conf/zoo.cfg 
Mode: follower
# zookeeper添加到systemd
- 创建用户,修改权限
 
groupadd zookeeper
useradd  -M -s /sbin/nologin -g zookeeper zookeeper
chown -R zookeeper.zookeeper /data/zookeeper/
 1
2
3
2
3
- 添加zookeeper systemd
 
vi /usr/lib/systemd/system/zookeeper.service
[Unit]
Description=ZooKeeper Service
After=network.target
After=syslog.target
[Service]
Environment=ZOO_LOG_DIR=/data/zookeeper/logs
Environment=JAVA_HOME=/usr/local/jdk1.8
PIDFile=/data/zookeeper/data/zookeeper_server.pid
SyslogIdentifier=zookeeper
Type=forking
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=default.target
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
      
      //
 如果此文章对您有帮助,点击 -->> 请博主喝咖啡  (opens new window)
  上次更新: 2025/05/09, 11:56:38
- 01
 - libblockdev库本地提权漏洞(CVE-2025-6019)08-08
 
- 02
 - postgreSQL通过keepalived配置主从自动切换06-30
 
- 03
 - ubuntu2204编译安装php7.4.3306-30