在多台主机上调用ansible任务时出现延迟,尽管使用了'async'
我试图从ansible playbook在多台主机上调用REST API,但不希望这是一个阻塞操作,所以使用async和poll 我假设任务的调用应该在没有任何巨大延迟的情况下完成。 但是从日志中我看到每次调用之间有大约2-3秒的延迟在多台主机上调用ansible任务时出现延迟,尽管使用了'async',ansible,Ansible,我试图从ansible playbook在多台主机上调用REST API,但不希望这是一个阻塞操作,所以使用async和poll 我假设任务的调用应该在没有任何巨大延迟的情况下完成。 但是从日志中我看到每次调用之间有大约2-3秒的延迟 2018-05-28 *11:26:51* ,530 p=7744 u=ops | TASK [Perform operation on Multiple Nodes] ************************************* 2018-05-
2018-05-28 *11:26:51* ,530 p=7744 u=ops | TASK [Perform operation on Multiple Nodes] *************************************
2018-05-28 *11:26:53* ,871 p=7744 u=ops | ok: [localhost] => (item={u'a': u'host0', u'ipAddress':', u'port': u''})
2018-05-28 *11:26:56* ,095 p=7744 u=ops | ok: [localhost] => (item={u'a': u'host1', u'ipAddress': u'', u'': u''})
2018-05-28 *11:26:58* ,324 p=7744 u=ops | ok: [localhost] => (item={u'a': u'host2', u'ipAddress': u'', u'port': u''})
如何减少调用延迟?首先,async用于允许Ansible在不等待当前任务完成的情况下继续执行其他任务。这并不意味着ansible将在所有主机上同时执行此任务,只会影响以下任务
为此,您可以在运行playbook时使用-forks选项。此选项设置允许ansible设置的并行连接或进程的数量。当-forks=3时,您告诉ansible并行执行3个主机进程
无论如何,forks的默认值是5,所以除非您更改它,否则这应该不是问题
如果需要更高的速度,请检查ssh管道和多路复用是否已启用。确保ansible配置文件中的以下行:
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = true
有关此选项的文档,请单击此处:
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = true