Membangun Container Cluster menggunakan Docker Swarm

Membangun Container Cluster menggunakan Docker Swarm

Docker memperkenalkan swarm mode pada versi 1.12. Mode ini memungkinkan pengguna untuk me-deploy container pada multiple hosts atau node, menggunakan overlay network. Swarm mode merupakan bagian dari command line interface Docker yang memudahkan pengguna untuk memanage komponen container apabila sudah familiar dengan command – command yang ada di Docker.

Pada skenario ini, kita akan mempelajari bagaimana menginisialisi suatu cluster container menggunakan Docker pada Swarm Mode dan mengkonfigurasi network container. Untuk environment yang digunakan adalah sebagai berikut :

node-1 (manager dan worker)

  • VM 4 VCPU 8 GB RAM
  • IP Local : 10.10.10.19
  • Floating IP : 45.xxx.xxx.67
  • OS : Linux Ubuntu 14.04

node-2 (worker)

  • VM 4 VCPU 8 GB RAM
  • IP Local : 10.10.10.20
  • Floating IP : 45.xxx.xxx.103
  • OS : Linux Ubuntu 14.04

Install Docker Engine

Create file install-docker.sh kemudian copy command berikut pada file tsb :

#bin/bash

apt-get update
apt-get install apt-transport-https ca-certificates
apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D
touch /etc/apt/sources.list.d/docker.list
echo “deb https://apt.dockerproject.org/repo ubuntu-trusty main” >> /etc/apt/sources.list.d/docker.list
apt-get update
apt-get purge lxc-docker
apt-cache policy docker-engine
apt-get update
apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
apt-get update
apt-get install docker-engine

Ubah permission file menjadi executable.

root@node-1:~# chmod +x install-docker.sh

Jalankan file tsb untuk menginstall Docker Engine pada masing-masing.

root@node-1:~# ./install-docker.sh

Atau kunjungi tautan berikut https://docs.docker.com/engine/installation/linux/ untuk memperoleh detail installasi Docker Engine.

Inisialisasi Swarm Mode 

Jalankan perintah berikut pada node-1 :

root@node-1:~# docker swarm init
Swarm initialized: current node (dwfoii0ncik1d5h8pbc8sbov8) is now a manager.

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

docker swarm join \
–token SWMTKN-1-1siajjrb56jd43fzdi0b9lmhkkgpvqtgkttamswqei9js175ih-6conem8eitj0a7zrrcu0exi4j \
10.10.10.19:2377

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

Inisialisasi node-2 sebagai worker dan join ke cluster swarm.

root@node-2:~# docker swarm join 45.xxx.xxx.67:2377 –token SWMTKN-1-1siajjrb56jd43fzdi0b9lmhkkgpvqtgkttamswqei9js175ih-6conem8eitj0a7zrrcu0exi4j
This node joined a swarm as a worker.

1-docker-node-ls

Create Overlay Network

Overlay network akan berfungsi sebagai media komunikasi antar container yang berbeda host atau node. Untuk me-create overlay network, jalankan perintah berikut :

root@node-1:~# docker network create -d overlay cbncloud
0hakinoxqr4sc81m6jidd62on

Deploy Service

Create service pada cluster swarm. Pada skenario ini kita akan membuat web server menggunakan latest version nginx.

root@node-1:~# docker service create –name web –network cbncloud –replicas 2 -p 80:80 nginx:latest
ce3cqhi1vak1xopqyb7qcmh4h

Cek service yang sudah dibuat :

2-docker-service-ls
3-docker-service-ls

Untuk mengecek aplikasi berjalan dengan baik anda bisa menggunakan perintah curl atau mengakses aplikasi langsung dari browser dengan menginput Floating IP

root@node-1:~# curl -X GET -I localhost
HTTP/1.1 200 OK
Server: nginx/1.11.4
Date: Tue, 27 Sep 2016 04:43:15 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 13 Sep 2016 16:18:28 GMT
Connection: keep-alive
ETag: “57d826d4-264”
Accept-Ranges: bytes

root@node-2:~# curl -X GET -I localhost
HTTP/1.1 200 OK
Server: nginx/1.11.4
Date: Tue, 27 Sep 2016 04:43:30 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 13 Sep 2016 16:18:28 GMT
Connection: keep-alive
ETag: “57d826d4-264”
Accept-Ranges: bytes

Inspect State

Service dan aplikasi pada container yang sudah berjalan dapat anda cek dengan menjalankan perintah berikut :

root@node-1:~# docker service inspect –pretty web
ID: ce3cqhi1vak1xopqyb7qcmh4h
Name: web
Mode: Replicated
Replicas: 2
Placement:
UpdateConfig:
Parallelism: 1
On failure: pause
ContainerSpec:
Image: nginx:latest
Resources:
Networks: 0hakinoxqr4sc81m6jidd62on
Ports:
Protocol = tcp
TargetPort = 80
PublishedPort = 80
root@node-1:~# docker node ps self

Scale Service

Swarm Mode memungkinkan anda untuk me-scale service sesuai dengan kebutuhan. Berikut command yang bisa anda gunakan :

root@node-1:~# docker service scale web=5
web scaled to 5

Cek service yang sudah di scale dengan menjalankan perintah

root@node-1:~#docker ps

pada masing-masing node dan

root@node-2:~#docker service ps web

pada host atau node manger

4-docker-ps-scale-5

Referensi :

https://docs.docker.com

No Comments

Sorry, the comment form is closed at this time.