Skip to content

Repository files navigation

Load Balancer Simulation with Node.js and Nginx

Simulasi load balancing menggunakan dua server backend Node.js dan Nginx sebagai load balancer. Proyek ini menggunakan Docker dan Docker Compose untuk memudahkan setup dan deployment.


Struktur Proyek

.
├── Dockerfile           # Dockerfile untuk aplikasi Node.js
├── Dockerfile.nginx     # Dockerfile untuk Nginx load balancer
├── docker-compose.yml   # Konfigurasi docker-compose
├── index.js             # Source code aplikasi Node.js
└── README.md

Prasyarat

  • Docker Desktop terinstall di Mac/Windows/Linux
  • docker dan docker-compose sudah tersedia di terminal

Instalasi dan Build

  1. Clone repository ini

    git clone https://github.com/username/load-balancer-simulation.git
    cd load-balancer-simulation
  2. Build dan jalankan container menggunakan Docker Compose

    docker compose up --build

    Perintah ini akan:

    • Membangun image untuk aplikasi Node.js (app1 dan app2)
    • Membangun image untuk Nginx load balancer
    • Menjalankan ketiga container (app1, app2, dan nginx)

Cara Kerja

  • app1 berjalan di port internal 3000 dan di-mapping ke port host 3001
  • app2 berjalan di port internal 3000 dan di-mapping ke port host 3002
  • Nginx berjalan di port 80 di dalam container dan di-mapping ke port host 8080
  • Nginx bertindak sebagai load balancer dan meneruskan permintaan ke app1 dan app2 menggunakan algoritma Round Robin
  • Setiap aplikasi Node.js menampilkan pesan yang menunjukkan instance mana yang merespon (berdasarkan INSTANCE_NAME)

Testing

Setelah container berjalan, akses load balancer melalui browser atau curl:

curl http://localhost:8080/

Kamu akan melihat pesan dari app1 dan app2 secara bergantian (round robin).


Stop dan Cleanup

Untuk menghentikan dan menghapus container, network, dan volume yang dibuat:

docker compose down

Tips

  • Jika ingin melihat log dari container tertentu:

    docker logs app1
    docker logs app2
    docker logs nginx
  • Jika melakukan perubahan kode aplikasi, jalankan ulang build dengan:

    docker compose up --build

Struktur Dockerfile (Contoh)

Dockerfile (Node.js app):

FROM node:18-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
ENV PORT=3000
EXPOSE 3000
CMD ["node", "index.js"]

Dockerfile.nginx:

FROM nginx:stable-alpine
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Jika ada pertanyaan atau butuh bantuan, silakan hubungi saya via email fikri.muha28@gmail.com!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages