在Linux上安装Zookeeper集群(zookeeper-3.5.9)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
记录455
场景在CentOS 7.9操作系统上使用zookeeper-3.5.9版本在三台机器上安装Zookeeper集群。
版本zookeeper-3.5.9CentOS 7.9,Linux kernel-5.4.218。
1.主机规划
目标使用三台主机部署Zookeeper集群。
主机app161IP192.168.19.161端口221812800128501。
主机app162IP192.168.19.162端口221812800128501。
主机app163IP192.168.19.163端口221812800128501。
2.下载zookeeper-3.5.9安装包
下载版本apache-zookeeper-3.5.9-bin.tar.gz
下载地址https://archive.apache.org/dist/zookeeper/
下载命令wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
解析下载完成后apache-zookeeper-3.5.9.tar.gz包在当前目录。
3.解压zookeeper包到指定目录
3.1解压
命令tar -zxvf /home/apps/software/apache-zookeeper-3.5.9-bin.tar.gz -C /home/opt/zk
解析解压到指定目录/home/opt/zk/apache-zookeeper-3.5.9-bin。
3.2重命名
命令mv /home/opt/zk/apache-zookeeper-3.5.9-bin /home/opt/zk/zookeeper-3.5.9
解析把apache-zookeeper-3.5.9重命名为zookeeper-3.5.9。
4.创建zookeeper的数据和日志目录
数据和日志目录可以放在/home/opt/zk/zookeeper-3.5.9内也可以独立放置。
数据目录命令mkdir -p /home/opt/zk/data
日志目录命令mkdir -p /home/opt/zk/log
解析data目录是存放zookeeper运行数据。log目录存放zookeeper运行日志。
5.修改zookeeper的配置
5.1把zoo_sample.cfg复制并重命名为zoo.cfg
命令cp -r /home/opt/zk/zookeeper-3.5.9/conf/zoo_sample.cfg /home/opt/zk/zookeeper-3.5.9/conf/zoo.cfg
解析zoo_sample.cfg是官方提供的模板配置用户按需配置就行。
(1)把zoo_sample.cfg复制并重命名为zoo.cfg
5.2修改zoo.cfg配置文件
修改命令vi /home/opt/zk/zookeeper-3.5.9/conf/zoo.cfg
修改内容
#修改数据目录和日志目录
dataDir=/home/opt/zk/data
dataLogDir=/home/opt/zk/log
#修改端口号,默认是2181
clientPort=22181
#zookeeper集群配置
server.1=192.168.19.161:28001:28501
server.2=192.168.19.162:28001:28501
server.3=192.168.19.163:28001:28501
5.3解析集群配置格式
在zoo.cfg文件中的zookeeper集群配置格式说明。
格式: server.A = B:C:D
A: 是一个数字,集群中表示第几号服务器。
B: 服务器IP地址。
C: 是一个端口号用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口。
D: 是一个端口号是在leader挂掉是专门用来进行选举leader所用的端口。
6.把主机app161配置的zookeeper拷贝到其它主机
6.1远程创建目录
脚本名称mkdir_script.sh
脚本内容
#!/bin/bash
for host_name in app162 app163
do
ssh -t root@${host_name} 'mkdir -p /home/opt/zk/zookeeper-3.5.9/ ;\
mkdir -p /home/opt/zk/data/ ;\
mkdir -p /home/opt/zk/log/'
done
执行脚本bash mkdir_script.sh
6.2远程拷贝zookeeper到其它主机
脚本名称scp_script.sh
脚本内容
#!/bin/bash
for host_name in app162 app163
do
scp -r /home/opt/zk/zookeeper-3.5.9/* root@${host_name}:/home/opt/zk/zookeeper-3.5.9
scp -r /home/opt/zk/data/* root@${host_name}:/home/opt/zk/data
scp -r /home/opt/zk/log* root@${host_name}:/home/opt/zk/log
done
执行脚本bash scp_script.sh
7.创建myid文件和写入编号
命令echo '1' > /home/opt/zk/data/myid
解析如果同一台主机部署zookeeper集群多个节点那么myid的值需不一样。
脚本名称create_myid_script.sh
脚本内容
#!/bin/bash
for host_name in app161 app162 app163
do
if [[ ${host_name} = 'app161' ]] ;then
ssh -t root@${host_name} " echo '1' > /home/opt/zk/data/myid "
elif [[ ${host_name} = 'app162' ]] ;then
ssh -t root@${host_name} " echo '2' > /home/opt/zk/data/myid "
elif [[ ${host_name} = 'app163' ]] ;then
ssh -t root@${host_name} " echo '3' > /home/opt/zk/data/myid "
fi
done
执行脚本bash create_myid_script.sh
解析每台主机的myid编号是不一样的。检测两个字符串是否相等使用“=”同时“=”两边有空格。
8.修改zookeeper目录所有权
在此步骤前zookeeper相关操作使用root用户操作。生产环境一般运行zookeeper使用普通用户修改目录所有权。
脚本名称chown_script.sh
脚本内容
#!/bin/bash
for host_name in app161 app162 app163
do
ssh -t root@${host_name} 'chown -R learn:learn /home/opt/zk/'
done
执行脚本bash chown_script.sh
解析把/home/opt/zk/目录所有权赋给learn用户。如下
zookeeper主目录/home/opt/zk/zookeeper-3.5.9。
zookeeper数据目录/home/opt/zk/data。
zookeeper日志目录/home/opt/zk/log。
9.启动zookeeper集群
操作用户切换为learn用户su learn
启动zookeeper集群只需启动每个节点zookeeper会自动组成集群。
9.1启动zookeeper集群(逐台启动)
使用启动名到每台主机启动zookeeper就行。
使用用户su learn
操作目录/home/opt/zk/zookeeper-3.5.9/bin
启动命令sh zkServer.sh start
解析每次都登录集群主机挺麻烦可以考虑使用脚本启动。
9.2启动zookeeper集群(使用脚本启动)
脚本名称zk-start_script.sh
脚本内容
#!/bin/bash
for host_name in app161 app162 app163
do
ssh -t learn@${host_name} 'cd /home/opt/zk/zookeeper-3.5.9/bin/ ; sh zkServer.sh start '
done
执行脚本sh zk-start_script.sh
日志信息
9.3使用脚本启动zookeeper需修改zkEnv.sh文件
本例中当使用脚本启动zookeeper集群需修改zkEnv.sh文件。
(1)修改主机app161的zkEnv.sh
文件全路径/home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh
修改内容
JAVA_HOME=/home/apps/module/jdk1.8.0_281
解析在使用脚本远程启动时报错Error: JAVA_HOME is not set and java could not be found in PATH.因此在zkEnv.sh文件指定环境变量。
(2)把修改zkEnv.sh同步到其它主机
脚本名称scp_zkEnv.sh
脚本内容
for host_name in app162 app163
do
scp -r /home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh root@${host_name}:/home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh
done
执行脚本bash scp_zkEnv.sh
10.查看zookeeper集群启动状态
脚本名称zk-status_script.sh
脚本内容
#!/bin/bash
for host_name in app161 app162 app163
do
echo "查看主机 ${host_name} 启动端口:"
ssh -t learn@${host_name} ' netstat -tlnp | grep java '
done
执行脚本bash zk-status_script.sh
日志信息
11.使用客户端登录集群
客户端/home/opt/zk/zookeeper-3.5.9/bin/zkCli.sh
连接命令
sh zkCli.sh -timeout 5000 -server 192.168.19.161:22181
sh zkCli.sh -timeout 5000 -server 192.168.19.162:22181
sh zkCli.sh -timeout 5000 -server 192.168.19.163:22181
12.查看zookeeper集群信息
脚本名称zk-cluster.sh
脚本内容
#!/bin/bash
for host_name in app161 app162 app163
do
echo "查看主机 ${host_name} 在集群角色:"
ssh -t learn@${host_name} 'cd /home/opt/zk/zookeeper-3.5.9/bin/ ; sh zkServer.sh status '
done
执行脚本bash zk-cluster.sh
日志信息
以上感谢。
2023年6月11日