Cara menjalankan :
-
Cari tau alamat IP localhost, misalnya
192.168.52.10
-
Isikan IP tersebut di konfigurasi load balancer,
nginx/loadbalancer.conf
# List of application servers upstream api_servers { server 192.168.52.10:8080; server 192.168.52.10:8081; }
-
Jalankan load balancer dan database
docker compose up
-
Jalankan instance pertama di port 8080
mvn clean spring-boot:run
-
Jalankan instance kedua di port 8081
SERVER_PORT=8081 mvn clean spring-boot:run
-
Browse ke
http://localhost:10000/api/public/appinfo
. Refresh beberapa kali untuk memastikan port aplikasi berganti-ganti (round robin){ "client-port" : 57807, "client-ip" : "0:0:0:0:0:0:0:1", "server-ip" : "0:0:0:0:0:0:0:1", "server-port" : 8080, "app-version" : "0a7e7c8" }
Setelah direfresh, portnya harusnya ganti
{ "client-port" : 57807, "client-ip" : "0:0:0:0:0:0:0:1", "server-ip" : "0:0:0:0:0:0:0:1", "server-port" : 8081, "app-version" : "0a7e7c8" }
Bila port tidak berganti, bisa dicoba untuk mematikan salah satu instance.
-
Browse ke url terproteksi
http://localhost:10000/api/protected/userinfo
. Pada request pertama, user akan diminta untuk login. Masukkan usernamecoba
dan passwordcoba123
. Response yang didapatkan seperti ini{ "client-port" : 58682, "permissions" : [ { "authority" : "VIEW_USER_INFO" } ], "client-ip" : "192.168.52.10", "server-ip" : "192.168.52.10", "server-port" : 8080, "username" : "coba" }
-
Dengan menyimpan data session di database, pada saat terjadi perpindahan IP user tidak disuruh login ulang pada saat mengakses url
http://localhost:10000/api/protected/userinfo
. Coba refresh berkali-kali sampai mendapatkan port berbeda. Bila port tidak berganti, coba matikan salah satu instance.