salt-stack 多主设置 - 缓慢且不可靠我做错了什么?

如何解决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.versionfile_roots、minion 键和配置一致,还有其他注意事项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res