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.