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
backend
dengan zonabackend
yang ukurannya 64k. Kita juga nge-aktifin API di/api
.Tambahin Server ke Upstream: Pake
curl
buat nambahin server ke upstream:curl -X POST -d '{"server":"backend1.example.com"}' http://localhost/api/3/http/upstreams/backend/servers
Ini bakal nambahin
backend1.example.com
ke upstreambackend
.Hapus Server dari Upstream: Buat hapus server, cari dulu ID servernya pake:
curl http://localhost/api/3/http/upstreams/backend/servers
Terus 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:8500
dan nyimpen konfigurasi servernya di/etc/nginx/conf.d/servers/servers_backend.conf
.Tambahin Server ke Consul: Pake
curl
buat 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.com
NGINX 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!