Docker Swarm Clustering

Sea dock with boats waiting

Selamat Siang menuju sore, pada jurnal kali ini kita akan belajar mengenai Docker Swarm Clustering.

Sebuah Docker engine dan Docker Container memang sanggup digunakan untuk melakukan deploy sebuah aplikasi. Tetapi bayangkan apabila kita akan melakukan Deploy banyak aplikasi pada docker dengan Sebuah Docker engine dan Docker Container, mungkin sebuah Docker engine dan Docker Container tidak dapat menanganinya.  Clustering adalah solusinya. Pada sebuah clustering biasanya kita bisa menggunakan beberapa Docker Container dan Docker Engine untuk menjalankan beberapa buah aplikasi secara bersamaan dan efisien.

Ada banyak pilihan Clustering pada docker seperti: Swarm, Mesos, Kubernets, Fleet dan masih banyak yang lain. Masing-masing jenis clustering memiliki keunggualan, kelemahan serta fungsinya sendiri-sendiri. Biasanya dalam pemilihan sebuah jenis cluster kita akan mempertimbangkan kebutuhan kita dan Resource yang kita miliki.

Pada kali ini kita akan belajar mengenai Swarm Clustering. Sebelumnya karena kita disini akan menggunakan beberapa buah Docker Engine, maka kita akan membutuhkan minimal 2 host yang sudah terinstall Docker. Pada percobaan ini saya menggunakan sebuah Host dan sebuah VM. Pastikan Host dan VM bisa terhubung satu sama lain.

Pada Docker Swarm Cluster ini terdapat 2 bagian utama sebagai unsur pembentuknya yaitu, Swarm manager dan Swarm Worker. Swarm Manager memiliki tugas salah satunya membuat dan melakukan mantain cluster service, selain itu swarm manager juga bertugas menyediakan HTTP API Endpoints. Sementara Swarm Worker bertugas untuk menjalankan container atau service yang telah di definisikan pada Swarm Manager.

Pastikan serivce Docker daemon telah berjalan pada masing-masing host, bisa di cek menggunakan perintah.

systemctl status docker

atau

/etc/init.d/docker status

Selanjutnya kita akan mulai menjalanan Swarm Clustering pada Host terlebih dahulu

docker swarm init --advertise-addr IP_Address

ganti IP_Address dengan ip address Host yang terhubung dengan VM. apabila kita menjalankan perintah di atas pada sebuah host maka otomatis host tersebut menjadi Swarm Manager. Dari perintah diatas biasanya kita akan memperoleh output

Swarm initialized: current node (yybbhv38r19o4u2ws4of56e5c) is now a manager.

To add a worker to this swarm, run the following command:

docker swarm join \
–token SWMTKN-1-5frmgly6d0bo1nqkxs3ybz37d0drmrgfqj5u0l9maeuvr5pz8f-7kcknenqjk2insxo0ecmtwyfe \
IP_Address:2377

To add a manager to this swarm, run ‘docker swarm join-token manager’ and follow the instructions.

Apabila Docker mengeluarkan output seperti diatas berarti kita telah berhasil menjalankan Swarm Cluster pada Swarm Manager. Setelah kita membuat Swarm Manager selanjutnya kita akan membuat Swarm Worker untuk join Swarm Manager. Jalankan perintah berikut pada VM yang telah kita siapkan sebelumnya


docker swarm join \
--token SWMTKN-1-5frmgly6d0bo1nqkxs3ybz37d0drmrgfqj5u0l9maeuvr5pz8f-7kcknenqjk2insxo0ecmtwyfe \
IP_Address:2377

Token pada perintah diatas bersifat unique, jadi setiap kali kita membuat Swarm Cluster maka token yang dihasilkan juga berbeda.
Untuk melihat apakah swarm cluster yang kita buat telah berjalan dapat dilakukan verifikasi dengan cara.


docker node ls

jangan lupa untuk menjalan perintah diatas pada Swarm Manager. Dari perintah diatas didapatkan output

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
v6p7daqbbrek0iynkb3vhn2aq dockereg Ready Active
yybbhv38r19o4u2ws4of56e5c * gulo-pc Ready Active Leader

dari output diatas kita bisa lihat bahwa Swarm worker telah join dengan Swarm Manager.

dengan demikian Berarti kita telah selesai membuat Swarm Cluster, selanjutnya kita akan mencoba untuk menjalankan sebuah service pada Swarm Cluster tersebut. Dengan demikian kita akan lebih paham bagaimana cara kerja dari Swarm Cluster. seperti biasanya, kita akan menggunakan Image Favorit yaitu Nginx :D. Pertama-tama lakukan pembuatan docker service pada Swarm Manager.


docker service create -p 8080:80 --name webserver nginx

lakukan verifikasi bahwa service nginx telah berjalan


docker service ls

apabila output dari perintah diatas seperti dibawah ini berarti Service nginx telah berhasil dibuat

ID NAME MODE REPLICAS IMAGE
ke665im9t4uk webserver replicated 1/1 nginx:latest

pada output diatas terdapat Replicas 1/1 yang artinya docker hanya menjalankan service nginx pada 1 instance saja. apabila pada awal saat pembuatan docker service kita menambahkan parameter --replicas=2 maka docker akan membuat replikasi service sebanyak 2 dan akan menjalan service Nginx pada host dan VM.
selanjutnya kita akan melakukan verifikasi apakah container dari service nginx telah terbuat atau belum


docker ps

Swarm Clustering dapat melakukan scale terhadap service yang telah kita buat, dengan demikian kita dapat membuat beberapa container untuk menjalankan sebuah service Nginx.


docker service scale webserver=2

dari command diatas kita kan melakukan scale terhadap service webserver menjadi 2 yang artinya kita akan menggunakan 2 buah container untuk menjalankan service tersebut. scale command juga akan merubah paramater replicas pada docker service ls. Untuk melihat apakah docker telah berhasil melakukan scale lakukan dengan command berikut ini

docker service ps webserver

Kita dapat mengakses Nginx Service menggunakan IP address container manapun yang menjalan service Nginx. Keuntungan lainnya adalah apabila Nginx gagal berjalan pada sebuah container maka service Nginx akan tetap berjalan karena terdapat container lain yang menjalankan service nginx tersebut.

Sekian jurnalgulo pada siang hari ini , terimakasih. Tuhan memberkati

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s