zookeeper集群自动启动脚本
我们有三台服务器分别是:
node1:192.168.159.128
node2:192.168.159.130
node3:192.168.159.131
我们发现每次启动zookeeper集群都要在每一个服务器中启动一遍,如果集群很大,开启zookeeper都将成为一个很麻烦的事情,我们考虑在某一个服务器里写一个脚本,让它可以自动的启动所有zookeeper集群。
我们先停掉3个节点的 zookeeper服务。
我们可以通过ssh实现上述需求。原理:我们可以在一台服务器通过ssh访问其他服务器及操作:ssh 192.168.159.130 /usr/local/zookeeper-3.4.14/bin/zkServer.sh start
原理剖析:
1.我们在node1中首先配置免密ssh登录node2和node3
在node1,首先生成密钥
ssh-keygen
2.将密钥拷到node2和node3
ssh-copy-id 192.168.159.130
ssh-copy-id 192.168.159.131
3.分别在node2和node3中验证是否得到node1的密钥 authorized_keys
ll.sh
4.验证发现node2和node3中都有node1的密钥。此时node1实现了对node2和node3的免密登录
5.在node1中首先开启自己的zookeeper,然后依次通过ssh远程开启node2和node3的zookeeper。经验证可以成功开启。
node1:
查看node1的节点状态:
查看node2和node3的节点状态
通过实际操作验证了上述原理的正确性。这样我们就可以基于上述原理在node1中编写同时开启3个节点的脚本。
1.在root下创建一个文件夹bin
mkdir bin
2.
2.进入bin中创建start.sh,并编写
cd bin
touch start.sh
vi start.sh
3.编写文件
#!/bin/sh
echo "start zookeeper.."
for i in 128,130,131
do
ssh 192.168.159.$i /usr/local/zookeeper-3.4.14/bin/zkServer.sh start
done
4.启动脚本,看是否能启动集群
集群全部启动了!!但是我们发现还是要输入一次密码,原来是自己连接自己也需要配置密钥。这里大家自己配一下就可以了。