Skip to main content

zookeeper安装

1、zookeeper安装

采用高可用方案安装

官网镜像https://hub.docker.com/_/zookeeper

规划

服务器Ip节点名称端口号文件目录
10.51.8.110zoo12181/data/devops/skywalking/zookeeper
10.51.8.112zoo22181/data/devops/skywalking/zookeeper
10.51.8.113zoo32181/data/devops/skywalking/zookeeper

所有节点执行

创建目录

mkdir -p /data/devops/skywalking/zookeeper
cd /data/devops/skywalking/zookeeper

配置hosts解析

[root@110 zookeeper]# cat /etc/hosts
#...
##参考添加ip解析
10.51.8.110 zoo1
10.51.8.112 zoo2
10.51.8.113 zoo3

参考官方部署方式部署zookeeper

各个节点分别执行

10.51.8.110节点操作

docker-compose.yaml

tee  ./docker-compose.yaml <<-'EOF'
version: '3.1'

services:
zoo1:
image: zookeeper:3.9.0
restart: always
hostname: zoo1
network_mode: host
container_name: zoo1
restart: always
ports:
- 2181:2181
- 2888:2888
- 3888:3888
volumes:
- ./data:/data
- ./datalog:/datalog
- ./conf:/conf
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
EOF

10.51.8.112节点操作

docker-compose.yaml

tee  ./docker-compose.yaml <<-'EOF'
version: '3.1'

services:
zoo2:
image: zookeeper:3.9.0
restart: always
hostname: zoo2
network_mode: host
container_name: zoo2
restart: always
ports:
- 2182:2181
- 2888:2888
- 3888:3888
volumes:
- ./data:/data
- ./datalog:/datalog
- ./conf:/conf
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
EOF

10.51.8.113节点操作

docker-compose.yaml

tee  ./docker-compose.yaml <<-'EOF'
version: '3.1'

services:
zoo3:
image: zookeeper:3.9.0
restart: always
hostname: zoo3
network_mode: host
container_name: zoo3
restart: always
ports:
- 2181:2181
- 2888:2888
- 3888:3888
volumes:
- ./data:/data
- ./datalog:/datalog
- ./conf:/conf
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
EOF

配置文件同步

因为这集群节点的配置文件zoo.cfg都是一致的,所以先启动一个节点,然后拷贝其配置文件后,然后同步到其他节点即可。

#找一台机器然后拷贝出其中的配置文件,比如 zoo2
cd /data/devops/skywalking/zookeeper
root docker cp zookeeper_zoo2_1:/conf .

#然后把conf文件夹同步到其他两台机器
scp -r conf 10.51.8.110:/data/devops/skywalking/zookeeper/
scp -r conf 10.51.8.113:/data/devops/skywalking/zookeeper/

#然后再其他两台机器创建目录
[root@110 zookeeper]# pwd
/data/devops/skywalking/zookeeper
mkdir -p data
mkdir -p datalog


#然后再其他两台机器创建目录
[root@113 zookeeper]# pwd
/data/devops/skywalking/zookeeper
mkdir -p data
mkdir -p datalog

配置文件参考

[root@demo112 zookeeper]# cat conf/zoo.cfg 
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=zoo1:2888:3888;2181
server.2=zoo2:2888:3888;2181
server.3=zoo3:2888:3888;2181

集群验证

[root@113 zookeeper]# docker exec -it zoo3 bash 
root@zoo3:/apache-zookeeper-3.9.0-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
root@zoo3:/apache-zookeeper-3.9.0-bin#
root@zoo2:/apache-zookeeper-3.9.0-bin# zkServer.sh status 
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
root@zoo2:/apache-zookeeper-3.9.0-bin
root@zoo1:/apache-zookeeper-3.9.0-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
root@zoo1:/apache-zookeeper-3.9.0-bin#

2.负载均衡配置

这里我使用haproxy

参考配置,替换为实际的地址

listen zk_server
bind 0.0.0.0:12181
mode tcp
server s1 10.51.8.110:2181 check fall 3 rise 5 inter 2000 weight 1
server s2 10.51.8.112:2181 check fall 3 rise 5 inter 2000 weight 1
server s3 10.51.8.113:2181 check fall 3 rise 5 inter 2000 weight 1