Foreman 显示服务器“不同步”,可能是什么原因以及如何正确解决此类问题?

Foreman 显示服务器“不同步”,可能是什么原因以及如何正确解决此类问题?

我工作的公司有一个 Puppet 服务器,其中安装了 Foreman。

大约有 200 台 Linux 机器由 Puppet 服务器管理。

当查看 Foreman GUI 时,大多数服务器都会出现一个绿色图标,显示“无变化”,但有些服务器会显示一个黄色/橙色图标,并带有一个工具提示,显示“不同步”。

您可以在以下屏幕截图中看到大多数服务器都显示绿色状态,只有服务器“sgproxy08”不同步: 在此处输入图片描述

puppet agent -t在 sgproxy08 服务器上运行正常完成:

[root@sgproxy08 ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for sgproxy08.sg.company.com
Info: Applying configuration version '1436862601'
Notice: Finished catalog run in 49.90 seconds
[root@sgproxy08 ~]#

现在有两个问题:

  1. 这个图标要变绿并且同步需要什么要求?
  2. 我该如何解决此类问题?

答案1

如果您使用的是 Foreman 1.8 或更低版本,仅当 Foreman 超过设置时间 5 分钟未收到该主机的任何报告时,您的主机才会显示为“不同步”木偶间隔'(在“管理”>“设置”中检查)。默认情况下,这将是35分钟。有一个'不同步间隔'设置允许您在 Foreman 1.9 上自定义此项。

为了开始排除此故障(缺少报告),我会查看/var/log/foreman/production.log您的 Foreman 箱并检查当 Puppet 完成运行时您是否收到来自该主机的报告。

答案2

我在 Foreman 中找到了通知不同步的原因。似乎这些服务器中有一个进程卡住了puppet agent -t,如下所示:

root  7531 21487  0 Aug09 ?   00:00:03 puppet agent: applying configurat

一旦我终止该进程并puppet agent -t再次运行,问题就解决了。

答案3

由于主机/服务器重启、网络问题或服务器与代理之间的 Puppet 版本不匹配,主机可能会不同步。

对于版本不匹配的问题,您可以通过“puppet agent -t”升级puppet agent以匹配服务器版本并同步主机。

如果您启用了 foreman 的 remote-execution 和 remote-execution-ssh 插件,则可以从 Foreman 控制台运行“puppet agent -t”命令来处理不同步的主机。步骤如下:

  1. 在 foreman 服务器中启用远程执行插件,可能需要重启服务器

    sudo foreman-installer --enable-foreman-plugin-remote-execution --enable-foreman-proxy-plugin-remote-execution-ssh
    
  2. 同步主机

    • 转到“主机 → 所有主机”,然后选中不同步主机旁边的复选框
    • 主机表的右上角会出现一个“选择操作”按钮。从操作列表中选择“安排远程作业”选项。
    • 在显示的表单中,保留默认值,并在“命令”文本框中复制“sudo puppet agent -t”(不带引号)。如果 puppet 二进制文件不在主机的 PATH 中,您可能需要提供 puppet 的完整路径(例如 /opt/puppetlabs/puppet/bin/puppet)。单击提交。
    • 一旦命令在主机上远程执行,它将与服务器同步,并且 Foreman 应该在几分钟后更新主机状态以同步。

相关内容