Dns 如何加速ansible?

Dns 如何加速ansible?,dns,ansible,Dns,Ansible,我们最近实现了ansible。不知怎的,我们发现它真的很慢,想知道如何加速。 因此,我做了一些搜索,找到了与/etc/resolv.conf和/etc/hosts相关的,然后似乎是反向DNS问题,如下所示: 18:32:13.961094 IP 192.168.22.2.44206 > 192.168.23.2.53: 12243+ PTR? xxx.xxx.29.115.in-addr.arpa. (45) 18:32:18.966199 IP 192.168.22.2.44206 &g

我们最近实现了ansible。不知怎的,我们发现它真的很慢,想知道如何加速。 因此,我做了一些搜索,找到了与/etc/resolv.conf和/etc/hosts相关的,然后似乎是反向DNS问题,如下所示:

18:32:13.961094 IP 192.168.22.2.44206 > 192.168.23.2.53: 12243+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:18.966199 IP 192.168.22.2.44206 > 192.168.23.2.53: 12243+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:18.967019 IP 192.168.23.2.53 > 192.168.22.2.44206: 12243 NXDomain* 0/0/0 (45)
18:32:18.967986 IP 192.168.22.2.44057 > 192.168.23.2.53: 19913+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:23.973096 IP 192.168.22.2.44057 > 192.168.23.2.53: 19913+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:23.976649 IP 192.168.23.2.53 > 192.168.22.2.44057: 19913 NXDomain* 0/0/0 (45)

18:32:23.977230 IP 192.168.22.2.44997 > 192.168.23.2.53: 8795+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:28.982280 IP 192.168.22.2.44997 > 192.168.23.2.53: 8795+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:28.982980 IP 192.168.23.2.53 > 192.168.22.2.44997: 8795 NXDomain* 0/0/0 (45)
18:32:28.983550 IP 192.168.22.2.38603 > 192.168.23.2.53: 41907+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:33.988665 IP 192.168.22.2.38603 > 192.168.23.2.53: 41907+ PTR? xxx.xxx.29.115.in-addr.arpa. (45)
18:32:33.989414 IP 192.168.23.2.53 > 192.168.22.2.38603: 41907 NXDomain* 0/0/0 (45)
如你所见,做PTR需要20秒?每个节点的查询。(实际节点IP替换为xxx.xxx)。 那么,为什么ansible必须进行反向DNS查询呢?我们可以简单地禁用它吗?怎么做


顺便说一句,仅供参考,我们已经在ansible.cfg中更改了默认的“ControlPersist=30s”更长的时间,之后它确实有很大帮助。但启动连接时的反向DNS查询延迟也是绝对不可接受的。

多亏了@leucos和@CalleDybedahl,这个问题最终导致了ssh gssapi身份验证方法。将“GSSAPIAuthentication=no”附加到ansible.cfg中的ssh_参数后,就不再有PTR查询了。
仅供参考,我们也使用了~/.ssh/config,因为在我们的环境中根本没有实现GSSAPI身份验证。

在尝试加快Ansible的速度时,下面是我的观察结果

SSH尝试身份验证的顺序非常重要。对于Ansible,我们通常使用公钥身份验证。 因此,在
/etc/ansible/ansible.cfg
中添加首选身份验证条目后,速度几乎提高了17倍

ssh_args=-o ControlMaster=auto-o ControlPersist=60m-oPreferredAuthentications=publickey

以下是结果

[admin@SON-DOCM ~]$ time ansible -m ping 2405:200:xxx:xxxx::6:40
2405:200:xxx:xxxx::6:40 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

real    0m31.897s
user    0m1.307s
sys     0m0.248s
[admin@SON-DOCM ~]$ vi /etc/ansible/ansible.cfg
[admin@SON-DOCM ~]$ time ansible -m ping 2405:200:xxx:xxxx::6:40
2405:200:xxx:xxxx::6:40 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

real    0m1.882s
user    0m0.757s
sys     0m0.172s

仅供参考,使用节点重新编码制作您自己的/etc/hosts是一个选项。但是,来吧,想象成百上千吨的节点!!!kiiwii:缺少一些信息来帮助诊断这个问题。我刚刚做了一个快速测试,没有看到PTR查询触发。你能展示一个最小的playbook+目录吗?@leucos只需执行“ansible db2-a”id,在[dbs]组下定义的db2为“db2 ansible_ssh_host=115.29.xxx.xxx”。你可能应该查看ssh配置以进行反向查找,而不是ansible配置。此外,如果使用RFC1918 IP空间(本例中为192.168.x.x)严重的是,请考虑为自己设置反向服务器,而不是打击全球黑洞服务器。仍然无法复制。虽然PTR分辨率来自SSH,但它不会发射任何。尝试SSH,PARAMIKO,从来没有看到PTR Req。您最好的机会可能是“Stru-f”这个。您能试试吗?