Config Loadbalancer on Nginx

Loadbalancer จะเป็นเครื่องเซิร์ฟเวอร์ที่จะทำให้สามารถรองรับภาระงานที่มีจำนวนมากได้โดยมันจะทำหน้าที่เป็นตัวกระจายงานไปให้กับเครื่องเซิร์ฟเวอร์ต่าง ๆ ภายในระบบ ทำให้ลดการเกิดปัญหา overload และทำให้ระบบมีประสิทธิภาพมากขึ้น

โดยในที่นี้เราจะให้เซิร์ฟเวอร์เครื่องนึงจะทำหน้าที่เป็น loadbalancer โดยทำงานอยู่บน nginx

1) ติดตั้ง nginx บนเครื่องเซิร์ฟเวอร์นี้

apt install nginx

2)แก้ไขไฟล์ nginx config เพื่อให้ nginx ทำงานเป็น loadbalancer

nano /etc/nginx/sites-available/loadbalancer

ใส่คอนฟิกนี้ลงไปในไฟล์ loadbalancer โดยวิธีการที่จะใช้เป็นแบบ Round-Robin

upstream mywebapp1 {

   server ply-03.unddev.net;

   server ply-04.unddev.net;

}

server {

#    listen 80;

   listen 443 ssl;

   server_name ply-03.unddev.net ply-04.undddev.net;

   ssl on;

   ssl_certificate         /etc/nginx/ssl/loadbalancer/fullchain.pem;

   ssl_certificate_key     /etc/nginx/ssl/loadbalancer/privkey.pem;

#    ssl_trusted_certificate /etc/nginx/ssl/ply01/ca-certs.pem;

#   ssl_session_cache shared:SSL:20m;

 #  ssl_session_timeout 10m;

#    ssl_prefer_server_ciphers       on;

#    ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;

#    ssl_ciphers                     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;

#    add_header Strict-Transport-Security "max-age=31536000";

   location / {

       proxy_pass https://45.127.62.92;

       proxy_set_header Host $host;

       proxy_set_header X-Real-IP $remote_addr;

       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

       proxy_set_header X-Forwarded-Proto $scheme;

   }

}

ln -s /etc/nginx/sites-available/loadbalancer /etc/nginx/sites-enabled/

rm /etc/nginx/sites-enabled/default

3) เพิ่ม ssl file โดยคัดลอกไฟล์ fullchain.pem และ privkey.pem จากเครื่อง web server มาไว้ใน path ที่ได้ใส่ในไฟล์ config

cd /etc/nginx

mkdir -p ssl/loadbalancer

nano fullchain.pem

nano privkey.pem

(ไม่มีรูปเพราะว่า key และ private key ต่าง ๆ ไม่ควรเผยแพร่)

4) แก้ไข host file ในเครื่องตัวเอง เพื่อบันทึก donaimname ip ของserver
C:\Windows\System32\drivers\etc\

5) restart nginx service

nginx -s reload

6) ตรวจสอบว่าเส้นทางในการเข้า web server นั้นได้ผ่าน loadbalancer แล้วหรือไม่