Ukukhawulezisa i-Ansible kunye neMitogen

Efanelekileyo yaba yenye yezona zidumileyo Ulawulo loLungiselelo lweNkqubo. Emva koko yathengwa nguRed Hat ngo-2015 inani abathathi-nxaxheba kwiprojekthi idlule kumawaka kwaye i-Ansible yaba yeyona nkqubo isetyenziswayo yokusasaza kunye neokhestra. Uluhlu lwayo olubanzi lwezicelo luchukumisa kakhulu.

I-Ansible isebenza ngodibaniso lwe-SSH kwiinginginya ezikude. Ivula iseshoni ye-SSH, ingene, ikopishe ikhowudi yePython phezu kwenethiwekhi kwaye ibhale kwifayile yexeshana eyahlukileyo. Emva koko, iqhuba le fayile kumatshini okude. Olu luhlu lulonke lwemisebenzi lude kakhulu kwaye luyadinisa, ngoko ke kukho iindlela ezahlukeneyo zokuyikhulisa.

Enye yezi ndlela Imibhobho ye-SSH ekuvumela ukuba usebenzise iseshoni enye ye-SSH ukuphumeza imiyalelo, kunokuvula iseshoni entsha ngexesha ngalinye, engasigcina ixesha elininzi. (Khumbula nje ukucima requiretty ukuseta i-sudo kweyakho /etc/sudoers ifayile kumatshini okude)

Indlela entsha yokugqithisa i-Ansible yilayibrari yepython ebizwa Mitogen. Ukuba nabani na akeva ngayo, ndiza kuchaza ngokufutshane ukusebenza kwayo. Ivumela ukuphunyezwa ngokukhawuleza kwekhowudi yepython kumatshini okude, kwaye i-Ansible ngumzekelo omnye wokusetyenziswa. I-Mitogen isebenzisa umbhobho we-UNIX kumatshini okude kwaye idlulisela ikhowudi yepython ecinezelwe nge-zlib kunye ne-serialized nge-pickle. Oku kunceda ukuyigqiba ngokukhawuleza kwaye igcine i-traffic. Ukuba unomdla kwingcaciso ethe kratya, kukulungele ukufunda ngayo kwiphepha "Ingaba isebenza kanjani". Kodwa namhlanje siza kugxila kuphela kwindlela ithala leencwadi elisebenza ngayo ne-Ansible.

I-Mitogen kwiimeko ezithile inokukhawulezisa ikhowudi yakho ye-Ansible amaxesha amaninzi kwaye inciphise kakhulu ukusetyenziswa kwezithuthi. Makhe sijonge awona matyala osetyenziso adumileyo kwaye sibone ukuba isinceda kangakanani.

Ndisebenzisa i-Ansible kakhulu: ukwenza iifayile zoqwalaselo kumatshini okude, ukufaka iipakethe, ukukopa iifayile ukuya nokusuka kumatshini okude. Mhlawumbi unayo eminye imizekelo - bhala kwizimvo.

Masihambe!

Uqwalaselo lwe-Mitogen lwe-Ansible lulula kakhulu:
Faka ithala leencwadi leMitogen:

pip install mitogen

Ngoku kukho iindlela ezimbini ezilinganayo - nokuba uqwalasele iinketho kwi ansible.cfg ifayile yoqwalaselo, okanye usete iimeko ezifunekayo eziguquguqukayo.

Makhe sicinge ukuba indlela eya kwi-Mitogen efakiweyo iya kuba /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Emva koko:

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

okanye

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

Masifake i-Ansible kwi-virtualenv, kunye nangaphandle kweMitogen:

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

Nceda uqaphele ukuba iMitogen 0.2.7 ayisebenzi ne-Ansible 2.8 (ukususela ngoMeyi 2019)

Ukwenza iziteketiso:

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'

Ngoku makhe sizame ukuqhuba incwadi yokudlala eyenza iifayile kumatshini okude:

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

Kwaye masiyiqhube kunye nangaphandle kweMitogen ukwenza iifayile ezili-10:

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

Sibona uphuculo oluphindwe kabini. Makhe sijonge 2, 20, ..., 30 iifayile:

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

Ngenxa yoko, siye sakhawulezisa ukubulawa izihlandlo ezingaphezu kwe-10!
Ngoku makhe sizame iimeko ezahlukeneyo kwaye sibone ukuba yonke into isebenza ngokukhawuleza kangakanani na kuthi:

  • Ushicilelo lokukhuphela iifayile kwinginginya ekude ukusuka kweyasekuhlaleni (ngemodyuli copy):
    Ukukhawulezisa i-Ansible kunye neMitogen

  • Iscript sokwenza iifayile kwinginginya ekude nge copy imodyuli:
    Ukukhawulezisa i-Ansible kunye neMitogen

  • Imeko yokukhuphela iifayile kwinginginya ekude ukuya kweyasekuhlaleni:
    Ukukhawulezisa i-Ansible kunye neMitogen

Makhe sizame imeko eliqela (3) koomatshini abakude, umzekelo imeko yokukopa iifayile kumamkeli okude:
Ukukhawulezisa i-Ansible kunye neMitogen

Njengoko ubona, uMitogen usisindisa zombini ixesha kunye ne-traffic kwezi meko. Kodwa ukuba i-bottleneck ayikho kwi-Ansible, kodwa umzekelo kwi-I / O yediski okanye inethiwekhi, okanye kwenye indawo, ngoko kunzima ukulindela ukuba uMitogen uya kusinceda.

Makhe sizame iskripthi ngokufaka iipakethe kunye neemodyuli ze-yum/dnf kunye nepython sisebenzisa ipip. Iipakethe zigcinwe kwi-cache ukuze zingaxhomekeki kwiimpazamo zenethiwekhi:

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

NgeMitogen kuthathe imizuzwana eyi-12, ngokufanayo nangaphandle kwayo.
Kwiphepha Mitogen for Ansible page ungajonga ezinye iibenchmarks kunye neemvavanyo. Njengoko iphepha lichaza:

I-Mitogen ayinakukhawulezisa imodyuli xa isebenza. Ingenza kuphela ukuphunyezwa kwale modyuli ngokukhawuleza kangangoko kunokwenzeka.

Ke ngoko, kubalulekile ukufumana imiqobo yakho ekuhanjisweni kwakho kwaye ukuba kungenxa ye-Ansible, ke iMitogen iya kukunceda ukuba usombulule kwaye ikhawulezise kakhulu ukwenziwa kweencwadi zakho zokudlala.

umthombo: www.habr.com

Yongeza izimvo