zookeeper集群搭建

一、zookeeper集群搭建

1、搭建zookeeper集群准备三台机器,需要安装jdk作为基础支持。此次使用的Zookeeper3.4.7版本。

2、准备三台服务器,将ip和端口规划好。这里最好将主机名,以及主机名和ip的映射关系配置到/etc/hosts内

vi /etc/hosts 
127.0.0.1 localhost
::1 localhost
10.32.40.11  zk01

10.32.40.12  zk02

10.32.40.13  zk03

3、在三台机器上安装zk所需要的jbk安装包,解压安装

tar -zxf jdk1.8.0_131.tar.gz -C /data/zk/

4、修改环境变量/etc/profile,在文件行尾加入环境变量保存退出。

export JAVA_HOME=/data/zk/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin

5、zookeeper安装包下载

官网下线zookeeper安装包,https://zookeeper.apache.org/

mkdir -p /data/zk/
tar -zxvf zookeeper-3.4.10.tar.gz -C /data/zk/

6、修改zookeeper配置文件zoo.cfg

# 进入conf目录,复制zoo-sample.cfg重命名为zoo.cfg,通过修改zoo.cfg来对zookeeper进行配置。这个名字固定写死,因为zookeeper启动会检查这个文件,根据这个配置文件里的信息来启动服务。
cd /data/zk/zookeeper-3.4.10/conf
cp zoo-sample.cfg zoo.cfg

# vim zoo.cfg,此文件中需要修改以下两处:
7、dataDir:指定zookeeper将数据保存在哪个目录下,如果不修改,默认在/tmp下,这个目录下的数据有可能会在磁盘空间不足或服务器重启时自动被linux清理,所以一定要修改这个地址。按个人习惯将其修改为自己的管理目录。
dataDir=/data/zk/zookeeper-3.4.10/data
dataLogDir=/data/zk/zookeeper-3.4.10/logs

8、完全分布式:多台机器各自配置,zookeeper有几个节点,就配置几个server。例如本文总共三台主机,于是在配置文件末尾加上下面三行,可以填写ip也可以是/etc/hosts的主机名,建议后者,可以充分解耦
server.1=zk01:2888:3888
server.2=zk02:2888:3888
server.3=zk03:2888:3888
# 注意:一定要跟自己的myid配置对应上,否则集群一直处于非正常状态 myid文件中就是N,则对应zoo.cfg 中server.{N} ,关于myid配置,见下一小节
zookeeper服务默认的端口号为2888和3888,2888原子广播端口,3888选举端口。

9、在zoo.cfg配置文件下的dataDir=/data/zk/zookeeper-3.4.10/data参数目录下创建myid文件,里面填写的内容server.{N}一致

cd /data/zk/zookeeper-3.4.10/data

vi myid

1

10、将zk软件包都拷贝到zk02,zk03主机上

scp -r/data/zk/zookeeper-3.4.10 root@zk02
scp -r /data/zk/zookeeper-3.4.10 root@zk03

将另外两台服务器中的myid文件中的id即可。
#spart02
vim myid
2

#spart03
vim myid
3

 11、启动zk

启动ZK服务,Zookeeper集群需要每台挨个启动。
bin/zkServer.sh start
#停止ZK服务:
bin/zkServer.sh stop
#重启ZK服务:
bin/zkServer.sh restart
查看ZK服务状态:
bin/zkServer.sh status  依次查看三台主机,会发现某一台被选举为leader,其余两台为follower
可以使用ps -ef查询zk进程

 

12、测试zk数据是否同步

1.切换目录
cd /data/zk/zookeeper-3.4.10

2.客户登陆,
./bin/zkCli.sh

注意zoo.cfg如果修改了clientPort,例如clientPort=8131,那么此处需要指定参数
./bin/zkCli.sh -server localhost:8131  本实验是登陆本机操作,当然localhost也可以是其他zk主机

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] get /zookeeper
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 3] create /dls 1234  //创建一个dls文件并且值为:1234
Created /dls
[zk: localhost:2181(CONNECTED) 4] ls / #查看是否创建好了
[dls, zookeeper]
[zk: localhost:2181(CONNECTED) 5] get /dls #获取文件的值
1234
cZxid = 0x200000002
ctime = Fri Mar 25 09:54:20 CST 2022
mZxid = 0x200000002
mtime = Fri Mar 25 09:54:20 CST 2022
pZxid = 0x200000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 6]

 

13、在zk02和zk03上查询zk01文件是否同步过来

./bin/zkCli.sh -server localhost:8131

[zk: localhost:2181(CONNECTED) 0] ls /  显示dls同步过来了
[dls zookeeper]
[zk: localhost:2181(CONNECTED) 1] get dls 获取dls文件内容
1234
cZxid = 0x200000002
ctime = Fri Mar 25 09:54:20 CST 2022
mZxid = 0x200000002
mtime = Fri Mar 25 09:54:20 CST 2022
pZxid = 0x200000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 2]

 

14、测试zk的角色转移

首先查询一下zk01 、zk02、zk03的角色状态

bin/zkServer.sh status

停止leader这台服务

bin/zkServer.sh stop

发现集群会重新选举出一个leader。重启原来的leader,会变成follower。

完结~

 

posted @ 2022-11-09 14:22  IT技术土狗  阅读(843)  评论(0)    收藏  举报