saltstack之master与minion无法通信

  前两天遇到了一个问题,master与其中的一个节点服务器无法通信,报错为:Minion did not return. [Not connected],下面就这个问题进行研究。

首先我们先看下这个报错信息吧,纯翻译一下:节点未返回,无法连接,这似乎是一个网络上的问题,需要进一步去排查。在解决这个问题之前我们先了解下master与minion如何进行通信:


saltstack之master与minion无法通信_第1张图片

1、minion端生成一个秘钥对,并产生一个ID值,minion服务会安装ID值命名的公钥发送给 master ,直到接受为止;

2、master认证完毕后,会将minion 端发送来的,以ID值命名的公钥存放在 /etc/salt/pki/master/minions 目录中(无扩展名);

3、master认证完毕后,会将自身的公钥发送给 minion,并存储为 /etc/salt/pki/minion/minion_master.pub.

问题描述:

[root@Pingtai-cacti script]# salt ct-beijing test.ping

ct-beijing:

Minion did not return. [Not connected]

根据这个问题现象做一下工作:

1、去对应的节点服务器上看下日志存放位置,并将日志的级别设置为debug或者直接使用命令salt-minion -l debug来看也可以

[root@localhost ~]# cat /etc/salt/minion | grep ^log_file

log_file: /var/log/salt/minion

使用tailf命令来监视下日志输出信息,看是否有些有用的信息


saltstack之master与minion无法通信_第2张图片

可以看到要认证的A地址和Initializing new SAuth for ('/etc/salt/pki/minion', 'ct-beijing', 'tcp://B:4506')这个B地址有问题,而这个地址不是我们的所要认证的master(我们的这个节点服务器上有两个master),但是我们得到的信息还是太少,但是我们可以推测一下:

是不是因为这个节点在和master进行通信的时候,由于A主机有问题,导致在上传密钥时出错呢?

去节点服务器上将另一个地址注释掉之后,成功!

在遇到这总问题时我们来总结下思路:

1、首先我们需要理解问题,知道问题所描述的意思,通过问题能了解到我们应该从哪下手,例如,not connect ,这个是无法连接的意思,也就是上面的第一步都没有完成,那很有可能是配置文件的问题

2、了解问题的意思后,我们可以通过日志信息来找出答案

3、如果日志没有看出原因,那么我们需要扩大想象力,我们可以抓包,我们可以看下master与minion本身是否能通信,如果不能通信是不是缺少一条到master的路由,还有看下防火墙策略等等

我个人喜欢用的抓包工具:

tcpdump -Annvvi 网卡地址 dst 目标ip

你可能感兴趣的:(saltstack之master与minion无法通信)