load balancing web server with nginx

 load balancing yaitu membagi beban server ke beberapa server untuk menghandle request. jadi adaa 1 server didepan yang berfungsi sebagai gateway atau gerbang ke server app yang sebenarnya. dibelakang ada lebih dari 1 server yang memiliki service, dan server gateway ini membagi request ke server yang sedang menganggur / load nya masih tersedia. 

nah seperti gambar diatas. ada perusahaan yang memiliki layanan service web app. service tersebut dijalankan oleh 2 server secara bersamaan. akan ada 1 server yang berfungsi sebagai gateway atau pengatur meneruskan ke server web app dibelakang. pembagian load ini disebut load balancing

keperluaan

  1. 3 server ( lab kali menggunakan centos ) sudah terinstall nginx.
  2. masing masing server sudah dapat terhubung dan dapat diakses dari luar.

lab kali ini hanya akan melakukan setting pada server load balancing menggunakan nginx. untuk lab membuat web server dapat dilihat pada postingan Nginx virtualhost with different port

konfigurasi load balance dengan nginx

1. intall nginx

yum install nginx

2. hidupkan service nginx

systemctl start nginx

3. pindah ke directory nginx

cd /etc/nginx

4. kemudian tambahkan konfig berikut pada nginx.conf. dapat dengan vi atau nano. default centos menggunakan vi

add this syntax on http

                upstream backend {

                server 10.10.10.2; #server backend

                server 10.10.10.3;

                        server 10.10.10.2:8080; # server backend port 8080

                }


        add this syntax on server 

                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;


                location / {

                proxy_pass http://backend; #location pointing to upstream backend server describe on http

            }

  • upstream backend ini berisi ip server web app dibelakang.  kemudian jika service web app berada diport selain 80, dapat ditambahkan :nama_port. misalkan port dibelakang 8080 maka seperti contoh diatas ditulisnya 10.10.10.2:8080. 
  • kemudian untuk server listen port ini untuk port server nginx, dipasang default 80, tidak perlu dimasukkan 8080 kalau server backend port 8080. karena client akan mengakses nginx load balance port 80, dan nginx akan meneruskan ke service web app sesuai port yang sudah diatur di upstream backend. 
  • bagian location. proxy_pass ini untuk meneruskan ip nya. karena sudah didefinisika diatas pada bagian upstream. tinggal masukkan nama upstreamnya

hasilnya seperti ini

5. cek konfig nginx dan restart service nginx.

nginx -t

systemctl restart nginx

setelah semuanya selesai. saat melakukan testing usahakan tampilan web app berbeda, ini untuk mempermudah saat test  service load balance sudah berjalan sesuai skema. saatnya akses ke ip nginx load balance. lakukan refresh. seharusnya tampilan berbeda.

web 1
web 2

jika service web app dibelakang menggunakan OS centos, jangan lupa untuk open port pada firewall atau dapat dimatikan fireawallnya. default centos akan diblokir

Post a Comment

0 Comments