如何解决salt-stack 多主设置 - 缓慢且不可靠我做错了什么?
我必须使用 Saltstack 3002 管理大约 600 个 ubuntu (16.04-20.04) 服务器的集群。
我决定为负载分配和容错安装一个多主设置。 salt-syndic 对我来说似乎不是正确的选择。相反,我认为salt-minions应该在minion开始时随机(?)从列表中选择一个master。所以我的配置如下(摘录):
大师:
auto_accept: True
master_sign_pubkey: True
master_use_pubkey_signature: True
仆从:
master:
- saltmaster001
- saltmaster002
- saltmaster003
verify_master_pubkey_sign: True
retry_dns: 0
master_type: failover
random_master: True
(如您所见,三位盐大师)。我基本上遵循了本教程:https://docs.saltstack.com/en/latest/topics/tutorials/multimaster_pki.html
现在,它不能很好地工作......出于各种原因:
salt 'tnscass*' test.ping
tnscass011.mo-mobile-prod.ams2.cloud:
True
tnscass010.mo-mobile-prod.ams2.cloud:
True
tnscass004.mo-mobile-prod.ams2.cloud:
True
tnscass005.mo-mobile-prod.ams2.cloud:
Minion did not return. [Not connected]
tnscass003.mo-mobile-prod.ams2.cloud:
Minion did not return. [Not connected]
tnscass007.mo-mobile-prod.ams2.cloud:
Minion did not return. [Not connected]
仅当目标 minions 意外连接到您发出 salt 命令的 master 而不是任何其他 master 时,Salt 才会在 master 工作上运行。在上面的示例中,如果您在不同的 master 上运行它,对于不同的 minion,响应将为 True。
所以唯一的方法是在特定的 minion 上使用 salt-call。不是很有用。即使这样也不能很好地工作,例如:
root@minion:~# salt-call state.apply
[WARNING ] Master ip address changed from 10.48.40.93 to 10.48.42.32
[WARNING ] Master ip address changed from 10.48.42.32 to 10.48.42.35
所以minion决定切换到另一个master并且salt-call需要很长时间......决定minion决定切换的条件的规则没有解释(至少我找不到任何东西)......这是主人的负担吗?连接的minions数量?...
另一个问题是盐矿。我使用的代码如下:
salt.saltutil.runner('mine.get',tgt='role:mopsbrokeraggr',fun='network.get_hostname',tgt_type='grain')
不幸的是,地雷的值因小兵而异,因此地雷也无法使用。
我要提一下,我的master是16核128GB内存的大机器,所以这不是资源短缺的问题。
对我来说,https://docs.saltstack.com/en/latest/topics/tutorials/multimaster_pki.html 中描述的场景根本根本不起作用。
- 那么,如果有人能告诉我如何使用 3 个 saltmaster 来创建正确的设置以进行负载分配?
- salt-syndic 实际上是更好的方法吗?
- salt-syndic 是否可以用于根据负载或其他因素将 Minion 随机分配给 Master?
- 上述教程的目的是什么?还是我忽略了什么?
解决方法
在有关此方法的文档中,有几条语句值得注意。引用问题中的 link :
第一个接受minion的master,被minion使用。如果 master 还不知道 minion,则视为已接受,并且 minion 留在该 master 上。
然后
应在 Minion 当前连接的 master 上运行 test.version 以测试连接性。
所以这似乎表明minion一次只连接一个master。这意味着只有 master 可以在该 minion 上运行 %c
(而不是任何其他 master)。
您的问题的主要目标之一可以通过不同的多主设置方法来满足:https://docs.saltproject.io/en/latest/topics/tutorials/multimaster.html
简而言之,您使用相同的 PKI 密钥对配置了 1 个以上的主服务器。在下面的解释中,我有一个带有 2 个服务器的多主设置。我在第二台服务器上使用我的第一台/主服务器上的以下文件。
test.version
然后在/etc/salt/pki/master/master.pub
/etc/salt/pki/master/master.pem
中为多个master配置salt-minion:
/etc/salt/minion
重新启动相应的服务后,您可以使用 masters:
- master1
- master2
来检查 所有 Minion 是否在 两个 master 上都可用:
salt-key -L
一旦两个 master 上都接受了所有 Minion 的密钥,我们就可以从其中一个 master 运行 # salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
minion1
minion2
minion3
...
Rejected Keys:
并访问所有 minions。
关于如何在上面引用的链接中保持主服务器之间的 salt '*' test.version
、file_roots
、minion 键和配置一致,还有其他注意事项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。