“Mengelola satu container itu gampang. Mengelola puluhan container? Selamat datang di dunia yang penuh tantangan!”
Ketika aplikasi semakin besar, menjalankan satu atau dua container secara manual sudah tidak cukup. Kita butuh alat yang bisa:
Menjalankan banyak container di berbagai server.
Mengatur scaling (menambah/mengurangi container sesuai beban kerja).
Mengelola komunikasi antar container dengan mudah.
Menjaga aplikasi tetap berjalan walaupun ada container yang mati.
Nah, di sinilah Docker Swarm berperan!
1. Apa Itu Docker Swarm?
Docker Swarm adalah fitur orkestrasi bawaan Docker yang memungkinkan kita mengelola banyak container dalam sebuah cluster dengan mudah.
Singkatnya, Docker Swarm mengubah beberapa server menjadi satu kesatuan yang bisa kita kelola sebagai satu entitas besar.
Analogi sederhana:
Bayangkan Docker Swarm seperti segerombolan semut pekerja. Mereka bekerja sama secara otomatis untuk menjalankan tugas-tugas tanpa perlu instruksi manual dari ratu semut (yaitu kita sebagai admin server).
2. Kenapa Harus Pakai Docker Swarm?
Docker Swarm memiliki beberapa keunggulan dibanding menjalankan container secara manual:
Fitur | Docker Swarm | Docker Standar |
---|---|---|
Scaling otomatis | Ya | Tidak |
Load balancing | Ya | Tidak |
Cluster management | Ya | Tidak |
Self-healing (restart otomatis container yang mati) | Ya | Tidak |
Deployment mudah | Ya | Tidak |
Dengan Docker Swarm, kita bisa mengatur sekumpulan server untuk bekerja sama seperti satu server besar!
3. Struktur Dasar Docker Swarm
Sebuah cluster Docker Swarm terdiri dari:
1️ Manager Node
- Bertanggung jawab mengelola cluster.
- Menjalankan perintah untuk menambah atau menghapus container.
- Bisa lebih dari satu untuk redundansi (biar kalau satu mati, yang lain masih bisa jalan).
2️ Worker Node
- Menjalankan container yang diperintahkan oleh Manager.
- Hanya mengikuti instruksi tanpa memutuskan sendiri.
Contoh ilustrasi sederhana:
+--------------------+
| Manager Node |
| (Mengelola Cluster)|
+--------------------+
|
| Menjalankan tugas ke Worker Nodes
v
+--------------------+ +--------------------+ +--------------------+
| Worker Node 1 | | Worker Node 2 | | Worker Node 3 |
| (Menjalankan Apps) | | (Menjalankan Apps) | | (Menjalankan Apps) |
+--------------------+ +--------------------+ +--------------------+
Intinya: Manager Node memimpin, Worker Node bekerja!
4. Cara Membuat Cluster Docker Swarm
(a) Inisialisasi Docker Swarm
Pertama, jalankan perintah ini di Manager Node untuk menginisialisasi Swarm:
docker swarm init --advertise-addr <IP_MANAGER>
Misalnya:
docker swarm init --advertise-addr 192.168.1.100
Jika berhasil, akan muncul output seperti ini:
Swarm initialized: current node (abcd1234) is now a manager.
Dan juga perintah untuk menambahkan worker:
docker swarm join --token SWMTKN-1-xxxxx <IP_MANAGER>:2377
(b) Menambahkan Worker Node ke Cluster
Jalankan perintah join tadi di server Worker:
docker swarm join --token SWMTKN-1-xxxxx 192.168.1.100:2377
Sekarang Worker Node sudah terhubung ke Swarm Manager!
Cek daftar node dengan perintah:
docker node ls
Outputnya akan menunjukkan daftar node dalam cluster:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
abcd1234 manager-node Ready Active Leader
efgh5678 worker-node-1 Ready Active
ijkl9101 worker-node-2 Ready Active
Cluster Swarm kamu sudah siap!
5. Menjalankan Layanan di Docker Swarm
Docker Swarm menggunakan konsep services untuk menjalankan aplikasi.
Misalnya, kita ingin menjalankan Nginx dengan 3 replika:
docker service create --name web --replicas 3 -p 8080:80 nginx
Penjelasan perintah:
--name web
→ Nama layanan.--replicas 3
→ Menjalankan 3 container Nginx.-p 8080:80
→ Menghubungkan port 8080 host ke 80 di container.
Cek apakah layanan berjalan:
docker service ls
Hasilnya:
ID NAME MODE REPLICAS IMAGE
abcd1234 web replicated 3/3 nginx
Sekarang, Nginx berjalan di tiga container yang tersebar di beberapa node!
6. Scaling Layanan Secara Dinamis
Jika trafik meningkat, kita bisa menambah jumlah container tanpa menghentikan layanan:
docker service scale web=5
Sekarang, ada 5 container Nginx yang berjalan!
Cek statusnya dengan:
docker service ps web
7. Menghapus Layanan di Docker Swarm
Kalau mau menghapus layanan:
docker service rm web
Sekarang, semua container Nginx akan dihentikan dan dihapus dari cluster!
8. Kesimpulan: Docker Swarm Itu Keren!
Docker Swarm memudahkan pengelolaan banyak container.
Bisa melakukan load balancing dan scaling otomatis.
Memiliki fitur self-healing (container mati akan otomatis diganti).
Mudah digunakan tanpa perlu alat orkestrasi tambahan.
Docker Swarm cocok untuk:
- Proyek kecil hingga menengah.
- Orkestrasi container yang ringan.
- Pengelolaan cluster tanpa kompleksitas Kubernetes.
Sekarang, kamu sudah paham konsep Docker Swarm dan orkestrasi container!
Coba buat Swarm sendiri dan lihat keajaibannya!
0 Comments