1)准备工作
- 安装JDK
- 将Zookeeper上传到服务器
[root@iZ2ze5v2vdwv6veyksylhxZ /]# cd /usr/local/
[root@iZ2ze5v2vdwv6veyksylhxZ local]# ls
aegis bin include libexec nginx rocketmq src
apache-maven-3.6.3 curl jdk1.8.0_281 libiconv openssl rocketmq-console-ng-1.0.1.jar tengine
apache-tomcat-7.0.61 etc lib man redis_bloom sbin yum-3.2.28
apache-tomcat-7.0.61.tar.gz games lib64 mysql redisbloom.so share yum-3.2.28.tar.gz
[root@iZ2ze5v2vdwv6veyksylhxZ local]# mkdir zookeeper
[root@iZ2ze5v2vdwv6veyksylhxZ local]# ls
aegis curl lib mysql rocketmq tengine
apache-maven-3.6.3 etc lib64 nginx rocketmq-console-ng-1.0.1.jar yum-3.2.28
apache-tomcat-7.0.61 games libexec openssl sbin yum-3.2.28.tar.gz
apache-tomcat-7.0.61.tar.gz include libiconv redis_bloom share zookeeper
bin jdk1.8.0_281 man redisbloom.so src
[root@iZ2ze5v2vdwv6veyksylhxZ local]# cd zookeeper/
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# ls
zookeeper-3.4.6.tar.gz
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]#
- 解压Zookeeper,并创建data目录,将conf下的zoo_sample.cfg文件改名为zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# tar -zxvf zookeeper-3.4.6.tar.gz
- 建立
/user/local/zookeeper/zookeeper-cluster
,将解压后的Zookeeper复制到以下三个目录
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# ls
zookeeper-3.4.6 zookeeper-3.4.6.tar.gz
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# cd zookeeper-3.4.6
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper-3.4.6]# ls
bin conf docs lib README_packaging.txt src zookeeper-3.4.6.jar.md5
build.xml contrib ivysettings.xml LICENSE.txt README.txt zookeeper-3.4.6.jar zookeeper-3.4.6.jar.sha1
CHANGES.txt dist-maven ivy.xml NOTICE.txt recipes zookeeper-3.4.6.jar.asc
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper-3.4.6]# cd conf/
[root@iZ2ze5v2vdwv6veyksylhxZ conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
#重命名
[root@iZ2ze5v2vdwv6veyksylhxZ conf]# mv zoo_sample.cfg zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ conf]# ls
configuration.xsl log4j.properties zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ conf]#
在 usr/local/zookeeper目录下,新建集群文件夹,集群目录里又新建3个zookeeper文件夹
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# ls
zookeeper-3.4.6 zookeeper-3.4.6.tar.gz
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# mkdir zookeeper_cluster
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# ls
zookeeper-3.4.6 zookeeper-3.4.6.tar.gz zookeeper_cluster
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# cd zookeeper_cluster/
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# ls
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# mkdir zookeeper_1
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# mkdir zookeeper_2
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# mkdir zookeeper_3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# ls
zookeeper_1 zookeeper_2 zookeeper_3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]#
将解压后的zookeeper复制到zookeeper_cluster下的这3个新建的文件夹中
# /usr/local/zookeeper
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# ls
zookeeper-3.4.6 zookeeper-3.4.6.tar.gz zookeeper_cluster
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# cd zookeeper_cluster/
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cp -rf ../zookeeper-3.4.6 zookeeper_1
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cp -rf ../zookeeper-3.4.6 zookeeper_2
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cp -rf ../zookeeper-3.4.6 zookeeper_3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]#
- 配置每一个 Zookeeper 的 dataDir(zoo.cfg) clientPort 分别为 2181 2182 2183
修改/usr/local/zookeeper/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
# 端口默认是2181
clientPort=2181
#在zookeeper_1下新建data目录
dataDir=/usr/local/zookeeper/zookeeper_cluster/zookeeper_1/data
修改/usr/local/zookeeper/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
clientPort=2182
dataDir=/usr/local/zookeeper/zookeeper_cluster/zookeeper_2/data
修改/usr/local/zookeeper/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
clientPort=2183
dataDir=/usr/local/zookeeper/zookeeper_cluster/zookeeper_3/data
修改 zoo.cfg文件中端口号
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# ls
zookeeper_1 zookeeper_2 zookeeper_3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cd zookeeper_1
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_1]# ls
zookeeper-3.4.6
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_1]# cd zookeeper-3.4.6/
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper-3.4.6]# ls
bin conf docs lib README_packaging.txt src zookeeper-3.4.6.jar.md5
build.xml contrib ivysettings.xml LICENSE.txt README.txt zookeeper-3.4.6.jar zookeeper-3.4.6.jar.sha1
CHANGES.txt dist-maven ivy.xml NOTICE.txt recipes zookeeper-3.4.6.jar.asc
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper-3.4.6]# cd conf/
[root@iZ2ze5v2vdwv6veyksylhxZ conf]# ls
configuration.xsl log4j.properties zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ conf]# vim zoo.cfg
#在zoo.cfg中修改端口和dataDir
在zookeeper_1下新增data目录
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# ls
zookeeper-3.4.6 zookeeper-3.4.6.tar.gz zookeeper_cluster
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper]# cd zookeeper_cluster/
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# ls
zookeeper_1 zookeeper_2 zookeeper_3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cd zookeeper_1
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_1]# mkdir data
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_1]# ls
data zookeeper-3.4.6
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_1]# cd data/
[root@iZ2ze5v2vdwv6veyksylhxZ data]# pwd
/usr/local/zookeeper/zookeeper_cluster/zookeeper_1/data
[root@iZ2ze5v2vdwv6veyksylhxZ data]#
在zookeeper_2下新增data目录,且配置zoo.cfg中端口和dataDir
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# ls
zookeeper_1 zookeeper_2 zookeeper_3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cd zookeeper_2
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_2]# ls
zookeeper-3.4.6
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_2]# mkdir data
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_2]# ls
data zookeeper-3.4.6
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_2]# cd data/
[root@iZ2ze5v2vdwv6veyksylhxZ data]# ls
[root@iZ2ze5v2vdwv6veyksylhxZ data]# pwd
/usr/local/zookeeper/zookeeper_cluster/zookeeper_2/data
[root@iZ2ze5v2vdwv6veyksylhxZ data]# cd ..
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_2]# ls
data zookeeper-3.4.6
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_2]# cd zookeeper-3.4.6/
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper-3.4.6]# ls
bin conf docs lib README_packaging.txt src zookeeper-3.4.6.jar.md5
build.xml contrib ivysettings.xml LICENSE.txt README.txt zookeeper-3.4.6.jar zookeeper-3.4.6.jar.sha1
CHANGES.txt dist-maven ivy.xml NOTICE.txt recipes zookeeper-3.4.6.jar.asc
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper-3.4.6]# cd conf/
[root@iZ2ze5v2vdwv6veyksylhxZ conf]# ls
configuration.xsl log4j.properties zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ conf]# vim zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ conf]#
2)配置集群
-
在每个 zookeeper 的 data 目录下创建一个 myid 文件,内容分别是 1、2、3 。这个文件就是记录每个服务器的 ID
-
在每一个 zookeeper 的 zoo.cfg 配置客户端访问端口(clientPort)和集群服务器 IP 列表。
集群服务器 IP 列表如下
#真实集群中添加ip即可
server.1=0.0.0.0:2881:3881
server.2=0.0.0.0:2882:3882
server.3=0.0.0.0:2883:3883
解释:server.服务器 ID=服务器 IP 地址:服务器之间通信端口:服务器之间投票选举端口
具体操作步骤1:
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# ls
zookeeper_1 zookeeper_2 zookeeper_3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# touch zookeeper_1/data/myid
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# touch zookeeper_2/data/myid
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# touch zookeeper_3/data/myid
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]#
分别将myid设置为1、2、3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# vim zookeeper_1/data/myid
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# vim zookeeper_2/data/myid
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# vim zookeeper_3/data/myid
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]#
查看是否设置成功
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cat zookeeper_1/data/myid
1
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cat zookeeper_2/data/myid
2
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# cat zookeeper_3/data/myid
3
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]#
具体操作步骤2:
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# vim zookeeper_1/zookeeper-3.4.6/conf/zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# vim zookeeper_2/zookeeper-3.4.6/conf/zoo.cfg
[root@iZ2ze5v2vdwv6veyksylhxZ zookeeper_cluster]# vim zookeeper_3/zookeeper-3.4.6/conf/zoo.cfg
在每一个 zoo.cfg 里都分别在末尾添加如下配置
#配置zookeeper集群
server.1=0.0.0.0:2881:3881
server.2=0.0.0.0:2882:3882
server.3=0.0.0.0:2883:3883
3)启动集群
启动集群就是分别启动每个实例
#启动zookeeper_1
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper_cluster/zookeeper_1/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#查看zookeeper状态
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper_cluster/zookeeper_1/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
[root@iZ2ze5v2vdwv6veyksylhxZ bin]#
查看主从节点,切记把3台zookeeper都启动,不然主机没启动,如果查看从机的状态会报错