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 แล้วหรือไม่