كيفية استخدام Nginx كمرشح HTTP في Linux

عندما يتعلق الأمر بإعداد خوادم التطبيقات المتعددة للتوافر التكراري، تعد توازن الحمل آلية شائعة الاستخدام لتوزيع طلبات الخدمة الواردة أو حركة المرور عبر مجموعة من الخوادم الخلفية.

يتمتع توازن الحمل بالعديد من المزايا بما في ذلك زيادة توافر التطبيق من خلال التكرار، وزيادة الموثوقية والقابلية للتوسع (يمكن إضافة المزيد من الخوادم في الخليط عند زيادة حركة المرور). كما يؤدي أيضًا إلى تحسين أداء التطبيق والعديد من الفوائد الأخرى.

القراءة المُوصى بها: الدليل النهائي لتأمين وتعزيز أداء خادم الويب Nginx

يمكن استخدام Nginx كموازن حمل HTTP فعال لتوزيع حركة المرور الشبكية الواردة والعبء العمل بين مجموعة من خوادم التطبيقات، حيث يعيد الاستجابة من الخادم المحدد إلى العميل المناسب.

الأساليب المدعومة لتوازن الحمل من قبل Nginx هي:

  • round-robin – والتي توزع الطلبات على خوادم التطبيق بطريقة دورية. يتم استخدامها افتراضيًا عندما لا يتم تحديد أي طريقة،
  • least-connected – يعين الطلب التالي إلى خادم أقل انشغالًا (الخادم الذي يحتوي على أقل عدد من الاتصالات النشطة).
  • التجزئة بحسب عنوان IP – حيث يتم استخدام وظيفة تجزئة لتحديد الخادم الذي يجب تحديده للطلب التالي بناءً على عنوان IP الخاص بالعميل. تسمح هذه الطريقة بالاستمرارية في الجلسة (ربط العميل بخادم التطبيق معين).

بالإضافة إلى ذلك، يمكنك استخدام أوزان الخادم للتأثير على خوارزميات توازن الحمل في Nginx على مستوى متقدم. Nginx يدعم أيضًا فحوصات الصحة لتحديد خادم كمعطل (لفترة زمنية قابلة للتكوين، الافتراضي 10 ثوانٍ) إذا فشل ردّه بخطأ، مما يمنع اختيار ذلك الخادم للطلبات الواردة في وقت لاحق.

يوضح هذا الدليل العملي كيفية استخدام Nginx كتوازن حمل HTTP لتوزيع طلبات العميل الواردة بين خادمين كل منهما يحتوي على نسخة من نفس التطبيق.

لأغراض الاختبار، يتم وضع علامة (على واجهة المستخدم) على كل نسخة من التطبيق للدلالة على الخادم الذي يتم تشغيله عليه.

إعداد بيئة الاختبار

Load Balancer: 192.168.58.7
Application server 1: 192.168.58.5
Application server 2: 192.168.58.8

على كل خادم تطبيق، يتم تكوين كل نسخة من التطبيق للوصول باستخدام النطاق tecmintapp.lan. بفرض أن هذا هو نطاق مسجل بالكامل، سنضيف ما يلي في إعدادات نظام أسماء النطاق (DNS).

A Record   		@   		192.168.58.7

يخبر هذا السجل طلبات العميل إلى أين يجب توجيه النطاق، في هذه الحالة، جهاز توازن الحمل (192.168.58.7). سجلات DNS A تقبل قيم IPv4 فقط. بديلًا، يمكن استخدام ملف /etc/hosts على آلات العميل لأغراض الاختبار، مع الإدخال التالي.

192.168.58.7  	tecmintapp.lan

إعداد توازن الحمل في Nginx في نظام التشغيل لينكس

قبل إعداد توازن الحمل في Nginx، يجب عليك تثبيت Nginx على الخادم الخاص بك باستخدام مدير الحزم الافتراضي لتوزيعتك كما هو موضح.

$ sudo apt install nginx   [On Debian/Ubuntu]
$ sudo yum install nginx   [On CentOS/RHEL]   

ثم، قم بإنشاء ملف كتلة الخادم باسم /etc/nginx/conf.d/loadbalancer.conf (حدد اسمًا بما يتناسب معك).

$ sudo vi /etc/nginx/conf.d/loadbalancer.conf

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

 
upstream backend {
        server 192.168.58.5;
        server 192.168.58.8;
    }
	
    server {
        listen      80 default_server;
        listen      [::]:80 default_server;
        server_name tecmintapp.lan;

        location / {
	        proxy_redirect      off;
	        proxy_set_header    X-Real-IP $remote_addr;
	        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
	        proxy_set_header    Host $http_host;
		proxy_pass http://backend;
	}
}

في التكوين أعلاه، تُستخدم التوجيهة proxy_pass (التي يجب تحديدها داخل موقع، / في هذه الحالة) لتمرير الطلب إلى الخوادم البروكسية HTTP المشار إليها باستخدام الكلمة “backend”، في توجيه upstream (المستخدم لتعريف مجموعة من الخوادم). أيضًا، سيتم توزيع الطلبات بين الخوادم باستخدام آلية توازن الحمل الدائرية المزودة بأوزان.

لاستخدام آلية أقل الاتصالات، استخدم التكوين التالي

upstream backend {
        least_conn;
        server 192.168.58.5;
        server 192.168.58.8;
    }

ولتمكين آلية الاستمرارية في الجلسة ip_hash، استخدم:

upstream backend {
	ip_hash;
        server 192.168.58.5;
        server 192.168.58.8;
    }

يمكنك أيضًا التأثير على قرار توازن الحمل باستخدام أوزان الخادم. باستخدام التكوين التالي، إذا كان هناك ستة طلبات من العملاء، فسيتم تخصيص 4 طلبات لخادم التطبيق 192.168.58.5 وسيتم إرسال 2 طلبات لـ 192.168.58.8.

upstream backend {
        server 192.168.58.5	weight=4;
        server 192.168.58.8;
    }

احفظ الملف واخرج منه. ثم تأكد من أن هيكل تكوين Nginx صحيح بعد إضافة التغييرات الأخيرة، من خلال تشغيل الأمر التالي.

$ sudo nginx -t

إذا كان التكوين سليمًا، قم بإعادة تشغيل وتمكين خدمة Nginx لتطبيق التغييرات.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

اختبار توازن الحمل في Nginx في Linux

للاختبار توازن الحمل في Nginx، افتح متصفح الويب واستخدم العنوان التالي للتنقل.

http://tecmintapp.lan

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

Check Nginx Load Balancing in Linux

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

Source:
https://www.tecmint.com/use-nginx-as-http-load-balancer-in-linux/