Setup load balancing using nginx in linux

  • فرض کنید دو سرور با آدرس‌های زیر در اختیار دارید که بر روی آنها Apache2 نصب و راه اندازی و پیکربندی شده است. (یعنی پورت ۸۰ آنها پاسخگو بوده و وب سایت بالا است)
    • سرور اول : 192.168.134.150
    • سرور دوم : 192.168.134.151

  • حال می‌توان یک سرور به عنوان سرور لود بالانس در جلوی این دو سرور قرار داد
  • در این صورت متقاضیانی که قصد باز کردن وب سایت را دارند، آدرس وب سرور لود بالانس را وارد می کنند.
  • حال در سرور لود بالانس تصمیم گیری می‌شود که در خواست‌ها به سمت کدام یک از سرورها (اول یا دوم) فرستاده شود.
  • عمل لود بالانس در این سناریو با وب سرور nginx انجام می‌شود.

  • توجه کنید که در سرور لود بالانس (با وب سرور nginx) هیچ فایل یا صفحه‌ای میزبانی نمی‌شود.
  • تمام مراحل بالا در سیستم عامل ubuntu 18.04 دنبال می‌شود.
  • فرض بر این شده است که apache2 بر روی سرور اول و دوم نصب و راه اندازی شده است.

  • در سرور لود بالانس ابتدا بسته ها را بروز رسانی کنید :
# apt-get update ; apt-get -y dist-upgrade
  • سپس بسته‌ی nginx را نصب کنید :
# apt-get -y install nginx
  • پرونده‌ی زیر را ایجاد کنید و آن را با یک ویرایشگر باز کنید :
# touch /etc/nginx/site-available/load-balancing.conf
  • محتویات زیر را برای پرونده‌ی بالا در نظر بگیرید :
upstream backend {
        server 192.168.134.150;
        server 192.168.134.151;
    }
	
    server {
        listen      80 default_server;

        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;
	}
}
  • در صورت استفاده از دامنه، نام دامنه را به صورت زیر وارد کنید :
...
listen      80 default_server;
        server_name TESTING.lan;
        location / {
..
  • در بخش و قسمت upstream می‌توان نحوه و متد لود بالانس را مشخص کرد.
  • به عنوان مثال least_conn باعث می شود تا درخواست‌ها به سمت سروری هدایت شوند که کمترین بار و اتصال را دارد.
upstream backend {
        least_conn;
        server 192.168.134.150;
        server 192.168.134.151;
    }
  • به عنوان مثال ip_hash باعث می‌شود تا در خواست ها به صورت استاتیک و بر اساس آدرس مبدا به سمت سرورها هدایت شوند.
upstream backend {
        ip_hash;
        server 192.168.134.150;
        server 192.168.134.151;
    }
  • به عنوان مثال می‌توان به هر یک از سرورها وزن اختصاص داد تا اولویت انتخاب با آن باشد. (هر چه عدد بالاتر باشد اولویت بالاتر است)
upstream backend {
        server 192.168.134.150 weight=4;
        server 192.168.134.151;
    }
  • در نهایت کافیست از پرونده‌ی بالا یک Link ایجاد کنید :
ln -s /etc/nginx/site-available/load-balancing.conf /etc/nginx/site-enabled/load-balancing.conf

  • به منظور اطمینان از صحت پرونده‌های کانفیگ از دستور زیر استفاده کنید :
# nginx -t
  • در نهایت سرویس nginx را راه اندازی مجدد کنید :
# systemctl restart nginx

  • مطالعه بیشتر در این لینک | PDF

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *