CentOS پر HAProxy لوڈ بیلنس کو انسٹال کرنا

مضمون کا ترجمہ کورس کے آغاز کے موقع پر تیار کیا گیا تھا۔ "لینکس ایڈمنسٹریٹر۔ ورچوئلائزیشن اور کلسٹرنگ"

CentOS پر HAProxy لوڈ بیلنس کو انسٹال کرنا

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

HAProxy وسائل کے استعمال کو بہتر بنانے، تھرو پٹ کو زیادہ سے زیادہ کرنے، رسپانس ٹائم کو کم سے کم کرنے، اور کسی بھی انفرادی وسائل کو زیادہ بوجھ سے بچنے کی کوشش کرتا ہے۔ اسے مختلف قسم کے لینکس ڈسٹری بیوشنز پر انسٹال کیا جا سکتا ہے، جیسا کہ CentOS 8، جس پر ہم اس گائیڈ کے ساتھ ساتھ سسٹمز میں توجہ مرکوز کریں گے۔ ڈیبیان 8 и اوبنٹو 16.

CentOS پر HAProxy لوڈ بیلنس کو انسٹال کرنا

HAProxy خاص طور پر بہت زیادہ ٹریفک والی ویب سائٹس کے لیے موزوں ہے اور اس لیے اسے اکثر ملٹی سرور ویب سروس کنفیگریشنز کی وشوسنییتا اور کارکردگی کو بہتر بنانے کے لیے استعمال کیا جاتا ہے۔ یہ گائیڈ CentOS 8 کلاؤڈ ہوسٹ پر HAProxy کو لوڈ بیلنسر کے طور پر ترتیب دینے کے اقدامات کا خاکہ پیش کرتا ہے، جو پھر ٹریفک کو آپ کے ویب سرورز تک لے جاتا ہے۔

بہترین نتائج کے لیے شرط کے طور پر، آپ کے پاس کم از کم دو ویب سرور اور ایک لوڈ بیلنسنگ سرور ہونا چاہیے۔ ویب سرورز کو کم از کم ایک بنیادی ویب سروس جیسے کہ nginx یا httpd چلانا چاہیے تاکہ ان کے درمیان بوجھ کے توازن کو جانچا جا سکے۔

CentOS 8 پر HAProxy انسٹال کرنا

چونکہ HAProxy ایک تیزی سے تیار ہوتی ہوئی اوپن سورس ایپلی کیشن ہے، اس لیے معیاری CentOS ریپوزٹریز میں آپ کے لیے دستیاب تقسیم جدید ترین ورژن نہیں ہو سکتی۔ موجودہ ورژن معلوم کرنے کے لیے درج ذیل کمانڈ کو چلائیں:

sudo yum info haproxy

HAProxy ہمیشہ تین مستحکم ورژن فراہم کرتا ہے جن میں سے انتخاب کیا جا سکتا ہے: دو تازہ ترین تعاون یافتہ ورژن اور تیسرا، پرانا ورژن جو اب بھی اہم اپ ڈیٹس حاصل کر رہا ہے۔ آپ ہمیشہ HAProxy ویب سائٹ پر درج تازہ ترین مستحکم ورژن کو چیک کر سکتے ہیں اور پھر فیصلہ کر سکتے ہیں کہ آپ کس ورژن کے ساتھ کام کرنا چاہتے ہیں۔

اس گائیڈ میں، ہم تازہ ترین مستحکم ورژن 2.0 انسٹال کریں گے، جو کہ گائیڈ لکھنے کے وقت معیاری ذخیروں میں دستیاب نہیں تھا۔ آپ کو اسے اصل ماخذ سے انسٹال کرنے کی ضرورت ہوگی۔ لیکن پہلے، چیک کریں کہ آیا آپ نے پروگرام کو ڈاؤن لوڈ اور کمپائل کرنے کے لیے ضروری شرائط پوری کی ہیں۔

sudo yum install gcc pcre-devel tar make -y

نیچے دی گئی کمانڈ کا استعمال کرتے ہوئے سورس کوڈ ڈاؤن لوڈ کریں۔ آپ چیک کر سکتے ہیں کہ آیا اس پر کوئی نیا ورژن دستیاب ہے۔ HAProxy ڈاؤن لوڈ صفحہ.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

ڈاؤن لوڈ مکمل ہونے کے بعد، نیچے دی گئی کمانڈ کا استعمال کرتے ہوئے فائلیں نکالیں:

tar xzvf ~/haproxy.tar.gz -C ~/

غیر پیک شدہ سورس ڈائرکٹری پر جائیں:

