Kiirendame Ansible ’it Mitogeni abil.

Ansible on muutunud ĂŒheks populaarsemaks Configuration Management sĂŒsteemiks. PĂ€rast seda, kui ostis Red Hat 2015. aastal ĂŒletas projekti osalejate arv tuhandeid ja Ansible on tĂ”enĂ€oliselt kĂ”ige rohkem kasutatav paiknemise ja orkestreerimise sĂŒsteem. Selle laiad rakendusvaldkonnad on vĂ€ga muljetavaldavad.

Ansible töötab SSH-ĂŒhenduste kaudu kaugserveritega. See avab SSH seansi, siseneb sisse, kopeerib Pythonikoodi ĂŒle vĂ”rgu ja kirjutab selle eraldi ajutisse faili. PĂ€rast seda kĂ€ivitab see faili eemales asuvas masinas. Terve see tegevuste jada on ĂŒsna pikk ja tĂŒlikas, seetĂ”ttu on erinevaid viise selle optimeerimiseks.

Üks nendest viisidest on SSH pipeline'id , mis vĂ”imaldab kasutada ĂŒhte SSH seanssi kĂ€skude tĂ€itmiseks, mitte igakordselt uut seanssi avades, mis vĂ”ib sÀÀsta meile palju aega. (Ainult Ă€ra unusta keelata requiretty sĂ€tted sudo teie /etc/sudoers failis eemales asuvas masinas)

Uue viisi Ansible'i kiirendamiseks on Python'i raamatukogu nimega Mitogen. Kui keegi pole sellest kuulnud, siis lĂŒhidalt kirjeldan selle funktsionaalsust. See vĂ”imaldab kiiret Python-koodi tĂ€itmist eemales asuvas masinas ja Ansible on vaid ĂŒks nĂ€ide selle kasutamisest. Mitogen kasutab UNIXi toru eemales asuvas masinas ja edastab Python'i koodi, mis on zipitud zlib ja serialiseeritud pickle'i abil. See aitab seda kiiremini tĂ€ita ja sÀÀstab liiklust. Kui olete huvitatud detailsemast selgitusest, on kĂ”ige parem lugeda sellest lehelt „Kuidas see töötab”. Kuid tĂ€na keskendume ainult raamatukogu tööle koos Ansible'iga.

Mitogen vÔib teatud asjaoludel kiirendada teie Ansible'i koodi mitmekordselt ja oluliselt vÀhendada liikluse kulu. Vaatame kÔige populaarsemaid kasutusnÀiteid ja nÀeme, kui palju see meile aitab.

Kasutame Ansible'it kĂ”ige rohkem: konfiguratsioonifailide loomisel eemales asuvas masinas, pakettide installimisel, failide kopeerimisel eemales asuvasse masinasse ja tagasi. VĂ”ib-olla on teil muid nĂ€iteid — kirjutage need kommentaaridesse.

LĂ€hme!

Mitogen'i konfiguratsioon Ansible'i jaoks on vÀga lihtne:
Installime Mitogen'i raamatukogu:

pip install mitogen

NĂŒĂŒd on kaks vĂ”rdset viisi — kas seadistada valikud ansible.cfg konfiguratsioonifailis vĂ”i mÀÀrata vajalikud keskkonnamuutujad.

Oletame, et tee installitud Mitogen'i juurde on /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Siis:

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

Paigaldame Ansible virtualenvis, koos ja ilma Mitogenita:

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 Ansible 2.8-ga (mai 2019 seisuga)

Loome aliasid:

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'

NĂŒĂŒd proovime kĂ€ivitada playbooki, 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 koos ja ilma Mitogenita, 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, et parandus on 2 korda parem. Vaadakem, mis juhtub 20, 30, 
, 100 faili korral:

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

KokkuvÔttes kiirusime tÀitmist enam kui 10 korda!
NĂŒĂŒd proovime erinevaid stsenaariume ja vaatame, kui kiiresti kĂ”ik töötab:

  • Failide kopeerimise stsenaarium kaugteenusesse lokaalsest (koos mooduliga kopeerida):
    Kiirendame Ansible ’it Mitogeni abil.

  • Failide loomise stsenaarium kaugmasinas koos kopeerida mooduliga:
    Kiirendame Ansible ’it Mitogeni abil.

  • Failide allalaadimise stsenaarium kaugmasinast kohalikku:
    Kiirendame Ansible ’it Mitogeni abil.

Proovime stsenaariumi kolme (3) kaugmasinaga, nÀiteks kopeerimist kaugteenusesse:
Kiirendame Ansible ’it Mitogeni abil.

Nagu nÀha, sÀÀstab Mitogen meilt nii aega kui ka liiklust nendes stsenaariumites. Kuid kui kitsaskoht ei ole Ansible'is, vaid nÀiteks kettasel vÔi vÔrgus, siis on keeruline oodata, et Mitogen meid aitab.

Proovime stsenaariumi pakettide installimise jaoks yum/dnf ja Python'i moodulite installimiseks pip'i kaudu. Pakettide vahemÀlu oli loomine, et mitte sÔltuda vÔrgu tÔ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 kestis see 12 sekundit, nagu ka ilma selleta.
LehekĂŒljel Mitogen for Ansible leht saate vaadata teisi töötlusi ja teste. Nagu lehelt nĂ€htub:

Mitogen ei saa moduli tÀitmist kiirendada. See vÔib ainult muuta selle moduli tÀitmise nii kiireks kui vÔimalik.

SeetÔttu on oluline leida teie kasutuskohtade kitsaskohad, ja kui need tulenevad Ansible'ist, aitab Mitogen teil need kÔrvaldada ja oluliselt kiirendada teie playbookide tÀitmist.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster