ديف أوبس

استضافة مواقع باستخدام Nginx و HAProxy

استضافة عدة مواقع باستخدام Nginx و HAProxy عبر LXD على Ubuntu 16.04

تعد استضافة عدة مواقع ويب على خوادم مختلفة باستخدام التقنيات الحديثة مثل Nginx و HAProxy عبر LXD على نظام التشغيل Ubuntu 16.04 من الحلول المتقدمة التي تعزز الأداء وتوفر التوسع بسهولة. في هذا المقال، سنتناول كيفية إعداد هذه البيئة خطوةً بخطوة مع شرح دور كل من LXD و Nginx و HAProxy في عملية استضافة المواقع.

مقدمة

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

ما هو LXD؟

LXD هو نظام لإدارة الحاويات (containers) يوفر بيئة تشغيل معزولة مشابهة للآلات الافتراضية لكن مع تحسينات في الأداء والكفاءة. يعتمد LXD على تقنيات Linux Containers (LXC) ويُعد بديلاً حديثًا لخوادم الحاويات التقليدية. من خلال LXD، يمكن إنشاء حاويات متعددة تعمل على نفس النظام باستخدام موارد أقل، مما يزيد من كفاءة استغلال الموارد.

ما هو Nginx؟

Nginx هو خادم ويب شهير وموزع أحمال (Load Balancer) يستخدم بشكل رئيسي في توفير أداء عالي وخيارات توجيه مرنة للمحتوى عبر الإنترنت. يتميز Nginx بسرعته وكفاءته في التعامل مع حركة المرور العالية. عند دمج Nginx مع LXD، يمكن استضافة عدة مواقع في حاويات متعددة وتشغيلها بكفاءة عالية.

ما هو HAProxy؟

HAProxy هو أداة مخصصة لتوزيع الأحمال بين الخوادم المختلفة. يمكن استخدام HAProxy لزيادة التوفر والتوسع لتطبيقات الويب من خلال توزيع حركة المرور بين عدة خوادم. في بيئة تحتوي على LXD و Nginx، يمكن استخدام HAProxy لتوجيه الطلبات بين عدة حاويات تعمل كخوادم ويب، مما يساهم في تحسين الأداء وتقليل الضغط على الخوادم الفردية.

الخطوة 1: إعداد Ubuntu 16.04 و تثبيت الأدوات اللازمة

قبل البدء في إعداد البيئة، يجب التأكد من أن لديك Ubuntu 16.04 مُثبتًا وأنك تمتلك صلاحيات الجذر (Root). أولاً، تأكد من تحديث النظام باستخدام الأوامر التالية:

bash
sudo apt-get update sudo apt-get upgrade

ثم قم بتثبيت الأدوات اللازمة مثل Nginx و HAProxy و LXD:

bash
sudo apt-get install nginx haproxy lxd

الخطوة 2: إعداد LXD

بعد تثبيت LXD، يمكنك البدء في إنشاء الحاويات التي ستستضيف عليها المواقع. أولاً، قم بتهيئة LXD باستخدام الأمر:

bash
sudo lxd init

ستقوم هذه الخطوة بتكوين LXD على النظام الخاص بك. خلال هذه العملية، سيطلب منك اختيار طريقة التخزين (مثل ZFS أو LVM) وغيرها من الخيارات. بعد اكتمال التهيئة، يمكنك التحقق من حالة LXD باستخدام الأمر:

bash
lxc list

الخطوة 3: إنشاء حاويات لتشغيل Nginx

لنفترض أن لديك عدة مواقع ترغب في استضافتها، بحيث كل موقع سيعمل داخل حاوية مستقلة. أولاً، قم بإنشاء الحاوية باستخدام LXD:

bash
lxc launch ubuntu:16.04 site1

سوف يقوم هذا الأمر بإنشاء حاوية تسمى site1 باستخدام صورة Ubuntu 16.04. كرر هذه العملية لإنشاء حاويات إضافية للمواقع الأخرى:

bash
lxc launch ubuntu:16.04 site2 lxc launch ubuntu:16.04 site3

الآن لديك ثلاث حاويات، وكل واحدة منها ستكون مسؤولة عن استضافة موقع ويب منفصل.

الخطوة 4: تثبيت Nginx داخل الحاويات

الخطوة التالية هي تثبيت Nginx داخل كل حاوية على حدة. للقيام بذلك، يمكنك الدخول إلى الحاوية باستخدام الأمر lxc exec:

bash
lxc exec site1 -- bash sudo apt-get update sudo apt-get install nginx

كرر نفس الخطوات لبقية الحاويات site2 و site3.

الخطوة 5: إعداد المواقع على Nginx

الآن يجب إعداد المواقع داخل Nginx لكل حاوية. انتقل إلى المسار الخاص بـ Nginx في كل حاوية لتعديل ملفات التكوين:

bash
sudo nano /etc/nginx/sites-available/default

في ملف التكوين، يمكنك تعديل المضيف الافتراضي وإضافة المواقع المختلفة. على سبيل المثال، يمكنك إضافة تكوين للموقع الأول كالتالي:

nginx
server { listen 80; server_name site1.example.com; root /var/www/site1; index index.html index.htm; }

كرر هذه العملية لكل حاوية مع تحديث server_name ومسار root ليناسب كل موقع.

الخطوة 6: إعداد HAProxy

HAProxy سيلعب دور الموزع الأحمال بين الحاويات المختلفة التي تعمل كخوادم Nginx. لتثبيت HAProxy على Ubuntu 16.04، استخدم الأمر التالي:

bash
sudo apt-get install haproxy

بعد التثبيت، قم بتحرير ملف التكوين الخاص بـ HAProxy:

bash
sudo nano /etc/haproxy/haproxy.cfg

أضف تكوينًا لتوزيع الأحمال بين الحاويات الخاصة بـ Nginx. على سبيل المثال:

haproxy
frontend http_front bind *:80 default_backend http_back backend http_back server site1 10.0.0.1:80 check server site2 10.0.0.2:80 check server site3 10.0.0.3:80 check

في هذا التكوين، يجب استبدال 10.0.0.1, 10.0.0.2, و 10.0.0.3 بعنوانات الـ IP الخاصة بالحاويات. يمكنك معرفة عنوان الـ IP الخاص بالحاوية باستخدام الأمر:

bash
lxc list

بعد تعديل التكوين، قم بإعادة تشغيل HAProxy لتطبيق التغييرات:

bash
sudo systemctl restart haproxy

الخطوة 7: تكامل HAProxy و Nginx

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

الخطوة 8: التأكد من عمل النظام بشكل صحيح

للتأكد من أن كل شيء يعمل بشكل صحيح، قم بإجراء اختبارات باستخدام المتصفح أو أداة مثل curl. جرب الوصول إلى المواقع عبر HAProxy باستخدام اسم النطاق المخصص مثل site1.example.com أو site2.example.com.

يمكنك أيضًا استخدام الأمر التالي للتحقق من حالة HAProxy:

bash
sudo systemctl status haproxy

وأيضًا، يمكنك التحقق من حالة Nginx داخل الحاويات باستخدام:

bash
sudo systemctl status nginx

الخاتمة

باستخدام LXD و Nginx و HAProxy على Ubuntu 16.04، يمكن استضافة عدة مواقع على نفس الخادم بكفاءة عالية. من خلال استخدام LXD، تحصل على بيئة معزولة لكل موقع، مما يقلل من مخاطر التداخل بين المواقع المختلفة. أما Nginx، فيوفر الأداء العالي في إدارة المواقع، بينما يساهم HAProxy في توزيع الأحمال بشكل فعال بين الخوادم المختلفة.