Cara Membuat Upstream Pool Dinamis di NGINX
Halo, teman-teman! Kali ini kita bakal bahas gimana caranya bikin upstream pool dinamis di NGINX. Buat yang belum tau, upstream pool itu kayak kumpulan server yang bisa nge-handle request dari client. Nah, kalo dinamis, berarti kita bisa nambah atau ngurangin server di pool itu tanpa harus restart NGINX. Keren, kan? Yuk, simak caranya!
1. Pahami Dulu Apa Itu Upstream di NGINX
Sebelum kita mulai, penting banget nih buat ngerti dulu apa itu upstream di NGINX. Upstream itu adalah blok konfigurasi yang dipake buat nentuin ke mana aja request dari client bakal diarahkan. Biasanya, upstream ini berisi daftar server yang siap nge-handle request.
Contoh konfigurasi upstream yang biasa:
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
Nah, kalo kita mau bikin upstream pool yang dinamis, kita perlu cara biar bisa nambah atau ngurangin server di blok upstream itu tanpa harus restart NGINX.
2. Pake NGINX Plus atau NGINX dengan Modul Dinamis
Sayangnya, fitur upstream pool dinamis ini cuma ada di NGINX Plus, yang versi berbayarnya NGINX. Tapi, kalo kalian pake NGINX open source, kalian bisa pake modul dinamis kayak ngx_dynamic_upstream atau nginx-upsync-module.
3. Contoh Pake NGINX Plus
Kalo kalian pake NGINX Plus, kalian bisa pake fitur API buat ngatur upstream pool secara dinamis. Caranya gini:
-
Aktifin API di NGINX Plus: Tambahin konfigurasi ini di
nginx.conf:http { upstream backend { zone backend 64k; } server { listen 80; location / { proxy_pass http://backend; } location /api { api write=on; } } }Di sini, kita bikin upstream
backenddengan zonabackendyang ukurannya 64k. Kita juga nge-aktifin API di/api. -
Tambahin Server ke Upstream: Pake
curlbuat nambahin server ke upstream:curl -X POST -d '{"server":"backend1.example.com"}' http://localhost/api/3/http/upstreams/backend/serversIni bakal nambahin
backend1.example.comke upstreambackend. -
Hapus Server dari Upstream: Buat hapus server, cari dulu ID servernya pake:
curl http://localhost/api/3/http/upstreams/backend/serversTerus hapus pake ID yang didapet:
curl -X DELETE http://localhost/api/3/http/upstreams/backend/servers/0
4. Contoh Pake Modul nginx-upsync-module
Kalo kalian pake NGINX open source, kalian bisa pake modul nginx-upsync-module. Modul ini bisa sinkronisasi upstream dari sumber eksternal kayak etcd, Consul, atau DNS.
-
Install Modul: Kalian perlu kompilasi ulang NGINX dengan modul ini. Caranya bisa liat di GitHub nginx-upsync-module.
-
Konfigurasi NGINX: Setelah modul terinstall, tambahin konfigurasi kayak gini:
http { upstream backend { upsync 127.0.0.1:8500/v1/kv/upstreams/backend upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off; upsync_dump_path /etc/nginx/conf.d/servers/servers_backend.conf; include /etc/nginx/conf.d/servers/servers_backend.conf; } server { listen 80; location / { proxy_pass http://backend; } } }Di sini, NGINX bakal sinkronisasi upstream dari Consul di
127.0.0.1:8500dan nyimpen konfigurasi servernya di/etc/nginx/conf.d/servers/servers_backend.conf. -
Tambahin Server ke Consul: Pake
curlbuat nambahin server ke Consul:curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8500/v1/kv/upstreams/backend/backend1.example.comNGINX bakal otomatis nge-load perubahan ini tanpa perlu restart.
5. Tips dan Trik
- Pastiin kalian pake versi NGINX atau modul yang kompatibel.
- Selalu backup konfigurasi sebelum ngubah-ngubah.
- Monitor terus upstream pool biar tau kalo ada server yang down atau perlu di-scale.
Nah, itu dia cara bikin upstream pool dinamis di NGINX. Semoga bermanfaat, ya! Kalo ada pertanyaan, tinggalin aja di komentar. Happy coding!