我在 centos 7 上使用 Hadoop apache 2.7.1,我的集群是 ha 集群,我使用 zookeeper quorum 进行自动故障转移
但我想自动化 zookeeper 的启动过程,当然在 shell 脚本中我们必须先停止防火墙,以便其他仲裁元素能够联系当前的 zookeeper 元素
我在 /etc/rc.d/rc.local 中编写以下脚本
主机名 jn1
systemctl stopfirewalld(停止防火墙)
ZOOKEEPER ='/usr/local/zookeeper-3.4.9/'源/etc/rc.d/init.d/functions
源$ZOOKEEPER/bin/zkEnv.sh
守护进程--用户root$ZOOKEEPER/bin/zkServer.sh启动
但我面临的问题是,当我发出命令时
systemctl 在 rc.local 中停止firewalld
并在主机启动后发出 zkServer 状态,我收到错误
ZooKeeper JMX 默认启用 使用配置:/usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg 联系服务时出错。它可能没有运行。
但是如果我不使用脚本执行相同的命令,这意味着我的主机启动后会像正常过程一样
systemctl 状态防火墙
zkServer启动
没有问题,zkstatus 显示其模式
我注意到在主机启动后执行 rc.local 脚本和执行正常命令时 zookeeper.out 日志中的差异
不同之处在于在正常命令中读取服务器环境执行
停止 rc.local 脚本的防火墙对服务器环境有何影响以及如何处理?
答案1
我对停止和重新启动防火墙的情况很头疼
我发现在 rc.local 停止防火墙是假停止
因为我根本不想让防火墙工作,所以我最终得到了以下解决方案
systemctl disablefirewalld(系统防火墙禁用)
https://www.rootusers.com/how-to-disable-the-firewall-in-centos-7-linux/
因此防火墙在任何启动时都不会再次工作