Docker

Cara Setup Docker Swarm untuk High Availability Server

Cara Setup Docker Swarm untuk High Availability Server

Docker Swarm adalah tool orchestration bawaan Docker untuk menjalankan aplikasi di beberapa server (nodes). Berbeda dari Kubernetes yang kompleks, Swarm cukup simpel untuk dipahami dan di-setup, cocok untuk tim kecil yang butuh high availability.

Kapan Butuh Docker Swarm?

  • Multi-server deployment — jalankan aplikasi di 2+ server
  • Zero-downtime deploy — update aplikasi tanpa restart
  • Auto-scaling — scale container otomatis berdasarkan load
  • Fault tolerance — jika satu server down, aplikasi tetap jalan di server lain

Setup Cluster

# Di server manager (node pertama)
docker swarm init --advertise-addr 192.168.1.100

# Copy token yang muncul, lalu jalankan di worker nodes
docker swarm join --token SWMTKN-1-xxx 192.168.1.100:2377

# Cek semua nodes
docker node ls

Deploy Service

# Deploy service dengan 3 replicas
docker service create   --name web   --replicas 3   --publish 80:80   nginx:alpine

# Lihat service
docker service ls

# Lihat detail
docker service ps web

# Scale up/down
docker service scale web=5

Stack Deployment (Docker Compose untuk Swarm)

# docker-stack.yml
version: '3.8'
services:
  web:
    image: myapp:latest
    ports:
      - "80:80"
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
    networks:
      - frontend

  db:
    image: postgres:16-alpine
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - backend

networks:
  frontend:
  backend:

volumes:
  pgdata:
# Deploy stack
docker stack deploy -c docker-stack.yml myapp

# Lihat semua services
docker stack services myapp

# Update service
docker service update --image myapp:v2 myapp_web

Load Balancing

Docker Swarm memiliki built-in load balancing. Request ke port 80 akan didistribusikan ke semua replicas secara round-robin. Untuk load balancing yang lebih advanced, gunakan Traefik atau Caddy sebagai reverse proxy.

Monitoring Swarm

Gunakan Grafana + Prometheus untuk monitor cluster Anda. Node Exporter bisa di-deploy sebagai service untuk mengumpulkan metrics dari semua nodes.

Tips Production

  • Minimal 3 manager nodes untuk quorum
  • Gunakan overlay network untuk service communication
  • Setup backup otomatis untuk volume data
  • Monitor resource usage dengan docker stats

Untuk konfigurasi awal server, baca panduan self-hosting dari nol. Jika masih di tahap belajar container, mulai dari konsep dasar Docker.