ansible-配置文件優化-性能調優


ansible-配置文件詳解:
ansible默認配置文件為/etc/ansible/ansible.cfg,配置文件中可以對ansible進行各項參數的調整,包括並發線程、用戶、模塊路徑、配置優化等,
如下為ansible.cfg常用參數詳解:

[defaults]                                     #通用默認配置段
inventory  = /etc/ansible/hosts                #被控制端IP或者DNS列表
library  = /usr/share/my_modules/              #ansible默認搜尋模塊的位置
remote_tmp  = $HOME:/.ansible/tmp              #ansible遠程執行臨時文件
forks  = 100                                   #並行進程數
sudo_user  = root                              #sudo遠程執行用戶名
ask_sudo_pass  = True                          #使用sudo,是否需要輸入密碼
ask_pass  = True                               #是否需要輸入密碼
remote_port  = 22                              #遠程SSH端口
module_lang  = C                               #模塊和系統之間通信的語言
host_key_checking  = False                     #檢查遠程主機密鑰
#sudo_exec  = sudo                             #sudo遠程執行命令
#sudo_flags  = -H                              #傳遞sudo之外的參數
timeout  = 10                                  #SSH超時時間
remote_user  = root                            #遠程登陸用戶名
log_path  = /var/log/ansible.log               #日志文件存放路徑
module_name  = command                         #ansible命令執行默認的模塊
#executable  = /bin/bash                       #執行的shell環境,使用shell模塊
#system_marnings  = True                       #禁用系統運行ansible潛在問題警告
#command_warnings  = False                     #command模塊ansible模塊默認發出的警告
#nocolor  = 1                                  #輸出帶上顏色區別,開啟/關閉: 0/1
pipelining  = False                            #開啟pipe SSH通道優化
 
ansible-性能調優:
ansible企業實戰環境中,如果管理的服務器越來越多,ansible執行效率會變得比較慢,可以通過優化ansible提供工作效率,由於ansible基於SSH協議通信,SSH連接慢會導致整個基於ansible執行變得緩慢,也需要對openssh進行優化,具體優化的方法如下:
1)ansible SSH 關閉密鑰檢測:
默認以SSH登錄客戶端服務器,會檢查遠程主機的公鑰(public key),並將該主機的公鑰記錄在/root/.ssh/known_hosts文件中。下次訪問相同主機時,openssh會核對公鑰,如果公鑰不同,openssh發出警告,如果公鑰相同,則提示輸入密碼。
SSH對主機的public_key的檢查等級時根據StrictHostKeyCheking變量來設定的,StrictHostKeyCheking檢查級別包括: no(不檢查)、ask(詢問)、yes(每次都檢查)、False(關閉檢查)。
ansible配置文件中加入代碼,即可關閉StrictHostKeyCheking檢查:
host_key_checking = False

 

 

2)openssh連接優化:
使用openssh服務時,默認服務器配置文件UseDNS=YES狀態,該選項會導致服務器根據客戶端的IP地址進行DNS PTR反向解析,得到客戶端的主機名,然后根據獲取到的主機名進行DNS正向A記錄查詢,並驗證該IP是否於原始IP一致。關閉DNS解析代碼如下:(遠程客戶端關閉,關閉后重新啟動/加載生效)

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

/etc/init.d/sshd restart
/usr/sbin/sshd reload
systemctl reload sshd

 

 

 

 3)SSH pipelining加速Ansible:

SSH pipelining是一個加速 ansible 執行速度的簡單方法,SSH pipelining默認時關閉的,關閉時為了兼容不同的sudo 配置,主要requiretty 選項。
如果不使用sudo建議開啟該選項,打開此選項可以減少ansible 執行沒有文件傳輸時,SSH在被控制機器上執行任務的連接數。使用sudo操作的時候,必須在所有被管理的主機講配置文件/etc/sudoers中requiretty 選項禁用。
sed    -i    '/^pipelining/s/False/True/g'    /etc/ansible/ansible.cfg

 

 

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

ansible facts組件主要用於收集客戶端設備的基礎靜態信息,這些信息可以在做配置管理的時候方便引用。 Facts信息直接當作ansible playbook變量信息引用,通過定制fastc以便收集我們想要的信息,同時可通過Facts和ohai來拓展facts信息,也可以講facts信息存入redis緩存中,如下為facts使用redis緩存的步驟:

1.部署redis服務:
wget http://download.redis.io/releases/redis-2.8.13.tar.gz
tar xf redis-2.8.13.tar.gz
cd redis-2.8.13
make PREFIX=/usr/local/redis install
cp redis.conf  /usr/local/redis/
將/usr/local/redis/bin/目錄加入至環境變量文件/etc/profile末尾,讓shell終端執行 source /etc/profile 讓環境變量生效。
export PATH=/usr/local/redis/bin:$PATH
source /etc/porfile
啟動及停止redis服務命令:(后台運行)
nohup /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf &
2.安裝python redis 模塊:
easy_install pip
pip install redis

 

 

 

 3.ansible整合redis配置(注意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

 

 4.測試redis緩存:

ansible-playbook執行nginx_wget.yaml劇本文件:

ansible-playbook nginx_wget.yaml

檢查redis服務器,facts key已存入redis中:

 

 5)ControlPersist SSH優化:

ControlPersist特性需要搞版本的SSH支持,centos6默認時不支持的,如果需要使用,需要升級openssh。
ControlPersist即持久化的socket,一次驗證多次通信。並且只需要修改SSH客戶端配置,也即ansible被管理主機。
可使用YUM或者源碼編譯升級openssh服務,升級完畢ControlPersist的設置方法如下: 在其用戶的加目錄創建config文件,如果ansible以root用戶登錄客戶端,至需要在客戶端的/root/.ssh/config 文件中添加如下代碼即可:

  Host *  
Compression yes   ServerAliveInterval
60   ServerAliveCountMax 5   ControlMaster auto   ControlPath ~/.ssh/%r@%h-%p   ControlPersist 4h

開啟ControlPersist 特性后,SSH 在建立sockets后,節省每次驗證和創建的時間,對ansible 執行速度提升非常明顯得。
創建ssh_config.sh腳本:
anible服務端 使用script模塊運行腳本 (到遠程端執行):time是測試anible的處理速度:

time ansible all -m script -a "/data/sh/ssh_config.sh"
time ansible all -a "cat /root/.ssh/config"

 

 

 

 

 

 


免責聲明!

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



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