Salt Miner 不断与 Master 失去连接

Salt Miner 不断与 Master 失去连接

我正在测试 Salt。我有 3 个 VirtualBox VM 的简单测试设置 - 其中一台机器上运行 salt-master,另外两台 VM 上运行 salt-minions。

我可以启动任一个 salt minion VM,它们将连接到主服务器并接收命令。如果我启动两个 minion VM,它们都会在短时间内连接,然后其中一个会断开连接并显示为未连接到主服务器。

实际上,我甚至不需要激活多个 VM 客户端。使用 1 个 VM 客户端和 1 个 VM salt-minion,它将断开连接。

我可以重新启动 salt-minion,它会重新连接到 master 并再次接收命令……至少需要几分钟。最终,它会在 master 上显示为断开连接。在调试中运行 salt-minion 似乎没有显示任何内容来解释为什么它在 master 上显示为断开连接。

这可能是什么原因造成的?

编辑:

我使用的操作系统是 Ubuntu 14.04。除了 salt-master 包之外,主服务器和从服务器环境相同。--versions-report在主服务器和从服务器上运行会得到以下版本:

             Salt: 2015.5.3
            Python: 2.7.6 (default, Mar 22 2014, 22:59:56)
            Jinja2: 2.7.2
          M2Crypto: 0.21.1
    msgpack-python: 0.3.0
      msgpack-pure: Not Installed
          pycrypto: 2.6.1
           libnacl: Not Installed
            PyYAML: 3.10
             ioflo: Not Installed
             PyZMQ: 14.0.1
              RAET: Not Installed
               ZMQ: 4.0.4
              Mako: Not Installed
           Tornado: Not Installed
Debian source package: 2015.5.3+ds-1trusty1

答案1

连接问题通常是由 ZMQ 库(低于 4.XX)和/或 salt 版本引起的。请salt --versions-report在 master 上运行,salt-call --versions-report以查看您正在使用的版本。您应该运行:

Salt: 2015.5.3
...
ZMQ: 4.0.5

您还应该尝试使用简单的 vagrant-salt 演示。请注意,您需要将 vagrant 文件中的 salt 版本更改为“2015.5.3”

您尚未指定所使用的操作系统或 Salt 版本,但 salt 使用的 zmq 包存在持续问题,导致连接缓慢和掉线。强烈建议升级 zmq 包:(这是基于 redhat 的 sls 文件)

{% if grains['os'] in ('RedHat', 'CentOS', 'Fedora') %}
  {% if grains['os'] == 'Fedora' %}
    {% set repotype = 'fedora' %}
  {% else %}
    {% set repotype = 'epel' %}
  {% endif %}
saltstack-zeromq4:
  pkgrepo.managed:
    - humanname: Copr repo for zeromq4 owned by saltstack
    - baseurl: http://copr-be.cloud.fedoraproject.org/results/saltstack/zeromq4/{{ repotype }}-$releasever-$basearch/
    - gpgcheck: 0
    - skip_if_unavailable: True
    - enabled: 1
{% endif %}

{% if grains['os'] in ('RedHat', 'CentOS', 'Fedora') %}
update_zmq:
  pkg:
    - latest
    - pkgs:
      - zeromq
      - python-zmq
    - order: last
  cmd:
    - wait
    - name: echo service salt-minion restart | at now + 1 minute
    - watch:
      - pkg: update_zmq
{% endif %}

另一个“黑客”方法是每隔一分钟左右 ping 一次机器,只需将其添加到 salt-master minion 配置中:

"salt '*' test.ping > /dev/null":
  cron.present:
    - user: root
    - minute: '*/1'

你也可以通过设置master_alive_intervalminion 配置文件中的选项。

相关内容