在应用程序更新和数据库更新之前以及随后启动它们之前,如何停止Cassandra节点的最佳方法是什么?目前,我正在遍历每个节点VM,并使用命令sudo service cassandra stop
停止它们,然后在完成更新后,我执行相同的操作,只是使用命令sudo service cassandra start
启动它们。节点很少,就可以了,但是我在服务器上有20个节点,这样做需要一些时间。
有没有更好/更有效的方法?
答案 0 :(得分:0)
执行此操作的方法有很多-在外壳+ for
中使用ssh
循环,使用pssh等。您只需要记住,执行滚动重新启动会更好各个Cassandra节点,因此您需要等到Cassandra重新启动。像这样:
for host in `cat your-host-list.txt`; do
ssh user@${host} 'sudo service cassandra stop && your_update_command && sudo service cassandra start
done
或使用pssh
稍微容易一些:
pssh -l user -h your-host-list.txt -p 1 -t 0 'sudo service cassandra stop && your_update_command && sudo service cassandra start
-p 1
告诉您只能并行执行一个命令t 0
指示等待执行而不会超时