Zookeeper 集群搭建

环境说明

集群规划

  • 之后每台服务器的配置编写几乎一摸一样, 除了myid文件内容不同
hadoop300hadoop301hadoop302
zookeeperVVV

安装

1、安装包准备

  • 下载后, 解压到每台服务器的一个位置即可.

如hadoop300, 其他集群服务器一样

[hadoop@hadoop300 app]$ pwd
/home/hadoop/app
[hadoop@hadoop300 app]$ ll
总用量 0
lrwxrwxrwx. 1 hadoop hadoop 44 1月  13 23:24 jdk -> /home/hadoop/app/manager/jdk_mg/jdk1.8.0_212
drwxrwxr-x. 6 hadoop hadoop 72 1月  14 19:16 manager
lrwxrwxrwx. 1 hadoop hadoop 64 1月  14 17:24 zookeeper -> /home/hadoop/app/manager/zookeeper_mg/apache-zookeeper-3.5.7-bin

2、配置zk环境变量

vim ~/.bash_profile 文件添加如下, 每台服务器都要配置

# ================= Zookeeper ===============
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

3、创建 myid 文件

  • 3台服务器都要创建
  • 先在${ZOOKEEPER_HOME}/ 目录下创建一个 data(名字任意) 目录用于存放myid文件(唯一标识一台zk节点)及其他zk数据
  • 然后在myid文件里编写节点唯一id, hadood300为1, hadoop301为2,hadoop302为3

以下是haoop300节点的操作, 其他服务器同理,区别是是myid文件的内容不同即可.

[hadoop@hadoop300 zookeeper]$ pwd
/home/hadoop/app/zookeeper
[hadoop@hadoop300 zookeeper]$ mkdir data
[hadoop@hadoop300 zookeeper]$ cd data
[hadoop@hadoop300 data]$ echo 1 >> myid
[hadoop@hadoop300 data]$ ll
总用量 8
-rw-rw-r--. 1 hadoop hadoop   2 1月  14 18:17 myid
[hadoop@hadoop300 data]$ cat myid 
1

4、修改zoo.cfg配置文件

  • 3台服务器要保持同步
[hadoop@hadoop300 conf]$ pwd
/home/hadoop/app/zookeeper/conf
[hadoop@hadoop300 conf]$ cp zoo_sample.cfg zoo.cfg
[hadoop@hadoop300 conf]$ ll
总用量 16
-rw-r--r--. 1 hadoop hadoop  535 5月   4 2018 configuration.xsl
-rw-r--r--. 1 hadoop hadoop 2712 2月   7 2020 log4j.properties
-rw-r--r--. 1 hadoop hadoop  922 1月  14 17:27 zoo.cfg
-rw-r--r--. 1 hadoop hadoop  922 2月   7 2020 zoo_sample.cfg
[hadoop@hadoop300 conf]$ vim zoo.cfg

修改内容如下

# 上一步创建的data目录路径, 
dataDir=/home/hadoop/app/zookeeper/data
# zk集群ip列表
# 	1、这里的.1、.2、.3 代表myid文件的内容, 对应该服务器
# 	2、2888端口用于leader 和 flower 之间进行TCP交互
# 	3、3888端口适合在leader挂了之后, 用于leader选举时服务器之间进行互相通信的端口
server.1=hadoop300:2888:3888
server.2=hadoop301:2888:3888
server.3=hadoop302:2888:3888

5、ZK集群统一启动/停止脚本

[hadoop@hadoop300 shell]$ pwd
/home/hadoop/shell
[hadoop@hadoop300 shell]$ vim zk.sh
[hadoop@hadoop300 shell]$ chmod ug+x zk.sh 
[hadoop@hadoop300 shell]$ ll
-rwxrwxr--. 1 hadoop hadoop 464 1月  14 17:50 zk.sh

zk.sh内容如下
[Tip]

  • 因为配置了zk的环境变量到~/.bash_profile 下所以可以直接使用zkServer.sh脚本. 当然也可以写该脚本的绝对路径即可.
  • ssh远程执行命令默认不会加载这个bash_profile环境变量,所以手动source一下,详细见ssh连接远程主机执行脚本的环境变量问题
#!/bin/bash

# 集群列表
list=(hadoop300 hadoop301 hadoop302)

case $1 in
"start"){
        for i in ${list[@]}
        do
          echo ---------- zookeeper[ $i ]启动 ------------
                ssh $i "source ~/.bash_profile;zkServer.sh start"
        done
};;
"stop"){
        for i in ${list[@]}
        do
          echo ---------- zookeeper[ $i ]停止 ------------    
                ssh $i "source ~/.bash_profile;zkServer.sh stop"
        done
};;
"status"){
        for i in ${list[@]}
        do
          echo ---------- zookeeper [$i] 状态 ------------    
                ssh $i "source ~/.bash_profile;zkServer.sh status"
        done
};;

然后将该脚本挂载到全局调用即可, 配置环境变量或者软连接挂载到 系统bin目录下

6、启动测试

  • 可以看到301被选举为leader
# 启动
[hadoop@hadoop300 data]$ zk.sh start
---------- zookeeper[ hadoop300 ]启动 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------- zookeeper[ hadoop301 ]启动 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------- zookeeper[ hadoop302 ]启动 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

# 查看状态      
[hadoop@hadoop300 data]$ zk.sh status
---------- zookeeper [hadoop300] 状态 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
---------- zookeeper [hadoop301] 状态 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
---------- zookeeper [hadoop302] 状态 ------------
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

# jps查看zk进程叫QuorumPeerMain
[hadoop@hadoop300 ~]$ xcall jps
--------- hadoop300 ----------
1749 QuorumPeerMain
1813 Jps
--------- hadoop301 ----------
1623 QuorumPeerMain
1690 Jps
--------- hadoop302 ----------
1687 Jps
1627 QuorumPeerMain

10、打赏

如果觉得文章有用,你可鼓励下作者(支付宝)

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值