2018/04/28@DevOps Taiwan Meetup https://devops.kktix.cc/events/meetup13-0428
加速你的Ansible王仁宏 aka Eric2018/04/28 @ DevOps Taiwan
View Slide
Hi , I’m Eric
Ansible新手(請大家鞭小力一點)
Agenda1. 故事起源2. Ansible加速3. Q&A
故事起源1. Ansible新手上路第一個月2. 剛推坑同事使用3. 該次部署主機群數量約150台4. 新增一個檔案、刪除一個檔案
同事說...雖然比以前土炮部署舒服,但Ansible執行速度好慢...
http://i.imgur.com/CrMWH0h.jpg
於是開始思考,到底慢在哪裡。
收集執行時間數據ansible-profilevim /etc/ansible/ansible.cfgcallback_whitelist = profile_tasks:wq
150台的佈署時間 (調整前)1. gathering facts時間約530秒2. 新增一個檔案時間約18秒3. 刪除一個檔案時間約17秒
565 秒
幾個小調整1. Disable gathering facts (視情況)2. Fork Process (ansible-playbook -f n)
150台的佈署時間 (調整後-1)1. gathering facts時間約530秒 -> 0秒2. 新增一個檔案時間約18秒 -> 11秒3. 刪除一個檔案時間約17秒 -> 10秒
21 秒
https://i.ytimg.com/vi/nYQyy7ZyOA8/hqdefault.jpg
沒有最快,只有更快。
Ansiblessh + python
那就從ssh開始動手腳吧。
SSH 連線再利用1. SSH PIPELINING (視情況)2. SSH Control Persist
SSH PIPELININGvim /etc/ansible/ansible.cfgpipelining=True:wq
SSH Control PersistOpenSSH 5.6 或更高vim ~/.ssh/configHost *ControlPersist 1hCompression yesControlMaster autoControlPath ~/.ssh/sockets/%[email protected]%h-%p:wq// 連線持久化保留1小時// 啟用壓縮// ssh連線共用//socket保存路徑
http://7.share.photo.xuite.net/leonchen01/176b299/8118575/320468842_m.jpg
150台的佈署時間 (調整後-2)1. gathering facts 花費時間約0秒2. 新增一個檔案的時間約11秒 -> 11秒3. 刪除一個檔案的時間約10秒 -> 4秒
15 秒
150台的佈署時間 (調整後-2)1. gathering facts 花費時間約0秒2. 新增一個檔案的時間約11秒 -> 4秒3. 刪除一個檔案的時間約4秒
8秒以後部署不用一首歌的時間,8秒就足夠 XD
同事說...這速度跑起來好爽阿...
總結1. Ansible-profile 收集數據2. Disable gathering facts (視情況)3. Fork Process (ansible-playbook -f n)4. SSH PIPELINING (視情況)5. SSH Control Persist (OpenSSH 5.6 或更高)
Thanks.ericwang8230 [at] gmail.com
Q&A歡迎大家回饋建議