Ansible kiirendamine Mitogeniga

VĂ”imalik sai ĂŒheks populaarsemaks SĂŒsteemi konfiguratsiooni haldus... PĂ€rast ostis Red Hat 2015. aastal number projektis osalejad ĂŒletas tuhandeid ja Ansiblest sai ilmselt enimkasutatav juurutus- ja orkestreerimissĂŒsteem. Selle lai valik rakendusi on vĂ€ga muljetavaldav.

Ansible töötab SSH-ĂŒhenduste kaudu kaughostidega. See avab SSH-seansi, logib sisse, kopeerib Pythoni koodi ĂŒle vĂ”rgu ja kirjutab selle eraldi ajutisse faili. PĂ€rast seda kĂ€ivitab see selle faili kaugmasinas. Kogu see toimingute jada on ĂŒsna pikk ja tĂŒĂŒtu, nii et selle optimeerimiseks on erinevaid vĂ”imalusi.

Üks neist viisidest on SSH torujuhtmed mis vĂ”imaldab teil kasutada ĂŒhte SSH-seanssi juhiste tĂ€itmiseks, selle asemel, et avada iga kord uus seanss, mis vĂ”ib sÀÀsta palju aega. (Pidage meeles, et lĂŒlitate vĂ€lja requiretty teie sudo seadistus /etc/sudoers fail kaugmasinas)

Uus viis Ansible'i kiirendamiseks on pythoni raamatukogu nimega Mitogeen. Kui keegi pole sellest kuulnud, siis kirjeldan lĂŒhidalt selle funktsionaalsust. See vĂ”imaldab pythoni koodi kiiret kĂ€ivitamist kaugmasinas ja Ansible on vaid ĂŒks nĂ€ide selle kasutamisest. Mitogen kasutab kaugmasinas UNIX-i toru ja edastab zlib-iga tihendatud ja serialiseeritud pythoni koodi. See aitab selle kiiremini lĂ”pule viia ja sÀÀstab liiklust. Kui olete huvitatud tĂ€psemast selgitusest, on kĂ”ige parem selle kohta lugeda lehelt "Kuidas see töötab". Kuid tĂ€na keskendume ainult sellele, kuidas raamatukogu Ansiblega töötab.

Mitogeen vÔib teatud asjaoludel teie Ansible koodi mitu korda kiirendada ja liikluskulu oluliselt vÀhendada. Vaatame kÔige populaarsemaid kasutusjuhtumeid ja vaatame, kui palju see meid aitab.

Kasutan Ansible'i kÔige enam: konfiguratsioonifailide loomiseks kaugmasinas, pakettide installimiseks, failide kopeerimiseks kaugmasinasse ja sealt. VÔib-olla on teil muid nÀiteid - kirjutage kommentaaridesse.

Mine!

Ansible'i mitogeeni konfiguratsioon on vÀga lihtne:
Installige mitogeeni teek:

pip install mitogen

NĂŒĂŒd on kaks samavÀÀrset vĂ”imalust – kas seadistada suvandid ansible.cfg konfiguratsioonifailis vĂ”i mÀÀrata vajalikud keskkonnamuutujad.

Oletame, et tee paigaldatud mitogeeni saab olema /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. SeejÀrel:

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

vÔi

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

Installime Ansible'i virtualenv'i koos Mitogeniga ja ilma:

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

Pange tÀhele, et Mitogen 0.2.7 ei tööta koos versiooniga Ansible 2.8 (2019. aasta mai seisuga)

Alinimede tegemine:

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'

Proovime nĂŒĂŒd kĂ€ivitada esitusraamatut, mis loob faile kaugmasinas:

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

Ja kÀivitame selle koos Mitogeniga ja ilma, et luua 10 faili:

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

NĂ€eme kahekordset paranemist. Kontrollime 2, 20, ..., 30 faili:

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

Selle tulemusena kiirendasime tÀitmist rohkem kui 10 korda!
NĂŒĂŒd proovime erinevaid stsenaariume ja vaatame, kui palju kiiremini kĂ”ik meie jaoks toimib:

  • Skript failide kopeerimiseks kohalikust hostist (koos mooduliga copy):
    Ansible kiirendamine Mitogeniga

  • Skript failide loomiseks kaughostis copy moodul:
    Ansible kiirendamine Mitogeniga

  • Stsenaarium failide allalaadimisega kaughostist kohalikku:
    Ansible kiirendamine Mitogeniga

Proovime mitme (3) kaugmasinaga stsenaariumi, nÀiteks failide kaughosti kopeerimisega:
Ansible kiirendamine Mitogeniga

Nagu nÀete, sÀÀstab Mitogen nende stsenaariumide puhul meie aega ja liiklust. Aga kui kitsaskoht pole Ansibles, vaid nÀiteks ketta vÔi vÔrgu I/O-s vÔi kusagil mujal, siis on raske loota, et Mitogen meid aitaks.

Proovime skripti yum/dnf ja pythoni moodulitega pakettide installimisega pip abil. Paketid salvestati vahemÀllu, et mitte sÔltuda vÔrgutÔrgetest:

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

Mitogeniga kulus 12 sekundit, sama palju kui ilma selleta.
Lehel Mitogen for Ansible leht saate vaadata muid vÔrdlusaluseid ja teste. Nagu lehel on kirjas:

Mitogeen ei saa moodulit kiirendada, kui see töötab. See vÔib muuta selle mooduli tÀitmise ainult nii kiireks kui vÔimalik.

SeetÔttu on oluline leida oma kasutuselevÔtu kitsaskohad ja kui need on tingitud Ansiblest, siis Mitogen aitab teil need lahendada ja kiirendab oluliselt teie mÀnguraamatute tÀitmist.

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster