Mitogen менен Ansible ылдамдатуу

Ansible абдан популярдуу бири болуп калды Системанын конфигурациясын башкаруу. Андан кийин Red Hat тарабынан сатып алынган 2015-жылы саны долбоордун катышуучулары миңдегенден ашты жана Ansible, балким, эң көп колдонулган жайгаштыруу жана оркестрлөө системасы болуп калды. Анын кеңири спектри абдан таасирдүү.

Ansible алыскы хостторго SSH байланыштары аркылуу иштейт. Ал SSH сеансын ачып, кирип, Python кодун тармак аркылуу көчүрүп, аны өзүнчө убактылуу файлга жазат. Андан кийин, ал алыскы машинада бул файлды иштетет. Бул операциялардын ырааттуулугу кыйла узун жана түйшүктүү, ошондуктан аны оптималдаштыруунун ар кандай жолдору бар.

Бул жолдордун бири болуп саналат SSH түтүктөр бул ар бир жолу жаңы сессияны ачуунун ордуна, көрсөтмөлөрдү аткаруу үчүн бир SSH сессиясын колдонууга мүмкүндүк берет, бул бизге көп убакытты үнөмдөйт. (Жөн гана өчүрүүнү унутпаңыз requiretty сиздин ичинде sudo орнотуу /etc/sudoers алыскы машинадагы файл)

Ansible'ди ашыкча кылуунун жаңы жолу - бул питон китепканасы Митоген. Эгер кимдир бирөө ал жөнүндө укпаса, мен анын функцияларын кыскача сүрөттөп берем. Ал алыскы машинада python кодун тез аткарууга мүмкүндүк берет жана Ansible колдонуунун бир эле мисалы. Mitogen алыскы машинада UNIX түтүгүн колдонот жана zlib менен кысылган жана питон менен серияланган питон кодун өткөрүп берет. Бул аны тезирээк бүтүрүүгө жана трафикти үнөмдөөгө жардам берет. Эгер сиз дагы кененирээк түшүндүрмөгө кызыксаңыз, анда ал жөнүндө баракчадан окуп чыкканыңыз жакшы "Бул кантип иштейт". Бирок бүгүн биз китепкананын Ansible менен кандай иштешине гана токтолобуз.

Митоген белгилүү бир шарттарда Ansible кодуңузду бир нече эсе тездетип, трафиктин керектөөсүн олуттуу түрдө азайтышы мүмкүн. Келгиле, эң популярдуу колдонуу учурларын карап көрөлү жана анын бизге канчалык жардам берерин карап көрөлү.

Мен Ansible'ди эң ​​көп колдоном: алыскы машинада конфигурация файлдарын түзүү, пакеттерди орнотуу, файлдарды алыскы машинага жана андан көчүрүү. Балким, сизде башка мисалдар бар - комментарийлерге жазыңыз.

Кеттик!

Ansible үчүн митоген конфигурациясы абдан жөнөкөй:
Mitogen китепканасын орнотуу:

pip install mitogen

Эми эки эквиваленттүү жол бар - же ansible.cfg конфигурация файлындагы параметрлерди конфигурациялаңыз, же керектүү чөйрө өзгөрмөлөрүн орнотуңуз.

орнотулган Mitogen жол болот деп ойлойлу /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Анда:

export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear

же

