ZooKeeper之搭建集群环境

1. zk集群

  • 主从节点:主节点下有多个子节点
  • 心跳机制(选举模式):当主节点宕机了,由子节点来做为主节点;当之前的主节点通过重启或者修复完,此时的节点就不再成为主节点,而是成为子节点。

2. zookeeper 集群搭建注意点

搭建三台集群为例:

  • 配置数据文件myid 1/2/3对应server.1/2/3
  • 通过./zkCli.sh -server [ip]:[port]检测集群是否配置成功

3. 单机搭建ZK集群(伪分布式)

3.1 复制zookeeper

[root@centos7 local]# cp zookeeper zookeeper02 -rf
[root@centos7 local]# cp zookeeper zookeeper03 -rf

3.2 修改三份配置文件

/zookeeper/conf/zoo.fig

dataDir=/usr/local/zookeeper/dataDir
dataLogDir=/usr/local/zookeeper/dataLogDir
#设置端口号
clientPort=2181
#开启集群端口
server.1=192.168.1.22:2188:3188
server.2=192.168.1.22:2189:3189
server.3=192.168.1.22:2190:3190

/zookeeper/dataDir

[root@centos7 dataDir]# vim myid #  里面的值对应前面配置server.? 的?值
[root@centos7 dataDir]# ll
total 8
-rw-r--r--. 1 root root  2 Jun  7 22:46 myid
drwxr-xr-x. 2 root root 81 Jun  6 17:35 version-2
-rw-r--r--. 1 root root  5 Jun  6 17:35 zookeeper_server.pid

/zookeeper02/conf/zoo.fig

dataDir=/usr/local/zookeeper02/dataDir
dataLogDir=/usr/local/zookeeper02/dataLogDir
#设置端口号
clientPort=2182
#开启集群端口
server.1=192.168.1.22:2188:3188
server.2=192.168.1.22:2189:3189
server.3=192.168.1.22:2190:3190

/zookeeper02/dataDir

[root@centos7 dataDir]# vim myid #  里面的值对应前面配置server.? 的?值
[root@centos7 dataDir]# ll
total 8
-rw-r--r--. 1 root root  2 Jun  7 22:46 myid
drwxr-xr-x. 2 root root 81 Jun  6 17:35 version-2
-rw-r--r--. 1 root root  5 Jun  6 17:35 zookeeper_server.pid

/zookeeper03/conf/zoo.fig

dataDir=/usr/local/zookeeper03/dataDir
dataLogDir=/usr/local/zookeeper03/dataLogDir
#设置端口号
clientPort=2182
#开启集群端口
server.1=192.168.1.22:2188:3188
server.2=192.168.1.22:2189:3189
server.3=192.168.1.22:2190:3190

/zookeeper03/dataDir

[root@centos7 dataDir]# vim myid #  里面的值对应前面配置server.? 的?值
[root@centos7 dataDir]# ll
total 8
-rw-r--r--. 1 root root  2 Jun  7 22:46 myid
drwxr-xr-x. 2 root root 81 Jun  6 17:35 version-2
-rw-r--r--. 1 root root  5 Jun  6 17:35 zookeeper_server.pid

3.3 启动

启动第一台zookeeper

