Linux搭建Zookeeper集群实战
环境准备:
三台服务器:
192.168.0.105、192.168.0.106、192.168.0.107
jdk环境:jdk1.8
zookeeper版本:apache-zookeeper-3.6.2-bin.tar.gz
安装集群三板斧:
上传、解压、配置zoo.cfg
192.168.0.105
查看环境
root@cloud_1 /]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
[root@cloud_1 /]#
上传zookeeper并解压
[root@cloud_1]# mkdir /usr/localhost/zookeeper
[root@cloud_1]# cd /usr/localhost/zookeeper
[root@cloud_1 zookeeper]# ls
apache-zookeeper-3.6.2-bin.tar.gz
[root@cloud_1 zookeeper]# tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
[root@cloud_1 zookeeper]# cd apache-zookeeper-3.6.2
[root@cloud_1 apache-zookeeper-3.6.2]# ls
bin conf docs lib LICENSE.txt NOTICE.txt README.md README_packaging.md
配置data与conf
[root@cloud_1 apache-zookeeper-3.6.2]# mkdir data
[root@cloud_1 apache-zookeeper-3.6.2]# cd data/
[root@cloud_1 data]# touch myid
[root@cloud_1 data]# ls
myid
[root@cloud_1 data]# vi myid
[root@cloud_1 data]# cat myid
1
[root@cloud_1 apache-zookeeper-3.6.2]# ls
bin conf data docs lib LICENSE.txt NOTICE.txt README.md README_packaging.md
[root@cloud_1 apache-zookeeper-3.6.2]# cd conf/
[root@cloud_1 conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
[root@cloud_1 conf]# cp zoo_sample.cfg zoo.cfg
[root@cloud_1 conf]# ls
configuration.xsl log4j.properties zoo.cfg zoo_sample.cfg
[root@cloud_1 conf]# vi zoo.cfg
[root@cloud_1 conf]# cat zoo.cfg| grep -v '#'
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/apache-zookeeper-3.6.2/data
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=192.168.0.105:2888:3888
server.2=192.168.0.106:2888:3888
server.3=192.168.0.107:2888:3888
启动zookeeper
[root@cloud_3 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
查看zookeeper运行状态
[zk: 192.168.0.106:2181(CONNECTED) 0] [root@cloud_1 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
192.168.0.106与192.168.0.107
参考:zoo.cfg
server.1=192.168.0.105:2888:3888
server.2=192.168.0.106:2888:3888
server.3=192.168.0.107:2888:3888
192.168.0.105的/data/myid内容为1
192.168.0.106的/data/myid内容为2
192.168.0.107的/data/myid内容为3
其余配置均一致;
链接zookeeper任意服务器
root@cloud_1 bin]# ./zkCli.sh -server 192.168.0.106:2181
报错
决绝链接很大原因是ip不通或者端口防火墙未开放
查看端口并开通
[root@cloud_1 bin]# firewall-cmd --state
running
[root@cloud_1 bin]# firewall-cmd --list-ports
[root@cloud_1 bin]# firewall-cmd --zone=public --add-port=2181/tcp --permanent
success
[root@cloud_1 bin]# firewall-cmd --zone=public --add-port=2888/tcp --permanent
success
[root@cloud_1 bin]# firewall-cmd --zone=public --add-port=3888/tcp --permanent
success
[root@cloud_1 bin]# firewall-cmd --reload
success
[root@cloud_1 bin]# firewall-cmd --list-ports
2181/tcp 2888/tcp 3888/tcp
开通端口后运行正常
root@cloud_1 bin]# ./zkCli.sh -server 192.168.0.106:2181
Connecting to 192.168.0.106:2181
2020-11-14 03:48:44,984 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.6.2--803c7f1a12f85978cb049af5e4ef23bd8b688715, built on 09/04/2020 12:44 GMT
2020-11-14 03:48:44,998 [myid:] - INFO [main:Environment@98] - Client environment:host.name=192.168.0.105
2020-11-14 03:48:44,998 [myid:] - INFO [main:Environment@98] - Client environment:java.version=1.8.0_161
2020-11-14 03:48:45,024 [myid:] - INFO [main:Environment@98] - Client environment:java.vendor=Oracle Corporation
2020-11-14 03:48:45,025 [myid:] - INFO [main:Environment@98] - Client environment:java.home=/usr/local/java/jdk1.8.0_161/jre
2020-11-14 03:48:45,032 [myid:] - INFO [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2020-11-14 03:48:45,033 [myid:] - INFO [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2020-11-14 03:48:45,034 [myid:] - INFO [main:Environment@98] - Client environment:java.compiler=<NA>
2020-11-14 03:48:45,034 [myid:] - INFO [main:Environment@98] - Client environment:os.name=Linux
2020-11-14 03:48:45,035 [myid:] - INFO [main:Environment@98] - Client environment:os.arch=amd64
2020-11-14 03:48:45,035 [myid:] - INFO [main:Environment@98] - Client environment:os.version=3.10.0-1062.el7.x86_64
2020-11-14 03:48:45,036 [myid:] - INFO [main:Environment@98] - Client environment:user.name=root
2020-11-14 03:48:45,036 [myid:] - INFO [main:Environment@98] - Client environment:user.home=/root
2020-11-14 03:48:45,037 [myid:] - INFO [main:Environment@98] - Client environment:user.dir=/usr/local/zookeeper/apache-zookeeper-3.6.2/bin
2020-11-14 03:48:45,037 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.free=12MB
2020-11-14 03:48:45,054 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.max=247MB
2020-11-14 03:48:45,055 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.total=15MB
2020-11-14 03:48:45,106 [myid:] - INFO [main:ZooKeeper@1006] - Initiating client connection, connectString=192.168.0.106:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5aaa6d82
2020-11-14 03:48:45,159 [myid:] - INFO [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2020-11-14 03:48:45,195 [myid:] - INFO [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
106与107服务器状态
[root@cloud_2 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@cloud_2 bin]#
[root@cloud_3 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@cloud_3 bin]#
停机zookeeper
[root@cloud_3 bin]# ./zkServer.sh stop