Tħaffef Ansible ma Mitogen

Ansible sar wieħed mill-aktar popolari Ġestjoni tal-Konfigurazzjoni tas-Sistema. Wara inxtrat minn Red Hat fl-2015 in-numru parteċipanti tal-proġett qabeż l-eluf u Ansible sar probabbilment l-aktar sistema ta’ skjerament u orkestrazzjoni użata. Il-firxa wiesgħa ta 'applikazzjonijiet tagħha hija impressjonanti ħafna.

Ansible jaħdem fuq konnessjonijiet SSH għal hosts remoti. Tiftaħ sessjoni SSH, tidħol, tikkopja l-kodiċi Python fuq in-netwerk u tikteb f'fajl temporanju separat. Wara dan, imexxi dan il-fajl fuq il-magna remota. Din is-sekwenza kollha ta 'operazzjonijiet hija pjuttost twila u tedjanti, għalhekk hemm diversi modi biex tiġi ottimizzata.

Wieħed minn dawn il-modi huwa Pipelines SSH li jippermettilek tuża sessjoni waħda SSH biex tesegwixxi struzzjonijiet, aktar milli tiftaħ sessjoni ġdida kull darba, li tista 'tiffranka ħafna ħin. (Ftakar biss li titfi requiretty iffissar għal sudo fil tiegħek /etc/sudoers fajl fuq il-magna remota)

Mod ġdid biex overclock Ansible huwa librerija python imsejħa Mitoġenu. Jekk xi ħadd ma semax biha, ser niddeskrivi fil-qosor il-funzjonalità tagħha. Jippermetti eżekuzzjoni mgħaġġla ta 'kodiċi python fuq magna remota, u Ansible huwa biss eżempju wieħed ta' użu. Mitogen juża pajp UNIX fuq il-magna remota u jittrasferixxi kodiċi python ikkompressat bi zlib u serjalizzat bil-pickle. Dan jgħin biex jitlesta aktar malajr u jiffranka t-traffiku. Jekk inti interessat fi spjegazzjoni aktar dettaljata, huwa aħjar li taqra dwarha fuq il-paġna "Kif taħdem". Imma llum se niffukaw biss fuq kif taħdem il-librerija ma' Ansible.

Mitogen f'ċerti ċirkostanzi jista 'jħaffef il-kodiċi Ansible tiegħek diversi drabi u jnaqqas b'mod sinifikanti l-konsum tat-traffiku. Ejja niċċekkjaw l-aktar każijiet ta’ użu popolari u naraw kemm tgħinna.

Jien nuża Ansible l-aktar għal: il-ħolqien ta' fajls ta' konfigurazzjoni fuq magna remota, l-installazzjoni ta' pakketti, l-ikkupjar ta' fajls minn u lejn il-magna remota. Forsi għandek eżempji oħra - ikteb fil-kummenti.

Ejja ħa mmorru!

Il-konfigurazzjoni ta' Mitogen għal Ansible hija sempliċi ħafna:
Installa l-librerija Mitogen:

pip install mitogen

Issa hemm żewġ modi ekwivalenti - jew tikkonfigura l-għażliet fil-fajl ta 'konfigurazzjoni ansible.cfg, jew issettja l-varjabbli ambjentali meħtieġa.

Ejja nassumu li t-triq għall-Mitogen installat se tkun /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Imbagħad:

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

jew

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

Ejja ninstallaw Ansible f'virtualenv, bi u mingħajr Mitogen:

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

Jekk jogħġbok innota li Mitogen 0.2.7 ma jaħdimx ma' Ansible 2.8 (minn Mejju 2019)

Nagħmlu psewdonimi:

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'

Issa ejja nippruvaw inħaddmu playbook li joħloq fajls fuq magna remota:

---
- 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 }}

U ejja nħaddmuh bi u mingħajr Mitogen biex noħolqu 10 fajls:

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

Naraw titjib doppju. Ejja niċċekkjaw għal 2, 20, ..., 30 fajl:

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

Bħala riżultat, aċċellejna l-eżekuzzjoni b'aktar minn 10 darbiet!
Issa ejja nippruvaw xenarji differenti u naraw kemm kollox jaħdem aktar malajr għalina:

  • Script għall-ikkupjar ta' fajls għal host remot minn wieħed lokali (bil-modulu copy):
    Tħaffef Ansible ma Mitogen

  • Script għall-ħolqien ta 'fajls fuq host remot ma' copy modulu:
    Tħaffef Ansible ma Mitogen

  • Xenarju bit-tniżżil ta' fajls minn host remot għal wieħed lokali:
    Tħaffef Ansible ma Mitogen

Ejja nippruvaw xenarju b'diversi (3) magni remoti, pereżempju xenarju b'ikkupjar ta' fajls lil host remot:
Tħaffef Ansible ma Mitogen

Kif tistgħu taraw, Mitogen jiffranka kemm il-ħin kif ukoll it-traffiku f'dawn ix-xenarji. Imma jekk il-konġestjoni mhix f'Ansible, iżda pereżempju fl-I/O ta 'disk jew netwerk, jew x'imkien ieħor, allura huwa diffiċli li wieħed jistenna li Mitogen se jgħinna.

Ejja nippruvaw script bl-installazzjoni ta 'pakketti b'moduli yum/dnf u python bl-użu ta' pip. Il-pakketti ġew fil-cache sabiex ma jiddependux fuq problemi tan-netwerk:

---
- 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

B'Mitogen ħadu 12-il sekonda, l-istess bħal mingħajru.
Fuq il-paġna Mitogen għall-paġna Ansible tista' tħares lejn benchmarks u testijiet oħra. Kif tgħid il-paġna:

Mitogen ma jistax iħaffef il-modulu meta jkun qed jaħdem. Jista 'biss jagħmel l-eżekuzzjoni ta' dan il-modulu malajr kemm jista 'jkun.

Għalhekk, huwa importanti li ssib il-konġestjonijiet tiegħek fl-iskjerament tiegħek u jekk huma dovuti għal Ansible, allura Mitogen jgħinek issolvihom u tħaffef b'mod sinifikanti l-eżekuzzjoni tal-playbooks tiegħek.

Sors: www.habr.com

Żid kumment