Container Orchestration menggunakan Docker Swarm



Container Orchestration menggunakan Docker Swarm - Pada artikel sebelumnya, www.dimasrio.com sudah pernah membahas bagaimana cara menggunakan docker compose.  Salah satu fitur docker yang tidak boleh kita lewatkan adalah docker swarm. Docker Swarm merupakan Container Orchestration System yang disediakan oleh docker untuk memdistribusikan docker contrainer pada system cluster. Dengan kita memanfaatkan docker swarm, kita dapat membuat sebuah management yang centralized baik itu create, destroy, scaling up dan scaling down container pada docker swarm manager.

Konfigurasi Docker Swarm

Untuk membuat sebuah docker swarm, diperlukan host yang sudah terinstall docker engine. Pada contoh kali ini saya akan membuat 3 buah docker node, dimana 1 node akan digunakan sebagai manager dan 2 buah node lainnya digunakan untuk swarm worker. Agar lebih mudah membuat docker host kita dapat menggunakan docker machine.

Setup docker host menggunakan docker machine
docker-machine create -d virtualbox manager
docker-machine create -d virtualbox node1
docker-machine create -d virtualbox node2
Output :



Setup docker swarm cluster pada node manager

Login ke dalam docker swarm manager menggunakan docker-machine.
docker-machine ssh manager
Create initial sebagai master dengan ip dari host docker swarm manager 192.168.99.100
docker swarm init --advertise-addr 192.168.99.100
Setelah di setup, akan muncul token yang digunakan untuk join node ke docker swarm manager.
docker swarm join --token SWMTKN-1-2rqhmivd1tx2c3pdw50x383tzf0v486kej1or3rk6ecjy31476-3cz5305q7mc2sfnvervpd8bmy 192.168.99.100:2377 
Output :

Setup docker worker untuk join ke cluster

Login ke dalam docker node1 menggunakan docker-machine.
docker-machine ssh node1
Jalankan command dari swarm manager pada node 1 dan node 2 untuk join node pada cluster.

Output :


Sempai disini semua node sudah join pada cluster.



Create service pada docker swarm

Pada contoh kali ini saya akan membuat sebuah service http menggunakan nginx dengan jumlah container 5.
docker service create --name web --replicas=5 -p 8080:80 nginx:alpine
Pastikan container sudah terbuat.
docker service ls
Output :

Kita juga dapat melihat proses orchestration untuk service web yang running pada node lain.
docker service ps web
Output :


Sampai disini web service sudah running, pastikan sudah dapat di akses via browser.
http://192.168.99.100:8080
Output:


Scaling up dan Scaling down

Seperti yang sudah saya sebutkan di atas, salah satu fitur dari docker swarm adalah scaling. Pada contoh kali ini, saya akan scale jumlah container untuk service web.
docker service scale web=10
Output :


Inspect node via swarm manager

Pada docker swarm manager kita dapat melihat informasi mengenai node worker.
docker node inspect --pretty node1
Output :


Setup mode drain untuk maintenance

Jika kita ingin melakukan update pada host tanpa mengganggu container yang sedang running dapat menggunakan mode drain. Mode drain akan memindahkan seluruh container ke host yang sedang aktif. Pada contoh kali ini saya kan mencoba setup mode drain pada docker swarm manager.
docker node update --availability drain manager
Output:


Dari gambar diatas, terlihat container yang running pada swarm manager sudah pindah ke node1 dan node2.

Selanjutnya kita dapat update image melalui swarm manager. Sebagai contoh saya akan update image dari nginx ke httpd.
docker service update --image httpd:alpine web
Output :


Dari gambar diatas container sudah menggunakan images httpd.

Remove service

Jika kita ingin menghapus service dapat menggunakan perintah berikut.
docker service rm web
Demikian tutorial docker kali ini mengenai container orchestration dengan docker swarm. Docker swarm sangat powerfull, akan tetapi jika sobat ingin mencoba orchestration yang lebih menarik bisa mencoba Kubernetes. Semoga bermanfaat bagi kita semua dan selamat mencoba.!!!


EmoticonEmoticon