cd ~/haproxy-2.0.7

پھر اپنے سسٹم کے لیے پروگرام مرتب کریں:

make TARGET=linux-glibc

اور آخر میں، HAProxy خود انسٹال کریں:

sudo make install

HAProxy اب انسٹال ہے، لیکن اسے کام کرنے کے لیے کچھ اضافی ہیرا پھیری کی ضرورت ہے۔ آئیے ذیل میں سافٹ ویئر اور خدمات کو ترتیب دینا جاری رکھیں۔

آپ کے سرور کے لیے HAProxy ترتیب دینا

اب HAProxy اندراجات کے لیے درج ذیل ڈائریکٹریز اور شماریات فائل شامل کریں:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

بائنریز کے لیے ایک علامتی لنک بنائیں تاکہ آپ HAProxy کمانڈز کو باقاعدہ صارف کے طور پر چلا سکیں:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

اگر آپ اپنے سسٹم میں بطور سروس پراکسی شامل کرنا چاہتے ہیں تو haproxy.init فائل کو مثالوں سے اپنی /etc/init.d ڈائریکٹری میں کاپی کریں۔ فائل کی اجازتوں میں ترمیم کریں تاکہ اسکرپٹ چلے، اور پھر سسٹم ڈیمون کو دوبارہ شروع کریں:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

سسٹم کے شروع ہونے پر آپ کو سروس کو خود بخود دوبارہ شروع ہونے کی اجازت دینے کی بھی ضرورت ہے:

sudo chkconfig haproxy on

سہولت کے لیے، HAProxy چلانے کے لیے ایک نئے صارف کو شامل کرنے کی بھی سفارش کی جاتی ہے:

sudo useradd -r haproxy

اس کے بعد، آپ درج ذیل کمانڈ کا استعمال کرکے انسٹال شدہ ورژن نمبر کو دوبارہ چیک کر سکتے ہیں۔

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

ہمارے معاملے میں، ورژن 2.0.7 ہونا چاہیے، جیسا کہ اوپر کی مثال آؤٹ پٹ میں دکھایا گیا ہے۔

آخر میں، CentOS 8 میں پہلے سے طے شدہ فائر وال اس پروجیکٹ کے لیے کافی حد تک محدود ہے۔ مطلوبہ خدمات کی اجازت دینے اور فائر وال کو دوبارہ ترتیب دینے کے لیے درج ذیل کمانڈز کا استعمال کریں:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

لوڈ بیلنسر سیٹ اپ

HAProxy کو ترتیب دینا کافی آسان عمل ہے۔ بنیادی طور پر، آپ کو صرف HAProxy کو یہ بتانے کی ضرورت ہے کہ اسے کن کنکشنز کے لیے سننا چاہیے اور اسے کہاں ریلے کرنا چاہیے۔

یہ سیٹنگز کی وضاحت کے ساتھ کنفیگریشن فائل /etc/haproxy/haproxy.cfg بنا کر کیا جاتا ہے۔ آپ HAProxy کنفیگریشن کے اختیارات کے بارے میں پڑھ سکتے ہیں۔ دستاویزات کے صفحے پراگر آپ اس کے بارے میں مزید جاننا چاہتے ہیں۔

ٹرانسپورٹ کی تہہ پر لوڈ بیلنسنگ (پرت 4)

آئیے بنیادی سیٹ اپ کے ساتھ شروع کریں۔ ایک نئی تشکیل فائل بنائیں، مثال کے طور پر استعمال کرنا vi ذیل میں کمانڈ کے ساتھ:

sudo vi /etc/haproxy/haproxy.cfg

فائل میں درج ذیل حصے شامل کریں۔ بدل دیں۔ خدمت گار کا نام اعداد و شمار کے صفحے پر آپ کے سرورز کو کیا کال کرنا چاہئے، اور نجی_آئی پی - سرورز کے نجی IP پتے جن پر آپ ویب ٹریفک کو ڈائریکٹ کرنا چاہتے ہیں۔ آپ نجی IP پتے چیک کر سکتے ہیں۔ UpCloud کنٹرول پینل پر اور ٹیب پر نجی نیٹ ورک مینو پر نیٹ ورک.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

یہ ایک ٹرانسپورٹ لیئر لوڈ بیلنسر (پرت 4) کی وضاحت کرتا ہے جسے بیرونی طور پر پورٹ 80 پر http_front listening کا نام دیا جاتا ہے، جو پھر ٹریفک کو http_back نامی ڈیفالٹ بیک اینڈ پر بھیج دیتا ہے۔ اضافی اعدادوشمار /haproxy?stats اعداد و شمار کے صفحہ کو مخصوص ایڈریس سے جوڑتا ہے۔

مختلف لوڈ بیلنسنگ الگورتھم۔

بیک اینڈ سیکشن میں سرورز کی وضاحت کرنا HAProxy کو ان سرورز کو راؤنڈ رابن الگورتھم کے مطابق لوڈ بیلنسنگ کے لیے استعمال کرنے کی اجازت دیتا ہے۔

بیلنسنگ الگورتھم اس بات کا تعین کرنے کے لیے استعمال کیے جاتے ہیں کہ بیک اینڈ میں ہر کنکشن کو کس سرور پر منتقل کیا جاتا ہے۔ یہاں کچھ مفید اختیارات ہیں:

  • راؤنڈ رابن: ہر سرور کو اس کے وزن کے مطابق استعمال کیا جاتا ہے۔ یہ سب سے ہموار اور بہترین الگورتھم ہے جب سرورز کے پروسیسنگ کا وقت یکساں طور پر تقسیم ہوتا ہے۔ یہ الگورتھم متحرک ہے، جس سے سرور کے وزن کو فلائی پر ایڈجسٹ کیا جا سکتا ہے۔
  • Leastconn: سب سے کم کنکشن والے سرور کو منتخب کیا گیا ہے۔ راؤنڈ رابن ایک ہی بوجھ کے ساتھ سرورز کے درمیان انجام دیا جاتا ہے۔ اس الگورتھم کا استعمال طویل سیشنز جیسے کہ LDAP، SQL، TSE، وغیرہ کے لیے تجویز کیا جاتا ہے، لیکن یہ مختصر سیشنز جیسے کہ HTTP کے لیے زیادہ موزوں نہیں ہے۔
  • پہلا: دستیاب کنکشن سلاٹس والا پہلا سرور کنکشن وصول کرتا ہے۔ سرورز کو سب سے کم عددی ID سے سب سے زیادہ تک منتخب کیا جاتا ہے، جو فارم میں سرور کی پوزیشن پر ڈیفالٹ ہوتا ہے۔ ایک بار جب سرور maxconn تک پہنچ جاتا ہے، اگلا سرور استعمال ہوتا ہے۔
  • ماخذ: سورس آئی پی ایڈریس کو ہیش کیا جاتا ہے اور اسے چلانے والے سرورز کے کل وزن سے تقسیم کیا جاتا ہے تاکہ یہ معلوم کیا جا سکے کہ کون سا سرور درخواست وصول کرے گا۔ اس طرح، ایک ہی کلائنٹ کا IP ایڈریس ہمیشہ ایک ہی سرور پر جائے گا، جبکہ سرور وہی رہیں گے۔

ایپلیکیشن کی سطح پر بوجھ میں توازن قائم کرنا (پرت 7)

ایک اور دستیاب آپشن یہ ہے کہ لوڈ بیلنسر کو ایپلیکیشن لیئر (لیئر 7) پر چلانے کے لیے ترتیب دیا جائے، جو اس وقت مفید ہوتا ہے جب آپ کی ویب ایپلیکیشن کے کچھ حصے مختلف میزبانوں پر واقع ہوں۔ یہ کنکشن کی ترسیل کو تھروٹلنگ کرکے حاصل کیا جاسکتا ہے، مثال کے طور پر یو آر ایل کے ذریعے۔

ٹیکسٹ ایڈیٹر کا استعمال کرتے ہوئے HAProxy کنفیگریشن فائل کو کھولیں:

sudo vi /etc/haproxy/haproxy.cfg

پھر نیچے دی گئی مثال کے مطابق فرنٹ اینڈ اور بیک اینڈ سیگمنٹس کو ترتیب دیں:

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

فرنٹ اینڈ ایک ACL اصول کا اعلان کرتا ہے جسے url_blog کہتے ہیں جو /blog سے شروع ہونے والے راستوں کے ساتھ تمام کنکشنز پر لاگو ہوتا ہے۔ Use_backend یہ بتاتا ہے کہ url_blog کی حالت سے مماثل کنکشنز کو blog_back نامی بیک اینڈ کے ذریعے پیش کیا جانا چاہیے، اور دیگر تمام درخواستیں ڈیفالٹ بیک اینڈ کے ذریعے ہینڈل کی جاتی ہیں۔

بیک اینڈ سائیڈ پر، کنفیگریشن سرورز کے دو گروپس ترتیب دیتی ہے: http_back، پہلے کی طرح، اور ایک نیا جسے blog_back کہا جاتا ہے، جو example.com/blog سے کنکشن ہینڈل کرتا ہے۔

ترتیبات کو تبدیل کرنے کے بعد، فائل کو محفوظ کریں اور درج ذیل کمانڈ کا استعمال کرتے ہوئے HAProxy کو دوبارہ شروع کریں:

sudo systemctl restart haproxy

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

سیٹ اپ کی جانچ کر رہا ہے۔

HAProxy کے کنفیگر ہونے اور چلنے کے بعد، لوڈ بیلنس سرور کا عوامی IP ایڈریس براؤزر میں کھولیں اور چیک کریں کہ آیا آپ بیک اینڈ سے صحیح طریقے سے جڑے ہوئے ہیں۔ ترتیب میں stats uri پیرامیٹر مخصوص ایڈریس پر شماریات کا صفحہ بناتا ہے۔

http://load_balancer_public_ip/haproxy?stats

جب آپ اعدادوشمار کا صفحہ لوڈ کرتے ہیں، اگر آپ کے تمام سرور سبز دکھائی دیتے ہیں، تو سیٹ اپ کامیاب رہا!

CentOS پر HAProxy لوڈ بیلنس کو انسٹال کرنا

اعداد و شمار کا صفحہ آپ کے ویب میزبانوں کو ٹریک کرنے کے لیے کچھ مفید معلومات پر مشتمل ہے، بشمول اوپر/نیچے وقت اور سیشنز کی تعداد۔ اگر سرور پر سرخ نشان لگا ہوا ہے، تو یقینی بنائیں کہ سرور آن ہے اور آپ اسے لوڈ بیلنس مشین سے پنگ کر سکتے ہیں۔

اگر آپ کا لوڈ بیلنسر جواب نہیں دے رہا ہے، تو یقینی بنائیں کہ HTTP کنکشن فائر وال کے ذریعے بلاک نہیں ہو رہے ہیں۔ یہ بھی یقینی بنائیں کہ HAProxy نیچے دی گئی کمانڈ کا استعمال کر کے کام کر رہا ہے۔

sudo systemctl status haproxy

اعداد و شمار کے صفحے کو پاس ورڈ سے محفوظ کرنا

تاہم، اگر اعداد و شمار کے صفحے کو صرف سامنے والے سرے پر درج کیا جائے، تو یہ ہر کسی کے دیکھنے کے لیے کھلا ہے، جو شاید اچھا خیال نہ ہو۔ اس کے بجائے، آپ اپنی haproxy.cfg فائل کے آخر میں نیچے دی گئی مثال کو شامل کر کے اسے حسب ضرورت پورٹ نمبر تفویض کر سکتے ہیں۔ بدل دیں۔ کا صارف کا نام и پاس ورڈ کسی محفوظ چیز کے لیے:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

ایک نیا سننے والے گروپ کو شامل کرنے کے بعد، فرنٹ اینڈ گروپ سے پرانے اعدادوشمار uri لنک کو ہٹا دیں۔ ختم ہونے پر، فائل کو محفوظ کریں اور HAProxy کو دوبارہ شروع کریں۔

sudo systemctl restart haproxy

پھر لوڈ بیلنسر کو نئے پورٹ نمبر کے ساتھ دوبارہ کھولیں اور کنفیگریشن فائل میں آپ کے بیان کردہ صارف نام اور پاس ورڈ کے ساتھ لاگ ان کریں۔

http://load_balancer_public_ip:8181

اس بات کو یقینی بنائیں کہ آپ کے تمام سرورز اب بھی سبز دکھائی دے رہے ہیں اور پھر اپنے براؤزر میں کسی پورٹ نمبر کے بغیر صرف لوڈ بیلنسر IP کھولیں۔

http://load_balancer_public_ip/

اگر آپ کے بیک اینڈ سرورز پر کم از کم کچھ قسم کے لینڈنگ پیجز ہیں، تو آپ دیکھیں گے کہ جب بھی آپ صفحہ کو دوبارہ لوڈ کرتے ہیں تو آپ کو ایک مختلف میزبان سے جواب ملتا ہے۔ آپ کنفیگریشن سیکشن میں مختلف بیلنسنگ الگورتھم آزما سکتے ہیں یا چیک آؤٹ کر سکتے ہیں۔ مکمل دستاویزات.

نتیجہ: HAProxy لوڈ بیلنسر

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

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

کورس کے بارے میں مزید "لینکس ایڈمنسٹریٹر۔ ورچوئلائزیشن اور کلسٹرنگ"***

ماخذ: www.habr.com

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