د Mitogen سره د ځواب وړ چټکتیا

ناڅاپي یو له خورا مشهور شو د سیسټم تنظیم کولو مدیریت. وروسته د Red Hat لخوا اخیستل شوی په 2015 کې شمیره د پروژې ګډونوال د زرګونو څخه ډیر شو او انسیبل شاید د ځای پرځای کولو او آرکیسټریشن ترټولو کارول شوی سیسټم شو. د دې غوښتنلیکونو پراخه لړۍ خورا اغیزمنه ده.

لیرې کوربه ته د SSH اتصالاتو په اړه ځواب ورکوونکي کار کوي. دا د SSH سیشن پرانیزي، ننوتل، په شبکه کې د Python کوډ کاپي کوي او یو جلا لنډمهاله فایل ته لیکي. له هغې وروسته، دا فایل په ریموټ ماشین چلوي. د عملیاتو دا ټوله لړۍ خورا اوږده او ستړیا ده، نو د دې د ښه کولو لپاره مختلفې لارې شتون لري.

یو له دغو لارو څخه دی د SSH پایپ لاینونه کوم چې تاسو ته اجازه درکوي د لارښوونو پلي کولو لپاره د SSH یوه ناسته وکاروئ ، د دې پرځای چې هر ځل نوې ناسته پیل کړئ ، کوم چې کولی شي زموږ ډیر وخت خوندي کړي. (یوازې په یاد ولرئ چې بند کړئ requiretty ستاسو کې د sudo لپاره تنظیم کول /etc/sudoers فایل په ریموټ ماشین کې)

د Ansible overclock کولو نوې لاره د Python کتابتون نومیږي مایتوجن. که چا د دې په اړه ندي اوریدلي، زه به یې په لنډه توګه د دې فعالیت تشریح کړم. دا په ریموټ ماشین کې د پیتون کوډ ګړندي اجرا کولو ته اجازه ورکوي ، او ځواب ورکونکي د کارولو یوازې یوه بیلګه ده. Mitogen په ریموټ ماشین کې د UNIX پایپ کاروي او د پیتون کوډ لیږدوي چې د zlib سره کمپریس شوی او د اچار سره سیریل شوی. دا د دې ګړندي بشپړولو کې مرسته کوي او ترافیک خوندي کوي. که تاسو د نورو تفصيلي توضیحاتو سره علاقه لرئ ، نو دا به غوره وي چې په پاڼه کې یې ولولئ "څنګه کار کوي". مګر نن موږ به یوازې په دې تمرکز وکړو چې کتابتون څنګه د ځواب سره کار کوي.

Mitogen په ځینو حاالتو کې کولی شي ستاسو ځواب کوډ څو ځله ګړندی کړي او د پام وړ د ترافیک مصرف کم کړي. راځئ چې د کارولو خورا مشهور قضیې وګورو او وګورو چې دا زموږ سره څومره مرسته کوي.

زه د ډیری لپاره ځواب ورکوم: په ریموټ ماشین کې د تشکیلاتو فایلونو رامینځته کول ، د کڅوړو نصب کول ، د ریموټ ماشین ته او د فایلونو کاپي کول. شاید تاسو نور مثالونه ولرئ - په نظرونو کې ولیکئ.

راځئ چې لاړ شه

د ځواب لپاره د میتوجن ترتیب خورا ساده دی:
د Mitogen کتابتون نصب کړئ:

pip install mitogen

اوس دوه مساوي لارې شتون لري - یا د ansible.cfg کنفیګریشن فایل کې اختیارونه تنظیم کړئ ، یا د چاپیریال اړین تغیرات تنظیم کړئ.

راځئ چې فرض کړو چې نصب شوي Mitogen ته لاره به وي /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy... بیا:

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

او یا

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

راځئ چې په ورچوئلینف کې د Mitogen سره او پرته Ansible نصب کړو:

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

مهرباني وکړئ په یاد ولرئ چې Mitogen 0.2.7 د ځواب وړ 2.8 سره کار نه کوي (د می 2019 پورې)

د نومونو جوړول:

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'

اوس راځئ چې د پلی بوک چلولو هڅه وکړو چې په ریموټ ماشین کې فایلونه رامینځته کوي:

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

او راځئ چې دا د 10 فایلونو رامینځته کولو لپاره د Mitogen سره او پرته پرمخ یوسو:

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

موږ دوه چنده پرمختګ ګورو. راځئ چې د 2، 20، ...، 30 فایلونو لپاره وګورو:

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

د پایلې په توګه، موږ د 10 څخه ډیر ځله اعدام ګړندی کړ!
اوس راځئ چې مختلف سناریوګانې هڅه وکړو او وګورو چې هرڅه زموږ لپاره څومره ګړندي کار کوي:

  • د ځایی څخه لرې کوربه ته د فایلونو کاپي کولو سکریپټ (د ماډل سره copy):
    د Mitogen سره د ځواب وړ چټکتیا

  • په لرې پرتو کوربه کې د فایلونو جوړولو لپاره سکریپټ copy ماډل:
    د Mitogen سره د ځواب وړ چټکتیا

  • د لیرې کوربه څخه ځایی ته د فایلونو ډاونلوډ کولو سناریو:
    د Mitogen سره د ځواب وړ چټکتیا

راځئ چې د څو (3) ریموټ ماشینونو سره یوه سناریو هڅه وکړو، د بیلګې په توګه د لیرې کوربه کوربه ته د فایلونو کاپي کولو سناریو:
د Mitogen سره د ځواب وړ چټکتیا

لکه څنګه چې تاسو لیدلی شئ، Mitogen موږ ته په دې سناریوګانو کې وخت او ترافیک دواړه خوندي کوي. مګر که خنډ په ځواب کې نه وي ، مګر د مثال په توګه د ډیسک یا شبکې I/O کې ، یا کوم بل ځای کې ، نو دا تمه کول ګران دي چې مایتوګین به زموږ سره مرسته وکړي.

راځئ چې د پائپ په کارولو سره د yum/dnf او python ماډلونو سره د کڅوړو نصبولو سره سکریپټ هڅه وکړو. کڅوړې ساتل شوي ترڅو د شبکې په خرابیو پورې اړه ونلري:

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

د Mitogen سره دا 12 ثانیې وخت نیولی، لکه څنګه چې پرته له دې.
په پا .ه کې د ځواب وړ پاڼې لپاره Mitogen تاسو کولی شئ نور معیارونه او ازموینې وګورئ. لکه څنګه چې په پاڼه کې راغلي:

مایټوجن نشي کولی ماډل ګړندی کړي کله چې دا چلیږي. دا یوازې کولی شي د دې ماډل اجرا کول څومره ژر چې امکان ولري.

له همدې امله ، دا مهمه ده چې ستاسو په ګمارلو کې ستاسو خنډونه ومومئ او که دوی د ځواب ویلو له امله وي ، نو میتوګین به تاسو سره د دوی حل کولو کې مرسته وکړي او د پام وړ ستاسو د لوبو کتابونو اجرا کول ګړندي کړي.

سرچینه: www.habr.com

Add a comment