Panduan Linux

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:

  1. 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 zona backend yang ukurannya 64k. Kita juga nge-aktifin API di /api.

  2. 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 upstream backend.

  3. 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.

  1. Install Modul: Kalian perlu kompilasi ulang NGINX dengan modul ini. Caranya bisa liat di GitHub nginx-upsync-module.

  2. 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.

  3. 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

Nah, itu dia cara bikin upstream pool dinamis di NGINX. Semoga bermanfaat, ya! Kalo ada pertanyaan, tinggalin aja di komentar. Happy coding!

#Nginx #Tutorial