当我们同时维护着几百、几千或几万个系统节点时,系统节点当机、Minion服务僵死或网络异常等事件的发生概率同样在成倍提升。
那么,怎样及时发现和定位到我们失去联系了的SaltStack Minions节点呢?
最理想的方法,仍然是通过Salt Master与Minions间的定时通信来确认Minions的健康状态。
下面就为大家介绍两个比较实用也很有趣的办法,只要定期执行一下,就能把已经掉队的Minions给暴露出来。
使用Salt 的verbose选项
在运行salt命令时使用verbose(-v)选项,因为对于任何超时的Minions,它将显示“Minion did not return”。
# salt -v '*' test.ping
Executing job with jid 20190815231552564284
-------------------------------------------
production-test-node5:
True
production-test-master:
True
production-test-node1:
True
test-service-1:
True
test-abc2:
Minion did not return. [Not connected]
test_wiki:
Minion did not return. [Not connected]
test-salt:
Minion did not return. [No response]
test-dx:
Minion did not return. [Not connected]
- 这个办法还不算是特别的理想,因为健康与不健康的节点是混在一起返回的。
使用Salt manage.down
运行器
运行器,即salt runners,是在Salt Master节点上执行的一个管理功能。
下面的这个salt runners便是专为检测和暴露那些失联的Minions所设计的:
salt.runners.manage.down(removekeys=False, tgt='*', tgt_type='glob', timeout=None, gather_job_timeout=None)
- 注意,自2017.7版本起,原
expr_form
选项被重命名为了tgt_type
打印所有当机或无响应的Salt Minions的列表。还可以选择从Master上删除掉那些服务当机的minons的密钥。
# salt-run manage.down
- a-bc1
- a-production-t-01
- a-production-t-02
- a-production-t-03
- a-production-t-04
- a-production-t-05
- a-production-t-06
- a-production-t-07
如果是说,在找出失联节点的同时,即清除掉其密钥信息:
salt-run manage.down removekeys=True
当你有成千上万个minons时,建议分组做健康检测:
salt-run manage.down tgt="a*" tgt_type="glob"
salt-run manage.down tgt="webservers" tgt_type="nodegroup"