[root@centos7 local]# cd zookeeper
[root@centos7 zookeeper]# cd bin/
[root@centos7 bin]# ls
README.txt    zkCli.sh   zkServer.cmd            zkSnapShotToolkit.cmd  zkTxnLogToolkit.sh
zkCleanup.sh  zkEnv.cmd  zkServer-initialize.sh  zkSnapShotToolkit.sh
zkCli.cmd     zkEnv.sh   zkServer.sh             zkTxnLogToolkit.cmd
[root@centos7 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

启动第二台zookeeper02

[root@centos7 bin]# cd ../
[root@centos7 zookeeper]# cd ../
[root@centos7 local]# cd zookeeper02
[root@centos7 zookeeper02]# ls
bin   dataDir     docs  LICENSE.txt  NOTICE.txt  README_packaging.md
conf  dataLogDir  lib   logs         README.md
[root@centos7 zookeeper02]# cd bin/
[root@centos7 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper02/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

启动第三台zookeeper03

[root@centos7 local]# cd zookeeper03
[root@centos7 zookeeper03]# cd bin/
[root@centos7 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper03/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

3.4 启动客户端

连接2181zookeeper

[root@centos7 bin]# ./zkCli.sh -server localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /
[names, test, zookeeper]

连接2182zookeeper

[root@centos7 bin]# ./zkCli.sh -server localhost:2182
Connecting to localhost:2182
....
[zk: localhost:2182(CONNECTED) 0] ls /
[names, test, zookeeper]
[zk: localhost:2182(CONNECTED) 1] create /data test-datat
Created /data

连接2183zookeeper

[root@centos7 bin]# ./zkCli.sh -server localhost:2183
Connecting to localhost:2183
.....
[zk: localhost:2183(CONNECTED) 0] ls /
[data, names, test, zookeeper]

4. 多机搭建ZK集群(真分布式)

注意事项:环境变量的配置,ip配置不同,端口号可以相同

4.1 修改环境变量

[root@centos7 ~]# vim /etc/profile
ZOOKEEPER_HOME=/usr/local/zookeeper

4.2 修改配置

全部保持一致

/zookeeper/conf/zoo.fig

dataDir=/usr/local/zookeeper/dataDir
dataLogDir=/usr/local/zookeeper/dataLogDir
#设置端口号
clientPort=2181
#开启集群端口
server.1=192.168.1.23:2888:3888
server.2=192.168.1.24:2888:3888
server.3=192.168.1.25:2888:3888

/zookeeper/dataDir
vim myid:里面的值对应前面配置server.? 的?值

[root@centos7 dataDir]# vim myid # 里面的值对应前面配置server.? 的?值
[root@centos7 dataDir]# ll 
total 8
-rw-r--r--. 1 root root  2 Jun  7 22:46 myid
drwxr-xr-x. 2 root root 81 Jun  6 17:35 version-2
-rw-r--r--. 1 root root  5 Jun  6 17:35 zookeeper_server.pid

4.3 启动服务端

三个zookeeper都要启动

[root@centos7 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

4.4 查看状态

第一台
follower:从节点

[root@centos7 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

第二台
leader:主节点

[root@centos7 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

第三台
follower:从节点

[root@centos7 bin]# ./zkServer.sh status
4ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

4.5 启动客户端

查看各个zookeeper是否数据同步
第一台创建数据,其他两台查看数据是否同步
第一台

[zk: 192.168.1.23:2181(CONNECTED) 0] ls /
[names, test, zookeeper]
[zk: 192.168.1.23:2181(CONNECTED) 1] create /real_cluster xyz
Created /real_cluster
[zk: 192.168.1.23:2181(CONNECTED) 2] get /real_cluster
xyz

第二台

[zk: 192.168.1.24:2181(CONNECTED) 0] ls /
[names, real_cluster, test, zookeeper]
[zk: 192.168.1.24:2181(CONNECTED) 1] get /real_cluster
xyz

第三台

[zk: 192.168.1.25:2181(CONNECTED) 0] ls /
[names, real_cluster, test, zookeeper]
[zk: 192.168.1.25:2181(CONNECTED) 1] get /real_cluster
xyz

4.6 集群/选举测试

把主节点的机子关机,当成宕机操作
查看其余两台机子的结点状态
查看第一台

[root@centos7 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

查看第三台

[root@centos7 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

接着恢复刚才关闭的机子,查看是主节点还是从节点

[root@centos7 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@centos7 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.
[root@centos7 bin]# systemctl stop firewalld
[root@centos7 bin]# ./zkServer.sh restart
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@centos7 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值