Administrasi Server

Lab 8.19 Load Balancing with Reverse Proxy on Nginx

10.00 G.M.A 0 Comments



Assalammualaikum wr wb

Alhamdulillah bertemu lagi kita ini adalah akhir dari Lab Nginx, uh akhirnya selesai juga yah baguslah kalau udah selesai , tapi besok mulai ada tugas Lab baru. Dah kali ini materi yang akan saya bagikan adalah loadbalancing menggunakan reverse proxy tapi bukan hanya load balancing tapi juga ada fail overnya juga loh mantap kan dah pokoknya nikmatin aja.


Konfigurasi Server


Sebelum konfigurasi Load Balance, edit terlebih dahulu file konfigurasi DNS pada zona forward dan juga zona reverse untuk menambahkan domain node1, node2 dan node3

1) Pertama edit terlebih dahulu file forward dan reverse milik domain yang sudah kalian buat.




2) Edit file konfigurasi Web Server Nginx. Disini saya mengeditnya pada file Virtual Host yang sudah saya buat pada lab sebelumnya tapi anda juga bisa membuatnya jika anda mau tapi yang pasti harus di folder conf.d dan harus berektensi .conf. Lalu tambahkan syntax ini untuk mengatur fungsi masing - masing tiap server.


Keterangan:


  • upstream diatas berguna untuk membuat block untuk membuat cluster untuk proxy. Dan cluster disana, saya menamainya dengan ghifarbackend. Namanya bisa anda tentukan sesuka hati
  • server merupakan anggota (node) dari cluster yang telah dibuat. Disana saya mendaftarkan 3 anggota atau 3 server, yaitu node1.ghifar.net node2.ghifar.netdan node3.ghifar.net dengan port :80 ini artinya dalam cluster ghifarbackend dengan anggotanya akan menangani request melalui port 80.
  • Secara default, jika tidak menambahkan apa apa, hanya server serveranda:port maka controller akan mengatur agar server tersebut hanya menangani 1 kali request dari klien. Dan jika ditambahkan keterangan seperti misalnya weight=2 merupakan beban yang ditanggung sebuah anggota atau node. Misalnya diatas, saya mengatur node1 dengan weightnya 2. Ini artinya node1 akan menangani 2 kali request klien secara berurutan. Kalau backup merupakan option yang akan menangani request jika anggota atau node yang lain mati. Ibaratnya seperti failover, tapi dalam lingkup metode loadbalancing. Jadi node3 yang saya atur sebagai server backup dia akan mengambil alih request dari klien kalau node yang lain mati. Sedangkan kalau node1 dan node2 hidup, node3 tidak akan menangani request dari klien.
  • proxy_redirect off berguna agar controller tidak melakukan redirect pada suatu konten website. 
  • proxy_set_header berguna untuk mengizinkan mendefinisikan ulang atau menambahkan bidang ke header permintaan yang dikirimkan ke server proxy.
  • proxy_set_header X-Real-IP $remote_addr berguna untuk mengatur alamat IP dari klien sehingga proxy dengan benar dapat membuat keputusan atau masuk berdasarkan informasi ini. Variabel $remote_addr merupakan IP client yang mengakses server.
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for maksudnya adalah Header X-Forwarded-For adalah daftar yang berisi alamat IP dari setiap server yang telah diprogramkan klien sampai saat ini. Pada contoh di atas, kami menetapkan variabel $ proxy_add_x_forwarded_for ini. Variabel ini mengambil nilai dari header X-Forwarded-For asli yang diambil dari klien dan menambahkan alamat IP server Nginx sampai akhir.
  • proxy_set_header Host $http_host Permintaan di atas menetapkan header "Host" ke variabel $http_host, yang berisi informasi tentang host asli yang diminta
  • proxy_pass_header node1,node2 berguna untuk mengizinkan lewat header yang dinonaktifkan dari server proxy ke client.
  • location / diatas menandakan konten website berada. Pada konfigurasi diatas, saya mengaturnya pada proxy_pass http://ghifarbackend/ .ini artinya saya mengaturnya kalau klien mengakses server controller, maka controller akan meneruskan request tersebut ke cluster ghifarbackend yang telah dibuat dengan beban yang telah ditentukan sebelumnya


3) Lalu restart service Nginx agar konfigurasi berjalan



Konfigurasi Server Node1, Node2 dan Node3


Lalu file index Pada masing-masing node1, node2 dan node3 untuk verifikasi hasil konfigurasi






Verifikasi


1) Lakukan pengetsan pada Web Browser client dengan cara mengakses http://Domain.kita milik Server Controller


Maka hasilnya akan sesuai dengan yang sudah dikonfigurasi pada server controller, karna node1 diatur untuk menampung beban request client sebanyak 3 kali maka pada saat request ke 4, controller akan mengarahkan ke node2, sedangkan server node3 tidak akan digunakan, karna dia berperan sebagai backup yang hanya akan digunakan pada saat server lainnya sedang down atau tidak aktif



2) Sekarang coba matikan server node1


Karna node1 mati, maka konten web akan dibebankan pada node2, sedangkan node 3 masih belum digunakan, karna server balancing (controller) menganggap masih ada server yang aktif dan kemudian request client akan diserahkan pada server tersebut.

4) Nah sekarang coba matikan server node2


5) Setelah itu, akses kembali server controller pada web browser client


Pada saat ini lah server backup (node3) digunakan. Karena node1 dan node2 mati, maka server balancing (controller) akan mencari server backup dan menyerahkan request client pada server backup tersebut.

6) Lantas bagaimana jika semua server mati? jika ingin tahu coba matikan server node3nya maka hasilnya adalah  503 bad gateway


You Might Also Like

0 komentar: