“Sendiri itu berat, biar container yang berkerumun bersama-sama.”
Kalau kamu sudah merasa cukup hebat menjalankan container dengan docker run
, tunggu dulu!
Apa jadinya kalau harus menjalankan puluhan atau bahkan ratusan container di beberapa server sekaligus?
Di sinilah Docker Swarm beraksi!
Docker Swarm adalah fitur orkestrasi bawaan Docker yang memungkinkan kita membuat cluster untuk menjalankan banyak container di berbagai server secara mudah, otomatis, dan scalable.
Hari ini kita akan membangun Cluster Docker Swarm dari nol!
1. Apa Itu Cluster Docker Swarm?
“Cluster Docker Swarm itu seperti Avengers… banyak anggota, tapi tetap satu tim.”
Cluster Docker Swarm adalah sekumpulan server (node) yang bekerja sama untuk menjalankan dan mengatur container secara otomatis.
Sebuah cluster Swarm terdiri dari dua jenis node:
1. Manager Node
- Bertanggung jawab mengelola cluster.
- Menjalankan perintah scaling dan update service.
- Bisa lebih dari satu untuk redundansi (biar kalau satu mati, yang lain tetap bisa jalan).
2. Worker Node
- Menjalankan container sesuai perintah dari Manager Node.
- Tidak bisa mengambil keputusan sendiri.
Ilustrasi Cluster Docker Swarm:
+--------------------+
| 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) |
+--------------------+ +--------------------+ +--------------------+
Jadi, alih-alih kita menjalankan container secara manual satu per satu, cukup bilang ke Manager Node, dan dia yang akan mendistribusikan tugas ke Worker Node!
2. Persiapan Sebelum Membuat Cluster Swarm
Sebelum mulai, kita butuh beberapa hal:
Minimal dua server (bisa virtual machine atau cloud instance seperti AWS, DigitalOcean, dll.).
Docker sudah terinstal di semua server.
Akses SSH ke semua server.
IP Address dari masing-masing server.
Catatan:
- Manager Node bisa juga berfungsi sebagai Worker Node, tapi kalau cluster besar, lebih baik pisahkan.
- Pastikan firewall tidak memblokir port 2377, 7946, dan 4789, karena ini digunakan untuk komunikasi antar node.
3. Inisialisasi Docker Swarm
(a) Jalankan Perintah swarm init
di Manager Node
Login ke server yang akan dijadikan Manager Node, lalu jalankan:
docker swarm init --advertise-addr <IP_MANAGER>
Contoh:
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.
Selamat, Manager Node sudah siap!
4. Menambahkan Worker Node ke Cluster
Dari output swarm init
, kita akan mendapatkan perintah untuk menambahkan Worker Node ke cluster, seperti ini:
docker swarm join --token SWMTKN-1-xxxxx 192.168.1.100:2377
Login ke server yang akan dijadikan Worker Node, lalu jalankan perintah ini:
docker swarm join --token SWMTKN-1-xxxxx 192.168.1.100:2377
Jika berhasil, akan muncul pesan:
This node joined a swarm as a worker.
Worker Node sekarang sudah masuk ke dalam cluster!
5. Mengecek Daftar Node dalam Cluster
Dari Manager Node, jalankan:
docker node ls
Hasilnya akan menunjukkan daftar node yang terhubung ke 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
Keterangan:
Leader
→ Node ini adalah Manager utama.Ready
→ Node sedang dalam kondisi baik dan aktif.Active
→ Node siap menjalankan container.
Cluster Docker Swarm kamu sudah berjalan!
6. Menjalankan Layanan di Cluster Docker Swarm
Sekarang kita coba menjalankan layanan Nginx dalam 3 replika container:
docker service create --name web --replicas 3 -p 8080:80 nginx
Penjelasan:
--name web
→ Nama layanan.--replicas 3
→ Menjalankan 3 container Nginx.-p 8080:80
→ Menghubungkan port 8080 host ke 80 di container.
Cek status layanan dengan:
docker service ls
Hasilnya:
ID NAME MODE REPLICAS IMAGE
abcd1234 web replicated 3/3 nginx
Sekarang layanan Nginx sudah berjalan di cluster!
7. Scaling Layanan Tanpa Downtime
Misalnya trafik website naik dan kita perlu menambah jumlah container, cukup jalankan perintah ini:
docker service scale web=5
Sekarang, ada 5 container Nginx yang tersebar di berbagai node!
Cek dengan:
docker service ps web
Scaling tanpa downtime, otomatis, dan super fleksibel!
8. Menghapus Layanan di Docker Swarm
Jika ingin menghapus layanan, jalankan:
docker service rm web
Semua container yang terkait akan otomatis dihentikan dan dihapus dari cluster!
9. Kesimpulan: Docker Swarm Itu Keren!
Docker Swarm membuat pengelolaan banyak container jadi lebih mudah.
Bisa menjalankan aplikasi terdistribusi tanpa konfigurasi yang ribet.
Scaling otomatis hanya dengan satu perintah.
Cluster bisa memiliki beberapa Manager dan Worker untuk redundancy.
Orkestrasi yang lebih ringan dibanding Kubernetes!
Sekarang kamu sudah berhasil membuat Cluster Docker Swarm!
0 Comments