前两天遇到了一个问题,master与其中的一个节点服务器无法通信,报错为:Minion did not return. [Not connected],下面就这个问题进行研究。
首先我们先看下这个报错信息吧,纯翻译一下:节点未返回,无法连接,这似乎是一个网络上的问题,需要进一步去排查。在解决这个问题之前我们先了解下master与minion如何进行通信:
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命令来监视下日志输出信息,看是否有些有用的信息
可以看到要认证的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
网友评论