[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy

Mitogen менен жана ансыз virtualenvде Ansible орнотолу:

virtualenv mitogen_ansible
./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen
virtualenv pure_ansible
./pure_ansible/bin/pip install ansible==2.7.10

Mitogen 0.2.7 Ansible 2.8 менен иштебей турганын эске алыңыз (2019-жылдын май айына карата)

лакап аттарды жасоо:

alias pure-ansible-playbook='$(pwd)/pure_ansible/bin/ansible-playbook'
alias mitogen-ansible-playbook='ANSIBLE_STRATEGY_PLUGINS=$(pwd)/mitogen_ansible/lib/python3.7/site-packages/ansible_mitogen/plugins/strategy ANSIBLE_STRATEGY=mitogen_linear $(pwd)/mitogen_ansible/bin/ansible-playbook'

Эми алыскы машинада файлдарды түзгөн оюн китебин иштетүүгө аракет кылалы:

---
- hosts: all
  gather_facts: false
  tasks:
    - name: Create files with copy content module
      copy:
        content: |
          test file {{ item }}
        dest: ~/file_{{ item }}
      with_sequence: start=1 end={{ n }}

10 файлды түзүү үчүн аны Mitogen менен жана ансыз иштетели:

time mitogen-ansible-playbook file_creation.yml -i hosts -e n=10 &>/dev/null

real    0m2.603s
user    0m1.152s
sys     0m0.096s

time pure-ansible-playbook file_creation.yml -i hosts -e n=10 &>/dev/null

real    0m5.908s
user    0m1.745s
sys     0m0.643s

Биз 2 эсе жакшырганын көрүп жатабыз. 20, 30, ..., 100 файлдарды текшерип көрөлү:

time pure-ansible-playbook file_creation.yml -i hosts -e n=100 &>/dev/null

real    0m51.775s
user    0m8.039s
sys     0m6.305s

time mitogen-ansible-playbook file_creation.yml -i hosts -e n=100 &>/dev/null

real    0m4.331s
user    0m1.903s
sys     0m0.197s

Натыйжада аткарууну 10 эседен ашык тездеттик!
Эми ар кандай сценарийлерди сынап көрөлү жана бардыгы биз үчүн канчалык тезирээк иштээрин карап көрөлү:

  • Жергиликтүү хосттон файлдарды алыскы хостко көчүрүү үчүн скрипт (модуль менен copy):
    Mitogen менен Ansible ылдамдатуу

  • менен алыскы хостто файлдарды түзүү үчүн скрипт copy модулу:
    Mitogen менен Ansible ылдамдатуу

  • Алыскы хосттон жергиликтүү хостко файлдарды жүктөө менен сценарий:
    Mitogen менен Ansible ылдамдатуу

Келгиле, бир нече (3) алыскы машиналар менен сценарийди сынап көрөлү, мисалы файлдарды алыскы хостко көчүрүү сценарийи:
Mitogen менен Ansible ылдамдатуу

Көрүнүп тургандай, Mitogen бул сценарийлерде бизге убакытты да, трафикти да үнөмдөйт. Бирок кыйынчылык Ansibleде эмес, мисалы, дисктин же тармактын киргизүү/чыгаруусунда же башка жерде болсо, анда Митоген бизге жардам берет деп күтүү кыйын.

Келгиле, yum/dnf жана python модулдары менен пакеттерди орнотуу менен скриптти колдонуп көрөлү. Тармактын мүчүлүштүктөрүнө көз каранды болбоо үчүн пакеттер кэштелген:

---
- hosts: all
  gather_facts: false
  tasks:
    - name: Install packages
      become: true
      package:
        name:
          - samba
          - httpd
          - nano
          - ruby
        state: present

    - name: Install pip modules
      become: true
      pip:
        name:
          - pytest-split-tests
          - bottle
          - pep8
          - flask
        state: present

Mitogen менен 12 секунд талап кылынган, ансыз да ошондой эле.
Баракта Ansible баракчасы үчүн Mitogen сиз башка көрсөткүчтөрдү жана тесттерди карай аласыз. Баракта айтылгандай:

Митоген модуль иштеп жатканда ылдамдата албайт. Бул модулдун аткарылышын мүмкүн болушунча тезирээк жасай алат.

Ошондуктан, жайгаштыруудагы тоскоолдуктарды табуу маанилүү жана эгерде алар Ansible менен байланыштуу болсо, анда Mitogen сизге аларды чечүүгө жана окуу китептериңиздин аткарылышын тездетүүгө жардам берет.

Source: www.habr.com

Комментарий кошуу