Ansible的一些相關(guān)

(1) 模塊:copy、shell、lineinfile、replace、ping、yum
(2) 影響ansible性能的原因有兩種,一種是執(zhí)行上的資源浪費(fèi),需要對(duì)其進(jìn)行優(yōu)化; 另一種是進(jìn)程和反饋機(jī)制造成的限制,可以用async和poll 機(jī)制緩解
· ansible優(yōu)化:

  1. 關(guān)閉 gathering facts
  • ansible-playbook 的第 1 個(gè)步驟總是執(zhí)行 gather facts,不論你有沒(méi)有在 playbook 設(shè)定這個(gè) tasks。如果你不需要獲取被控機(jī)器的 fact 數(shù)據(jù)的話,你可以關(guān)閉獲取 fact 數(shù)據(jù)功能
---
- hosts: 172.16.64.240
  gather_facts: no
  remote_user: XXX
  sudo: yes | no
  roles:
  - {role: profile_test}
  1. SSH PIPElinING
  • SSH pipelining 是一個(gè)加速 Ansible 執(zhí)行速度的方法,默認(rèn)為關(guān)閉,為了兼容不同的 sudo 配置(主要是 requiretty 選項(xiàng))。如果不使用 sudo,建議開(kāi)啟,打開(kāi)此選項(xiàng)可以減少ansible執(zhí)行沒(méi)有傳輸時(shí) ssh 在被控制機(jī)器上執(zhí)行任務(wù)的連接數(shù)。
  • 如果使用 sudo,必須關(guān)閉 requiretty 選項(xiàng)
  • 通過(guò)修改/etc/ansible/ansible.cfg 文件可以開(kāi)啟 pipelining
pipelining=True
  1. ControlPersist
  • ControlPersist 特性需要高版本的 SSH 才支持,CentOS 6 默認(rèn)不支持,使用需要自行升級(jí)openssh。ControlPersist 即持久化 socket ,一次驗(yàn)證,多次通信,并且只需要修改 ssh 客戶端,即 Ansible 主機(jī)即可。
# cat ~/.ssh/config
ControlPersist 4h

# 開(kāi)啟了 ControlPersist 特性后,SSH 在建立了 sockets 之后,節(jié)省了每次驗(yàn)證和創(chuàng)建的時(shí)間。在網(wǎng)絡(luò)狀況不是特別理想,尤其是跨互聯(lián)網(wǎng)的情況下,所帶來(lái)的性能提升是非??捎^的

· 以上內(nèi)容為 ansible 調(diào)優(yōu)
· 因?yàn)閍nsible默認(rèn)最大進(jìn)程數(shù)為5,且默認(rèn)為同步執(zhí)行,只有當(dāng)上一條命令執(zhí)行結(jié)束,才會(huì)開(kāi)始執(zhí)行下一條命令,導(dǎo)致長(zhǎng)時(shí)間命令占用進(jìn)程,大大降低了并發(fā)效率,這里選擇用 async 和 poll 參數(shù)來(lái)解決,將長(zhǎng)任務(wù)扔進(jìn)后臺(tái)異步處理
· async 和 poll 介紹:讓下發(fā)的任務(wù)執(zhí)行的連接變?yōu)楫惒剑喝蝿?wù)下發(fā)之后,長(zhǎng)連接不再保持,而是每隔一段時(shí)間輪詢結(jié)果,直到任務(wù)結(jié)束

  1. async參數(shù)值代表了這個(gè)任務(wù)執(zhí)行時(shí)間的上限值。即任務(wù)執(zhí)行所用時(shí)間如果超出這個(gè)時(shí)間,則 認(rèn)為任務(wù)失敗。此參數(shù)若未設(shè)置,則為同步執(zhí)行。
  2. poll參數(shù)值代表了任務(wù)異步執(zhí)行時(shí)輪詢的時(shí)間間隔。
  3. 如果 poll 為0,代表不關(guān)心結(jié)果的任務(wù),async 為0 ,則代表一直等待這個(gè)job完成
- name: Run updatedb
  command: /usr/bin/updatedb
  async: 300
  poll: 10

  # 貌似這樣就可以解決5臺(tái)以上機(jī)子的問(wèn)題

沒(méi)有弄6臺(tái)以上機(jī)子做測(cè)試,好奇async為 0 時(shí),多臺(tái)機(jī)子的反饋機(jī)制

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容