Ansible性能調優


Ansible企業實戰環境中,如果管理的服務器越來越多,Ansibe執行效率會變得比較慢,可以通過優化Ansible提供工作效率,由於Ansible基於SSH協議通信,SSH連接慢會導致整個基於Ansible執行變得緩慢,也需要對Openssh進行優化,具體優化的方法如下:

1.關閉ansible的SSH密鑰檢測

ansible默認是以ssh來實現遠程推送執行的,是基於ssh秘鑰檢測,會檢測遠程主機的公鑰,並記錄在本地中known_host文件中,下次訪問主機時,會核對公鑰,如果公鑰不同,openssh會發出警告,如果相同,會提示輸入密碼

SSH對主機的public_key的檢查等級是根據StrictHostKeyChecking變量來設定的,StrictHostKeyChecking檢查級別包括:no(不檢查)、ask(詢問)、yes(每次都檢查)、False(關閉檢查)。

 #vim  /etc/ansible/ansible.cfg 

host_key_checking = False    #關閉StrictHostKeyChecking檢查

使用OpenSSH服務時,默認服務器端配置文件UseDNS=YES狀態,該選項會導致服務器根據客戶端的IP地址進行DNS PTR反向解析,得到客戶端的主機名,然后根據獲取到的主機名進行DNS正向A記錄查詢,並驗證該IP是否與原始IP一致。關閉DNS解析代碼如下:

2.openssh鏈接優化

sed  -i  '/^GSSAPI/s/yes/no/g;/UseDNS/d;/Protocol/aUseDNS no' /etc/ssh/sshd_config

SSH pipelining是一個加速 Ansible 執行速度的簡單方法,SSH pipelining 默認是關閉的,關閉是為了兼容不同的 sudo 配置,主要是requiretty 選項。

3. SSH pipelining加速Ansible

如果不使用Sudo建議開啟該選項,打開此選項可以減少Ansible 執行沒有文件傳輸時,SSH在被控機器上執行任務的連接數。使用Sudo操作的時候, 必須在所有被管理的主機上將配置文件/etc/sudoers中requiretty選項禁用。

Ansible-playbook 在執行過程中,默認會執行Gather facts,如果不需要獲取客戶端的fact數據的話,可以關閉獲取fact數據功能,關閉之后可以加快ansible-playbook的執行效率。如需關閉fact功能,在playbook yaml文件中加入如下代碼即可:

sed    -i    '/^pipelining/s/False/True/g'    /etc/ansible/ansible.cf

4. Ansible Facts緩存優化

gather_facts: nogather_facts: no

5.部署Redis服務Ansible facts組件主要用於收集客戶端設備的基礎靜態信息,這些信息可以在做配置管理的時候方便引用。Facts信息直接當做Ansible Playbook變量信息進行引用,通過定制facts以便收集我們想要的信息,同時可以通過Facter和Ohai來拓展facts信息,也可以將facts信息存入Redis緩存中,如下為Facts使用Redis緩存的步驟。

wget      http://download.redis.io/releases/redis-2.8.13.tar.gz

tar       zxf                redis-2.8.13.tar.gz

cd          redis-2.8.13

make     PREFIX=/usr/local/redis  install

cp       redis.conf     /usr/local/redis/
export PATH=/usr/local/redis/bin:$PATH    #將/usr/local/redis/bin/目錄加入至環境變量配置文件/etc/profile末尾,然后Shell終端執行source /etc/profile讓環境變量生效。
nohup /usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf  &

 

安裝Python Redis模塊

easy_install pip

pip install redis

Ansible整合Redis配置

在配置文件/etc/ansible/ansible.cfg中defaluts段中加入代碼,如果redis密碼為admin,則開啟admin密碼行:

gathering = smart

fact_caching = redis

fact_caching_timeout = 86400

fact_caching_connection = localhost:6379

#fact_caching_connection = localhost:6379:0:admin

 

#Ansible-playbook執行nginx_wget.yaml劇本文件,測試Redis緩存

ansible-playbook    nginx_wget.yaml

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM