مضمون کا ترجمہ کورس کے آغاز کے موقع پر تیار کیا گیا تھا۔
لوڈ بیلنسنگ ایک سے زیادہ میزبانوں میں افقی طور پر ویب ایپلیکیشنز کو اسکیل کرنے کا ایک عام حل ہے جبکہ صارفین کو سروس تک رسائی کا ایک ہی نقطہ فراہم کرنا ہے۔
HAProxy وسائل کے استعمال کو بہتر بنانے، تھرو پٹ کو زیادہ سے زیادہ کرنے، رسپانس ٹائم کو کم سے کم کرنے، اور کسی بھی انفرادی وسائل کو زیادہ بوجھ سے بچنے کی کوشش کرتا ہے۔ اسے مختلف قسم کے لینکس ڈسٹری بیوشنز پر انسٹال کیا جا سکتا ہے، جیسا کہ CentOS 8، جس پر ہم اس گائیڈ کے ساتھ ساتھ سسٹمز میں توجہ مرکوز کریں گے۔
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
نیچے دی گئی کمانڈ کا استعمال کرتے ہوئے سورس کوڈ ڈاؤن لوڈ کریں۔ آپ چیک کر سکتے ہیں کہ آیا اس پر کوئی نیا ورژن دستیاب ہے۔
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 پتے چیک کر سکتے ہیں۔
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
جب آپ اعدادوشمار کا صفحہ لوڈ کرتے ہیں، اگر آپ کے تمام سرور سبز دکھائی دیتے ہیں، تو سیٹ اپ کامیاب رہا!
اعداد و شمار کا صفحہ آپ کے ویب میزبانوں کو ٹریک کرنے کے لیے کچھ مفید معلومات پر مشتمل ہے، بشمول اوپر/نیچے وقت اور سیشنز کی تعداد۔ اگر سرور پر سرخ نشان لگا ہوا ہے، تو یقینی بنائیں کہ سرور آن ہے اور آپ اسے لوڈ بیلنس مشین سے پنگ کر سکتے ہیں۔
اگر آپ کا لوڈ بیلنسر جواب نہیں دے رہا ہے، تو یقینی بنائیں کہ 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 کے ساتھ لوڈ بیلنسنگ کا صرف ایک تعارف ہے، جو کہ فوری سیٹ اپ گائیڈ میں اس سے کہیں زیادہ کی صلاحیت رکھتا ہے۔ ہم استعمال کرتے ہوئے مختلف کنفیگریشنز کے ساتھ تجربہ کرنے کی تجویز کرتے ہیں۔
ہیڈ روم کے ساتھ آپ کی ویب سروس کی حفاظت کے لیے متعدد میزبانوں کا استعمال کرتے ہوئے، لوڈ بیلنس خود اب بھی ناکامی کا ایک نقطہ پیش کر سکتا ہے۔ آپ متعدد لوڈ بیلنسرز کے درمیان فلوٹنگ آئی پی انسٹال کرکے اعلی دستیابی کو مزید بہتر بنا سکتے ہیں۔ آپ اس کے بارے میں مزید جان سکتے ہیں ہماری
کورس کے بارے میں مزید
ماخذ: www.habr.com