ZooKeeper集群搭建

1 下载安装包
https://apache.org/
ZooKeeper 不存在兼容性问题,下载最新版本即可
当前最新版本是 3.7.0
2 准备工作
2.1 准备3台虚拟机

 2.2 检查JDK安装

  • 确保三台机器安装了JDK

java -version

2.3 检查主机名配置情况
  • 三台机器是否都配置好了主机名
  • 如果未配置,在/etc/hostname中修改主机名,修改完需重启
hostname

2.4 检查主机域名配置情况
  • 确认三台机器都配置好了主机域名映射

cat /etc/hosts

2.5 检查防火墙
  • 确认3台机器防火墙都关闭

systemctl status firewalld

2.6 检查 selinux
  • 确保selinuxdisabled

2.7 检查免密登录
  • 确保免密登录没有问题
  • 查看/root/.ssh/目录下最少有这些文件:authorized_keysid_rsaid_rsa.pub
  • 查看authorized_keys内容,有对应3台机器的密钥信息

cd /root/.ssh/
ls
cat authorized_keys
3 安装步骤
3.1 整体步骤
  • 安装整体步骤

创建并配置 zoo.cfg 文件
创建并配置 my.id 文件
  • 选择安装目录
安装在 /opt/software/ 目录下
注意安装过程中的空格问题
3.2 上传文件并解压
选择一台主机先配置(以下以 node01 进行配置),配置好后使用 scp 命令同步
使用 rz 或者 scp 方式把安装包上传到 /opt/software 目录下
解压安装包
cd /opt/software/
rz

  • 解压安装包
tar -xvzf apache-zookeeper-3.7.0-bin.tar.gz
rm -rf apache-zookeeper-3.7.0-bin.tar.gz
mv apache-zookeeper-3.7.0-bin/ zookeeper-3.7.0

 

  • /opt/software/zookeeper-3.7.0目录下创建目录data用来存放ZK数据,此路径需要在coo.cfg配置 文件里面使用

cd /opt/software/zookeeper-3.7.0
mkdir data

3.3 创建并配置 zoo.cfg 文件
cd /opt/software/zookeeper-3.7.0/conf/
ls
  • 拷贝模板文件为zoo.cfg

cp zoo_sample.cfg zoo.cfg

  • 修改配置zoo.cfg文件
zoo.cfg 配置文件中找到 dataDir 选项,修改成之前创建的 data 目录
zoo.cfg 添加主机相关配置。服务节点的信息 , 主机编号为简单起见一般会用 1 2 3 这样的 方式来命名
vi zoo.cfg
#dataDir 配置是修改
dataDir = /opt/software/zookeeper-3.7.0/data
# 以下内容添加在文件末尾,需要注意配置后面不能有空格
server .1 = node00:2888:3888
server .2 = node01:2888:3888
server .3 = node02:2888:3888
配置说明
tickTime
CS 通信心跳时间,单位毫秒。客户端与服务器或者服务器与服务器之间维持心跳,
也就是每个 tickTime 时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工
作状态,还可以通过心跳来控制 Flower Leader 的通信时间。
initLimit
集群中的 follower 服务器 (F) leader 服务器 (L) 之间初始连接时能容忍的最多心跳
数,即 FL 连接超时时间。 10 表示 10 个心跳时间。
syncLimit
集群中 flower 服务器(
F )跟 leader
L )服务器之间的请求和答应最多能容忍的心
跳数。数据同步超时时间。
dataDir
该属性对应的目录是用来存放 myid 信息跟一些版本,日志,跟服务器唯一的 ID 信息
等。
clientPort
客户端连接的接口,客户端连接 zookeeper 服务器的端口, zookeeper 会监听这个端
口,接收客户端的请求访问!这个端口默认是 2181
3.4 创建并配置 myid 文件
cd /opt/software/zookeeper-3.7.0/data/ 目录下创建 myid 文件
当前主机是 node00 ,只需要配置 1 即可。
cd /opt/software/zookeeper-3.7.0/data/

vi myid
1
3.5 同步 ZK
以上就完成了 node00 的配置,此时需要把 node01 ZK 同步给 node02 node03
同步使用 SCP 命令
同步完成后确认 node01 node02 机器上文件已经同步成功
cd /opt/software
scp -r zookeeper-3.7.0/ node02: $PWD

scp -r zookeeper-3.7.0/ node01: $PWD

3.6 修改 node01 node02
修改 node02 node03 的配置 myid
vi /opt/software/zookeeper-3.7.0/data/myid
3.7 添加环境变量配置
添加 ZooKeeper 环境变量
vi /etc/profile
export ZOOKEEPER_HOME = /opt/software/zookeeper-3.7.0
export PATH = ${PATH} : ${ZOOKEEPER_HOME} /bin

使得环境变量配置文件生效
source /etc/profile

4 启动 ZK 服务
4.1 服务器端脚本
服务端命令是通过 zkServer.sh 脚本来完成的,后面跟不同的参数可以实现不同的功能,
zkServer.sh start ,其中 start 参数可以实现启动 ZooKeeper 服务的功能。
zkServer.sh status ,通过 status 参数可以查看 ZooKeeper 启动后服务的状态,即在集群中
leader 节点还是 follower 节点。
zkServer.sh stop ,通过 stop 参数可以停止 ZooKeeper 服务。
z
4.2  启动服务
3 台虚拟机同时执行 ZK 启动命令
zkServer.sh start
4.2 验证是否启动成功
jps 命令
查看 3 台机器是否都有 QuorumPeerMain 进程

zkServer.sh status

查看 ZK 状态,其中有一台是 leader 2 台是 follower
4.3 服务启动失败解决
zkServer.sh start
zkServer.sh status
4.3.2 端口被占用错误
错误情况
Client port found: 2181. Client address: localhost.
原因分析
8080 端口,可能是和 tomcat 抢占端口(无 tomcat 安装,此原因可排除)
2181 端口被占用
解决方案 1
yum install lsof
lsof -i :2181 # 假设查询到的端口为 20974
kill -9 xxx #xxx 的位置就填
解决方案 2
yum -y install net-tools
netstat -lnp |grep 2181 # 假设查询到的端口为 13681
kill -9 xxx #xxx 的位置就填 13681
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值