Apa yang bisa kami bantu?

Docker Swarm adalah sebuah tools yang memungkinkan Anda untuk mengelola dan mengatur cluster dari mesin Docker host. Ini merupakan bagian dari ekosistem Docker yang digunakan untuk orkestrasi aplikasi berbasis container. Dengan Docker Swarm, Anda dapat membuat sebuah cluster dari beberapa host Docker yang bekerja bersama-sama untuk menjalankan aplikasi yang terdistribusi sebagai container.

A. Persiapan

Server
- VPS AlmaLinux 8.5 (NVC/NEO Lite)
- 1 manager node
- 3 worker node
- Docker v25.0.3
 

Port
- 2377 TCP untuk komunikasi cluster management
- 7946 TCP dan UDP untuk komunikasi sesama node
- 4789 UDP untuk overlay network

B. Instalasi dan Konfigurasi

Langkah 1 - Setup hosts dengan menjalankan perintah berikut pada setiap node

~# nano /etc/hosts
192.168.20.11    manager    manager.bgncloud
192.168.20.21    worker1    worker1.bgncloud
192.168.20.22    worker2    worker2.bgncloud
192.168.20.23    worker3    worker3.bgncloud

Langkah 2 - Swarm Init di manager node

Server pada artikel ini menggunakan NEO Virtual Compute dimana memiliki Public IP dan Pirvate IP, sehingga untuk komunikasi Docker swarm akan menggunakan Private IP

[root@manager almalinux]# docker swarm init --advertise-addr 192.168.20.11

Hasil perintah di atas

Swarm initialized: current node (fcwcyehfib9g8of5wfa1b3ynq) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-036wdx1tiyri1ogis4s5qivc5cv7w0ah401djvurwba9ma3yjz-3ovcxusr6s9vck8dpt3ipshom 192.168.20.11:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Langkah 3 – Join sebagai worker

Jalankan perintah berikut di setiap worker node untuk join ke manager node

~#  docker swarm join --token SWMTKN-1-036wdx1tiyri1ogis4s5qivc5cv7w0ah401djvurwba9ma3yjz-3ovcxusr6s9vck8dpt3ipshom 192.168.20.11:2377

Hasil perintah di atas

This node joined a swarm as a worker.

Untuk menampilkan semua node yang ada, jalankan perintah berikut di manager node.

[root@manager almalinux]# docker node ls

Hasil perintah di atas

Langkah 4 - Membuat Swarm service

Pada artikel ini akan mensimulasikan Nginx dengan 3 replikasi container dan berjalan di port 80

[root@manager almalinux]# docker service create --name myweb --replicas 3 -p 80:80 nginx

Hasil perintah di atas

Tampilkan semua serviceTampilkan semua serviceTampilkan semua serviceTampilkan semua serviceTampilkan semua serviceTampilkan semua serviceTampilkan semua service

[root@manager almalinux]# docker service ls

Hasil perintah di atas

Dapat dilihat bahwa service myweb (nginx) direplikasi menjadi 3 container yang berjalan di node worker1, worker2, dan worker3

Mengecek container yang berjalan di worker2

C. Uji Coba

Buka browser lalu ketikan http://Public-IP-Manager untuk menguji apakah Nginx sudah running dan bisa diakses.

Hasil uji coba Nginx sudah berjalan dan bisa diakses, tetapi tidak diketahui worker yang manakah yang melayanan request dari browser, Maka dari itu, perlu mengubah page index.html menjadi keterangan nama container dan worker.

Di worker1 jalankan perintah berikut

[root@worker1 almalinux]# docker ps

[root@worker1 almalinux]# echo "myweb.1@worker1" > index.html
[root@worker1 almalinux]# docker cp index.html myweb.1.jy62erhdkuqf3obnfyxf8ncgn:/usr/share/nginx/html

 

Di worker2 jalankan perintah berikut

[root@worker2 almalinux]# docker ps

[root@worker2 almalinux]# echo "myweb.2@worker2" > index.html
[root@worker2 almalinux]# docker cp index.html myweb.2.jdm2njkqylup96s99x1mpqav9:/usr/share/nginx/html

 

Di worker2 jalankan perintah berikut

[root@worker3 almalinux]# docker ps

[root@worker3 almalinux]# echo "myweb.3@worker3" > index.html
[root@worker3 almalinux]# docker cp index.html myweb.3.e3s15kwcega2zirxiw3e793ab:/usr/share/nginx/html

 

Kemudian uji coba akses menggunakan curl.

[root@manager almalinux]# curl http://Public-IP-Manager

 

Hasil nya memperlihatkan bahwa request dari curl direspon secara bergantian

 

D. Scaling

Service myweb (Nginx) yang saat ini berjalan dengan 3 replikasi. Jumlah replikasinya dapat dinaikkan atau diturunkan, misalnya ingin menaikkan menjadi 7 replikasi.

Jalankan perintah berikut pada manager node

[root@manager almalinux]# docker service scale myweb=7

Hasil perintah di atas

Cek kembali informasi proses pada service myweb (Nginx)

[root@manager almalinux]# docker service ps myweb

Dapat dilihat bahwa 4 replikasi tambahan tersebar di worker node (myweb.5 – 7)

E. Penutup

Selamat! Anda sudah bisa menjalankan Container Orchestration dengan Docker Swarm pada AlmaLinux 8. Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melaluiKnowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com atau (021) 5714567.