Ansible性能調優

Ansible企業實戰環境中,若是管理的服務器愈來愈多,Ansibe執行效率會變得比較慢,能夠經過優化Ansible提供工做效率,因爲Ansible基於SSH協議通訊,SSH鏈接慢會致使整個基於Ansible執行變得緩慢,也須要對Openssh進行優化,具體優化的方法以下:nginx

1.關閉ansible的SSH密鑰檢測redis

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

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

 #vim  /etc/ansible/ansible.cfg 服務器

host_key_checking = False    #關閉StrictHostKeyChecking檢查ssh

使用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_configui

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

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

相關文章
相關標籤/搜索