Advertisement

Membuat Cluster Docker Swarm – Panduan Lengkap

 “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!

Post a Comment

0 Comments