Mitogen کے ساتھ جوابی عمل کو تیز کرنا

ناممکن سب سے زیادہ مقبول میں سے ایک بن گیا سسٹم کنفیگریشن مینجمنٹ. کے بعد ریڈ ہیٹ نے خریدا تھا۔ 2015 میں نمبر منصوبے کے شرکاء ہزاروں سے تجاوز کر گیا اور Ansible شاید سب سے زیادہ استعمال ہونے والا تعیناتی اور آرکیسٹریشن سسٹم بن گیا۔ اس کی ایپلی کیشنز کی وسیع رینج بہت متاثر کن ہے۔

دور دراز میزبانوں کے لئے SSH کنکشن پر جوابدہ کام کرتا ہے۔ یہ ایک SSH سیشن کھولتا ہے، لاگ ان ہوتا ہے، نیٹ ورک پر Python کوڈ کو کاپی کرتا ہے اور اسے ایک علیحدہ عارضی فائل میں لکھتا ہے۔ اس کے بعد، یہ اس فائل کو ریموٹ مشین پر چلاتا ہے۔ کارروائیوں کا یہ پورا سلسلہ کافی طویل اور تکلیف دہ ہے، اس لیے اسے بہتر بنانے کے مختلف طریقے ہیں۔

ان طریقوں میں سے ایک ہے۔ ایس ایس ایچ پائپ لائنز جو آپ کو ہر بار نیا سیشن کھولنے کے بجائے ہدایات پر عمل کرنے کے لیے ایک SSH سیشن استعمال کرنے کی اجازت دیتا ہے، جس سے ہمارا کافی وقت بچ سکتا ہے۔ (صرف آف کرنا یاد رکھیں requiretty آپ میں sudo کی ترتیب /etc/sudoers ریموٹ مشین پر فائل)

Ansible کو اوور کلاک کرنے کا ایک نیا طریقہ python لائبریری کہلاتا ہے۔ مائٹوجن۔. اگر کسی نے اس کے بارے میں نہیں سنا ہے، تو میں مختصراً اس کی فعالیت کو بیان کروں گا۔ یہ ریموٹ مشین پر ازگر کوڈ کے تیزی سے عمل درآمد کی اجازت دیتا ہے، اور جوابی استعمال کی صرف ایک مثال ہے۔ Mitogen ریموٹ مشین پر UNIX پائپ کا استعمال کرتا ہے اور zlib کے ساتھ کمپریسڈ اور اچار کے ساتھ سیریلائزڈ ازگر کوڈ منتقل کرتا ہے۔ اس سے اسے تیزی سے مکمل کرنے میں مدد ملتی ہے اور ٹریفک کی بچت ہوتی ہے۔ اگر آپ مزید تفصیلی وضاحت میں دلچسپی رکھتے ہیں، تو اس کے بارے میں صفحہ پر پڑھنا بہتر ہے۔ "یہ کیسے کام کرتا ہے". لیکن آج ہم صرف اس بات پر توجہ مرکوز کریں گے کہ لائبریری Ansible کے ساتھ کیسے کام کرتی ہے۔

Mitogen مخصوص حالات میں آپ کے جوابی کوڈ کو کئی بار تیز کر سکتا ہے اور ٹریفک کی کھپت کو نمایاں طور پر کم کر سکتا ہے۔ آئیے سب سے زیادہ مقبول استعمال کے معاملات کو دیکھیں اور دیکھیں کہ یہ ہماری کتنی مدد کرتا ہے۔

میں Ansible کا سب سے زیادہ اس لیے استعمال کرتا ہوں: ریموٹ مشین پر کنفیگریشن فائلیں بنانا، پیکجز انسٹال کرنا، فائلوں کو ریموٹ مشین میں اور اس سے کاپی کرنا۔ شاید آپ کے پاس دوسری مثالیں ہیں - تبصرے میں لکھیں۔

ہم چلتے ہیں!

Ansible کے لیے 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

آئیے virtualenv میں Ansible کو Mitogen کے ساتھ اور اس کے بغیر انسٹال کریں:

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 Ansible 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، ...، 100 فائلوں کو چیک کریں:

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 میں، یا کہیں اور، تو یہ امید کرنا مشکل ہے کہ Mitogen ہماری مدد کرے گا۔

آئیے پائپ کا استعمال کرتے ہوئے 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 ماڈیول کو تیز نہیں کر سکتا جب یہ چل رہا ہو۔ یہ صرف اس ماڈیول پر عملدرآمد کو جتنی جلدی ممکن ہو سکے بنا سکتا ہے۔

اس لیے، یہ ضروری ہے کہ آپ اپنی تعیناتی میں رکاوٹوں کو تلاش کریں اور اگر وہ جوابدہ ہونے کی وجہ سے ہیں، تو Mitogen ان کو حل کرنے میں آپ کی مدد کرے گا اور آپ کی پلے بکس کے عمل کو نمایاں طور پر تیز کرے گا۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں