准备好3台CentOS7
192.168.100.160
192.168.100.161
192.168.100.162
并且开放 2888 和 3888 端口,或者关闭防火墙
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --reload
# rpm -ivh jdk-8u212-linux-x64.rpm
# vi /etc/profile.d/java.sh 内容如下:
export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
# source /etc/profile
# java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
在3台服务器上执行下面相同的操作:
从 http://zookeeper.apache.org/ 下载 apache-zookeeper-3.5.5-bin.tar.gz
# tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz
# mv apache-zookeeper-3.5.5-bin zookeeper-3.5.5
# cd zookeeper-3.5.5/bin/
# vi ../conf/zoo.cfg 内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=192.168.100.160:2888:3888
server.2=192.168.100.161:2888:3888
server.3=192.168.100.162:2888:3888
# mkdir -p /data/zookeeper/data
# mkdir -p /data/zookeeper/logs
在 192.168.100.160 vi /data/zookeeper/data/myid 内容为 1
在 192.168.100.161 vi /data/zookeeper/data/myid 内容为 2
在 192.168.100.162 vi /data/zookeeper/data/myid 内容为 3
zookeeper服务器集群中的每台服务器都有一个唯一的ID,取值在1~255之间。通过在 dataDir目录下的myid 文件中指定
每台服务器必须添加这样的配置 server.n=hostname:port1:port2
n是服务器的ID,port1 是跟随者连接领导者的端口,port2是用于选举领导者
集群模式下还有2个参数 initLimit和syncLimit
initLimit 是跟随者与领导者进行连接和同步的时间范围,如果设定的时间范围内半数以上的跟随者未完成同步,则领导者会放弃自己的领导地位,进行一次领导选取。如果频繁发生领导选取,则可能该参数的值太小了。
syncLimit 跟随者与领导者同步的时间。如果设定的时间内,跟随者未能完成同步,会自己重启。所有关联到该跟随者的客户端将连接到另外一个跟随者。
在3台服务器的zookeeper的bin目录运行
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/soft/zookeeper-3.5.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
在3台查看服务器状态,可以分别看到有1个leader,2个follower
[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/soft/zookeeper-3.5.5/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/soft/zookeeper-3.5.5/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
用客户端命令zkCli.sh操作zookeeper:
# ./zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] create /zoo hello
Created /zoo
[zk: localhost:2181(CONNECTED) 2] ls /
[zoo, zookeeper]
再在其他服务器上使用zkCli.sh同样也可以查看到刚刚对znode的操作数据。
停止zookeeper服务
[root@localhost bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /data/soft/zookeeper-3.5.5/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
本文内容到此结束,更多内容可关注公众号