Kiirendame Ansible'i Mitogeni abil

Ansible on saanud ĂŒheks populaarsemaks konfiguratsioonihalduse sĂŒsteemiks. PĂ€rast seda, kui ostis Red Hat aastal 2015, ĂŒletas osalejate arv tuhandeid ja Ansible on tĂ”enĂ€oliselt kĂ”ige enam kasutatav juurutamise ja orkestreerimise sĂŒsteem. Selle laialdased rakendusvaldkonnad on vĂ€ga muljetavaldavad. Ansible töötab SSH-ĂŒhenduste kaudu kaugmasinatele. See avab SSH-seansi, logib sisse, kopeerib Pythonikoodi ĂŒle vĂ”rgu ja salvestab selle eraldi ajutisse faili. PĂ€rast seda kĂ€ivitab see faili kaugmasinas. Kogu see protsess on ĂŒsna aeganĂ”udev ja tĂŒĂŒtus, seetĂ”ttu on mitmeid viise, kuidas seda optimeerida.

Üks neist viisidest on

SSH torustikud mis vĂ”imaldab kasutada ĂŒhte SSH-seanssi kĂ€skude tĂ€itmiseks, mitte avada iga kord uut seanssi, mis vĂ”ib meie jaoks palju aega sÀÀsta. (Ärge unustage ainult keelata requiretty seade sudo jaoks oma failis kaugmasinas) /etc/sudoers Uue viisina Ansible'i „kiirendamiseks” on Python'i teek nimega

Mitogen Mitogen. Kui keegi ei ole temast kuulnud, siis rÀÀgin lĂŒhidalt tema funktsionaalsusest. See vĂ”imaldab kiiresti kĂ€ivitada Python'i koodi eemal asuvas masinas, ja Ansible on ainult ĂŒks nĂ€ide selle kasutamisest. Mitogen kasutab UNIX pipe'i eemal asuvas masinas ning edastab Python'i koodi zlib'i abil kompresseerituna ja pickle'iga sarjastatuna. See aitab seda kiiremini tĂ€ita ja sÀÀstab liiklust. Kui olete huvitatud detailsemast seletusest, on parem lugeda sellest lehelt. «Kuidas see toimib». Kuid tĂ€na keskendume ainult raamtu teostusele Ansible'iga.

Mitogen vÔib teatud tingimustel kiirendada teie Ansible'i koodi mitu korda ja oluliselt vÀhendada liikluskulu. Vaatame kÔige populaarsemaid kasutusnÀiteid ja uurime, kui palju see meile aitab.

Kasutame Ansible'it kĂ”ige enam: konfiguratsioonifailide loomine eemal asuvas masinas, pakettide paigaldamine, failide kopeerimine eemal asuvasse masinasse ja tagasi. VĂ”ib-olla on teil teisi nĂ€iteid – kirjutage kommentaaridesse.

LĂ€hme!

Mitogen'i konfiguratsioon Ansible'ile on vÀga lihtne:
Paigaldame Mitogen'i teegi:

pip install mitogen

NĂŒĂŒd on kaks vĂ”rdselt head viisi — kas seadistada valikud failis ansible.cfg vĂ”i seada 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'i virtualenv'i, koos Mitogen'i ja ilma selleta:

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

Teeme alias'id:

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 playbook'i, mis loob faile kaugtööl!

---
- hosts: all
  gather_facts: false
  tasks:
    - name: Loo faile kopeerimis sisu mooduli abil
      copy:
        content: |
          test file {{ item }}
        dest: ~/file_{{ item }}
      with_sequence: start=1 end={{ n }}

Ja kÀivitame koos Mitogen'i ja ilma selleta 10 faili loomiseks:

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

Me nÀeme tÀiust 2 korda. Kontrollime 20, 30, 
, 100 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

KokkuvÔttes oleme kiirusest enam kui 10 korda kÔrgema tulemuse saavutanud!
NĂŒĂŒd proovime erinevaid stsenaароpe ja vaatame, kui kiiresti meil kĂ”ik töötab:

  • Failide kopeerimise stsenaarium kaugserverisse kohalikult (mooduliga copy):
    Kiirendame Ansible'i Mitogeni abil

  • Failide loomise stsenaarium kaugserveris copy moodul:
    Kiirendame Ansible'i Mitogeni abil

  • Failide allalaadimise stsenaarium kaugserverist kohalikule:
    Kiirendame Ansible'i Mitogeni abil

Proovime stsenaariumit, kus on mitu (3) kaugmasinat, nÀiteks stsenaarium failide kopeerimiseks kaugserverisse:
Kiirendame Ansible'i Mitogeni abil

Kuidas nÀha, sÀÀstab Mitogen meile nii aega kui ka liiklust nendes stsenaariumides. Kuid kui 'pudelikael' ei ole Ansible'is, vaid nÀiteks ketta I/O-s vÔi vÔrgus, vÔi kusagil mujal, siis on raske oodata, et Mitogen aitaks.

Proovime stsenaariumit pakettide installimiseks yum/dnf ja pythonimoodulite paigaldamiseks pip'i abil. Paketid olid vahemÀllu salvestatud, et mitte sÔltuda vÔrgu tÔrgetest:

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

    - name: Paigaldage pip moodulid
      become: true
      pip:
        name:
          - pytest-split-tests
          - bottle
          - pep8
          - flask
        state: present

Mitogeniga vÔttis see 12 sekundit, nagu ka ilma selleta.
Lehe peal Mitogen Ansible’i leht saate vaadata teisi testitulemusi ja benchmarket. Nagu lehelt vĂ€idetakse:

Mitogen ei saa kiirendada mudelit, kui see on kÀimas. See suudab ainult muuta selle mudeli kÀitamise nii kiireks kui vÔimalik.

SeetÔttu on oluline leida oma juurdumisprobleemid rakenduses ja kui need on tingitud Ansible'ist, siis aitab Mitogen teil neid lahendada ja oluliselt kiirendada teie playbookide tÀitmist.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster