Upgrade to Pro — share decks privately, control downloads, hide ads and more …

加速你的Ansible

Eric
April 28, 2018

 加速你的Ansible

2018/04/28@DevOps Taiwan Meetup
https://devops.kktix.cc/events/meetup13-0428

Eric

April 28, 2018
Tweet

More Decks by Eric

Other Decks in Technology

Transcript

  1. 加速你的Ansible
    王仁宏 aka Eric
    2018/04/28 @ DevOps Taiwan

    View Slide

  2. Hi , I’m Eric

    View Slide

  3. Ansible新手
    (請大家鞭小力一點)

    View Slide

  4. Agenda
    1. 故事起源
    2. Ansible加速
    3. Q&A

    View Slide

  5. 故事起源
    1. Ansible新手上路第一個月
    2. 剛推坑同事使用
    3. 該次部署主機群數量約150台
    4. 新增一個檔案、刪除一個檔案

    View Slide

  6. 同事說...
    雖然比以前土炮部署舒服,
    但Ansible執行速度好慢...

    View Slide

  7. http://i.imgur.com/CrMWH0h.jpg

    View Slide

  8. 於是開始思考,到底慢在哪裡。

    View Slide

  9. 收集執行時間數據
    ansible-profile
    vim /etc/ansible/ansible.cfg
    callback_whitelist = profile_tasks
    :wq

    View Slide

  10. View Slide

  11. 150台的佈署時間 (調整前)
    1. gathering facts時間約530秒
    2. 新增一個檔案時間約18秒
    3. 刪除一個檔案時間約17秒

    View Slide

  12. 565 秒

    View Slide

  13. 幾個小調整
    1. Disable gathering facts (視情況)
    2. Fork Process (ansible-playbook -f n)

    View Slide

  14. 150台的佈署時間 (調整後-1)
    1. gathering facts時間約530秒 -> 0秒
    2. 新增一個檔案時間約18秒 -> 11秒
    3. 刪除一個檔案時間約17秒 -> 10秒

    View Slide

  15. 21 秒

    View Slide

  16. https://i.ytimg.com/vi/nYQyy7ZyOA8/hqdefault.jpg

    View Slide

  17. 沒有最快,只有更快。

    View Slide

  18. Ansible
    ssh + python

    View Slide

  19. 那就從ssh開始動手腳吧。

    View Slide

  20. SSH 連線再利用
    1. SSH PIPELINING (視情況)
    2. SSH Control Persist

    View Slide

  21. SSH PIPELINING
    vim /etc/ansible/ansible.cfg
    pipelining=True
    :wq

    View Slide

  22. SSH Control Persist
    OpenSSH 5.6 或更高
    vim ~/.ssh/config
    Host *
    ControlPersist 1h
    Compression yes
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%[email protected]%h-%p
    :wq
    // 連線持久化保留1小時
    // 啟用壓縮
    // ssh連線共用
    //socket保存路徑

    View Slide

  23. http://7.share.photo.xuite.net/leonchen01/176b299/8118575/320468842_m.jpg

    View Slide

  24. 150台的佈署時間 (調整後-2)
    1. gathering facts 花費時間約0秒
    2. 新增一個檔案的時間約11秒 -> 11秒
    3. 刪除一個檔案的時間約10秒 -> 4秒

    View Slide

  25. 15 秒

    View Slide

  26. 150台的佈署時間 (調整後-2)
    1. gathering facts 花費時間約0秒
    2. 新增一個檔案的時間約11秒 -> 4秒
    3. 刪除一個檔案的時間約4秒

    View Slide

  27. 8秒
    以後部署不用一首歌的時間,8秒就足夠 XD

    View Slide

  28. 同事說...
    這速度跑起來好爽阿...

    View Slide

  29. 總結
    1. Ansible-profile 收集數據
    2. Disable gathering facts (視情況)
    3. Fork Process (ansible-playbook -f n)
    4. SSH PIPELINING (視情況)
    5. SSH Control Persist (OpenSSH 5.6 或更高)

    View Slide

  30. Thanks.
    ericwang8230 [at] gmail.com

    View Slide

  31. Q&A
    歡迎大家回饋建議

    View Slide