linux安装zookeeper集群(zookeeper-3.5.9)
场景:在CentOS 7.9操作系统上,使用zookeeper-3.5.9版本,在三台机器上,安装Zookeeper集群。
版本:zookeeper-3.5.9,CentOS 7.9,Linux kernel-5.4.218。
1.主机规划
目标:使用三台主机部署Zookeeper集群。
主机app161;IP:192.168.19.161;端口:22181,28001,28501。
主机app162;IP:192.168.19.162;端口:22181,28001,28501。
主机app163;IP:192.168.19.163;端口:22181,28001,28501。
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
日志信息:
————————————————
原文链接:https://blog.csdn.net/zhangbeizhen18/article/details/131153837
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com