تثبيت HAProxy Load Balancer على CentOS

تم إعداد ترجمة المقال عشية بدء الدورة مسؤول Linux. الافتراضية والتجميع »

تثبيت HAProxy Load Balancer على CentOS

موازنة التحميل هي حل شائع لتوسيع نطاق تطبيقات الويب عبر مضيفين متعددين مع تزويد المستخدمين بنقطة وصول واحدة إلى الخدمة. HAProxy هو أحد أكثر برامج موازنة التحميل مفتوحة المصدر شيوعًا والذي يوفر أيضًا توفرًا عاليًا ووظائف الوكيل.

يهدف HAProxy إلى تحسين استخدام الموارد ، وزيادة الإنتاجية ، وتقليل وقت الاستجابة ، وتجنب التحميل الزائد على أي مورد فردي. يمكن تثبيته على مجموعة متنوعة من توزيعات Linux ، مثل CentOS 8 ، والتي سنركز عليها في هذا الدليل ، وكذلك الأنظمة ديبيان 8 и أوبونتو 16.

تثبيت HAProxy Load Balancer على CentOS

يعتبر HAProxy مناسبًا بشكل خاص لمواقع الويب عالية الحركة للغاية ، وبالتالي غالبًا ما يستخدم لتحسين موثوقية وأداء تكوينات خدمة الويب متعددة الخوادم. يوضح هذا الدليل خطوات إعداد HAProxy كموازن تحميل على مضيف سحابي CentOS 8 ، والذي يقوم بعد ذلك بتوجيه حركة المرور إلى خوادم الويب الخاصة بك.

كشرط أساسي للحصول على أفضل النتائج ، يجب أن يكون لديك خادمان ويب على الأقل وخادم موازنة التحميل. يجب أن تعمل خوادم الويب على الأقل على خدمة ويب أساسية مثل nginx أو httpd من أجل التحقق من موازنة التحميل بينهما.

تثبيت HAProxy على CentOS 8

نظرًا لحقيقة أن 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. قم بتحرير أذونات الملف حتى يتم تشغيل البرنامج النصي ، ثم أعد تحميل البرنامج الخفي systemd:

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

أضف الأقسام التالية إلى الملف. يستبدل اسم الخادم الشخص الذي يجب أن يتصل بخوادمك على صفحة الإحصائيات ، و Private_ip - عناوين 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) المسمى خارجيًا http_front listen على المنفذ 80 ، والذي يقوم بعد ذلك بتوجيه حركة المرور إلى الواجهة الخلفية الافتراضية المسماة http_back. الإحصائيات الإضافية / haproxy؟ stats يربط صفحة الإحصائيات بالعنوان المحدد.

خوارزميات موازنة الحمل المختلفة.

يسمح تحديد الخوادم في قسم الواجهة الخلفية لـ HAProxy باستخدام هذه الخوادم لموازنة التحميل وفقًا لخوارزمية round robin عندما يكون ذلك ممكنًا.

تُستخدم خوارزميات الموازنة لتحديد الخادم الذي يتم إرسال كل اتصال إليه في الواجهة الخلفية. فيما يلي بعض الخيارات المفيدة:

  • راوندروبن: يتم استخدام كل خادم بدوره حسب وزنه. هذه هي الخوارزمية الأكثر سلاسة وصدقًا ، عندما يظل وقت معالجة الخوادم موزعًا بالتساوي. هذه الخوارزمية ديناميكية ، مما يسمح لك بضبط وزن الخادم أثناء التنقل.
  • على الأقل: يتم تحديد الخادم مع أقل عدد من الاتصالات. يتم تنفيذ Round robin بين الخوادم بنفس الحمولة. يوصى باستخدام هذه الخوارزمية للجلسات الطويلة مثل LDAP و SQL و TSE وما إلى ذلك ، ولكنها ليست مناسبة جدًا للجلسات القصيرة مثل HTTP.
  • أول: يتلقى الخادم الأول مع فتحات الاتصال المتاحة الاتصال. يتم تحديد الخوادم من المعرف الرقمي الأدنى إلى الأعلى ، والذي يتوافق افتراضيًا مع موقع الخادم في المزرعة. بمجرد أن يصل الخادم إلى قيمة maxconn ، يتم استخدام الخادم التالي.
  • المصدر يتم تجزئة عنوان IP المصدر وقسمته على الوزن الإجمالي للخوادم قيد التشغيل لتحديد الخادم الذي سيتلقى الطلب. وبالتالي ، فإن نفس عنوان IP الخاص بالعميل سينتقل دائمًا إلى نفس الخادم ، بينما تظل الخوادم دون تغيير.

تكوين موازنة الحمل في طبقة التطبيق (الطبقة 7)

هناك خيار آخر متاح وهو تكوين موازن التحميل للعمل في طبقة التطبيق (الطبقة 7) ، وهو أمر مفيد عندما توجد أجزاء من تطبيق الويب الخاص بك على مضيفين مختلفين. يمكن تحقيق ذلك عن طريق تقييد نقل الاتصال ، على سبيل المثال عن طريق URL.

افتح ملف تكوين 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 العام لخادم موازن التحميل في المتصفح وتحقق مما إذا كنت قد قمت بالاتصال بالواجهة الخلفية بشكل صحيح. تنشئ معلمة uri stats في التكوين صفحة إحصائيات على العنوان المحدد.

http://load_balancer_public_ip/haproxy?stats

عند تحميل صفحة الإحصائيات ، إذا كانت جميع خوادمك خضراء ، فهذا يعني أن الإعداد كان ناجحًا!

تثبيت HAProxy Load Balancer على CentOS

تحتوي صفحة الإحصائيات على بعض المعلومات المفيدة لتتبع مضيفي الويب ، بما في ذلك وقت زيادة / نقصان وعدد الجلسات. إذا تم تمييز الخادم باللون الأحمر ، فتأكد من تشغيل الخادم وأنه يمكنك اختبار اتصاله من موازن التحميل.

إذا كان موازن التحميل الخاص بك لا يستجيب ، فتأكد من عدم حظر اتصالات 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 Load Balancer

تهانينا على إعداد موازن تحميل HAProxy بنجاح! حتى مع إعداد موازنة الحمل الأساسي ، يمكنك تحسين أداء تطبيق الويب الخاص بك وتوافره بشكل كبير. هذا الدليل هو مجرد مقدمة لموازنة التحميل باستخدام HAProxy ، وهو قادر على أكثر بكثير مما يمكن وصفه في دليل الإعداد السريع. نوصي بتجربة تكوينات مختلفة باستخدام وثائق واسعة النطاقمتاح لـ HAProxy ثم ابدأ التخطيط لموازنة الحمل لبيئة الإنتاج الخاصة بك.

باستخدام مضيفين متعددين لحماية خدمة الويب الخاصة بك مع مساحة الرأس ، يمكن أن يمثل موازن التحميل نفسه نقطة فشل. يمكنك تحسين الإتاحة العالية بشكل أكبر عن طريق إعداد IP عائم بين أرصدة التحميل المتعددة. يمكنك معرفة المزيد عن هذا في موقعنا مقالة حول عناوين IP العائمة على UpCloud.

المزيد عن الدورة مسؤول Linux. الافتراضية والتجميع »***

المصدر: www.habr.com

إضافة تعليق