盐奴隶继续失去与主的联系

我正在testing盐。 我有一个简单的3个VirtualBox虚拟机的testing设置 – 在其中一台机器上运行salt-master,在另外两台虚拟机上运行salt-minions。

我可以启动salt minion虚拟机的任何一个,他们将连接到主和接收命令。 如果我启动两个虚拟机,它们都会短时间连接,然后一个虚拟机会掉线并显示为未连接主机。

实际上,我甚至不需要有多个VM客户端处于活动状态。 有1个虚拟机客户端和1个VM虚拟机,它会断开连接。

我可以重新启动salt-minion,它会重新连接到master并且再次接收命令…至less几分钟。 最终,它会显示为主连接断开。 在debugging中运行salt-minion似乎没有显示任何解释为什么它在主服务器上显示为断开连接。

什么可能导致这个?

编辑:

我使用的操作系统是Ubuntu 14.04。 主人和奴才环境是相同的,除了盐主包。 在master和minion上运行--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 

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

 Salt: 2015.5.3 ... ZMQ: 4.0.5 

你也应该尝试用一个简单的stream浪盐演示重现这个问题。 请注意,您需要将vagrant文​​件中的salt版本更改为“2015.5.3”

您尚未指定您正在使用的操作系统或盐版本,但是盐使用的zmq软件包存在持续的问题,导致连接速度缓慢且丢失。 强烈build议升级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 config:

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

您也可以通过在master_alive_intervalconfiguration文件中设置master_alive_interval选项来ping从主控端的主控端。