zookeeper安装
节点设置: zookeeper节点172.16.23.120,172.16.23.121,172.16.23.122
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [root@master zookeeper] # cat /etc/ansible/hosts |tail -20 ## db-[99:101]-node.example.com [all] 172.16.23.120 172.16.23.121 172.16.23.122 172.16.23.131 [master] 172.16.23.120 [nodes] 172.16.23.121 172.16.23.122 [cluster] 172.16.23.120 172.16.23.121 172.16.23.122 |
1.安装zookeeper依赖环境java,从oracle官网下载,建议jdk8,最新jdk15安装会有报错,安装完成后配置环境变量
1 2 3 4 5 6 7 8 | [root@node2 zookeeper] # cat /etc/profile.d/zookeeper.sh export JAVA_HOME= /usr/local/jdk export CLASSPATH=$JAVA_HOME /lib/ export JRE_HOME=$JAVA_HOME /jre export PATH=$PATH:$JAVA_HOME /bin export ZOOKEEPER_HOME= /usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME /bin |
2.验证java环境:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@master zookeeper] # ansible cluster -m shell -a "java -version" 172.16.23.120 | CHANGED | rc=0 >> java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) 172.16.23.121 | CHANGED | rc=0 >> java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) 172.16.23.122 | CHANGED | rc=0 >> java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) |
3.下载zookeeper:wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
4.修改配置文件:
1 2 3 4 5 6 7 8 9 10 | [root@master zookeeper] # cat conf/zoo.cfg |egrep -v "^#|^$" tickTime=2000 initLimit=10 syncLimit=5 dataDir= /usr/local/zookeeper/data dataLogDir= /usr/local/zookeeper/logs clientPort=2181 server.1=172.16.23.120:2888:3888 server.2=172.16.23.121:2888:3888 server.3=172.16.23.122:2888:3888 |
将配置文件同步到其他节点:
1 | # ansible nodes -m copy -a "src=/usr/local/zookeeper/conf/zoo.cfg dest=/usr/local/zookeeper/conf/zoo.cfg" |
然后在各节点创建节点id:
1 2 3 | # ansible 172.16.23.120 -m shell -a "echo 1 > /usr/local/zookeeper/data/myid" # ansible 172.16.23.121 -m shell -a "echo 2 > /usr/local/zookeeper/data/myid" # ansible 172.16.23.122 -m shell -a "echo 3 > /usr/local/zookeeper/data/myid" |
然后验证一下:
1 2 3 4 5 6 7 8 9 | [root@master zookeeper] # ansible cluster -m shell -a "cat /usr/local/zookeeper/data/myid" 172.16.23.120 | CHANGED | rc=0 >> 1 172.16.23.121 | CHANGED | rc=0 >> 2 172.16.23.122 | CHANGED | rc=0 >> 3 |
将zookeeper应用作为自启动:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@master zookeeper] # cat /usr/lib/systemd/system/zookeeper.service [Unit] Description=zookeeper After=network.target [Service] Type=forking Environment= "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/jdk/bin" WorkingDirectory= /usr/local/zookeeper/bin ExecStart= /usr/local/zookeeper/bin/zkServer .sh start ExecStop= /usr/local/zookeeper/bin/zkServer .sh stop Restart=on-failure [Install] WantedBy=multi-user.target |
然后分发到其他节点:
1 2 3 4 5 6 | ansible nodes -m copy -a "src=/usr/lib/systemd/system/zookeeper.service dest=/usr/lib/systemd/system/zookeeper.service" ansible cluster -m shell -a "systemctl daemon-reload" ansible cluster -m shell -a "systemctl enable zookeeper" ansible cluster -m shell -a "systemctl status zookeeper" ansible cluster -m shell -a "systemctl start zookeeper" ansible cluster -m shell -a "systemctl status zookeeper" |
查询节点状态,角色:
1 2 3 4 | [root@master zookeeper] # ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/ .. /conf/zoo .cfg Mode: leader |
如果出现如下状态:
1 2 3 4 | [root@node1 zookeeper] # ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/ .. /conf/zoo .cfg Error contacting service. It is probably not running. |
查询zookeeper的端口2181是否正常,2888,3888端口是否正常,查询应用目录下面的zookeeper.out日志文件,如果2181端口存在,而2888,3888不存在,那么表示节点之间不能正常通信,很明显的一个就是防火墙问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [root@node1 zookeeper] # ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/ .. /conf/zoo .cfg Error contacting service. It is probably not running. [root@node1 zookeeper] # systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded ( /usr/lib/systemd/system/firewalld .service; enabled; vendor preset: enabled) Active: active (running) since 二 2020-10-06 20:52:07 CST; 1h 45min ago Docs: man :firewalld(1) Main PID: 984 (firewalld) CGroup: /system .slice /firewalld .service └─984 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 10月 06 20:52:01 node1 systemd[1]: Starting firewalld - dynamic firewall daemon... 10月 06 20:52:07 node1 systemd[1]: Started firewalld - dynamic firewall daemon. [root@node1 zookeeper] # systemctl stop firewalld [root@node1 zookeeper] # systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user .target.wants /firewalld .service. Removed symlink /etc/systemd/system/dbus-org .fedoraproject.FirewallD1.service. [root@node1 zookeeper] # ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/ .. /conf/zoo .cfg Mode: follower |
关闭防火墙就能正常通信,也就能正常获取角色
1 2 3 4 5 6 7 8 9 10 11 12 | [root@master zookeeper] # ansible cluster -m shell -a "cd /usr/local/zookeeper;./bin/zkServer.sh status" 172.16.23.120 | CHANGED | rc=0 >> Mode: leaderZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/ .. /conf/zoo .cfg 172.16.23.121 | CHANGED | rc=0 >> Mode: followerZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/ .. /conf/zoo .cfg 172.16.23.122 | CHANGED | rc=0 >> Mode: followerZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/ .. /conf/zoo .cfg |
以上zookeeper就正常安装完成
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!