ว่าด้วยเรื่องของ Docker Swarm

docker swarm คือ เครื่องมือที่ช่วยเป็นตัวจัดการเครื่องที่รัน Docker หลายๆเครื่องให้อยู่ในสภาพแวดล้อมเดียวกัน ช่วยในการทำให้การใช้ Service Orchestration ให้ใช้งานได้ง่ายขึ้น


เริ่ม Docker Swarm แบบอย่างง่าย

โดยในที่นี้ สร้าง server โดยใช้เครื่องมือ vagrant โดย provider เป็น virtualbox

  • master node : 192.168.1.50
  • node-1 : 10.0.0.11
  • node-2 : 10.0.0.12

ขั้นตอนคร่าวๆจะเป็นประมาณนี้

  • สร้าง Initial Swarm cluster ใน master node
  • นำ worker node แต่ละตัว เข้า cluster

Step 1 Set environment All server ( master, node-1, node-2 )

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ sudo apt-get install -y docker-engine
$ sudo systemctl start docker.service

Step 2 Master Node Initial Swarm

$ sudo docker swarm init --advertise-addr <ip masternode>
...
$ sudo docker swarm init --advertise-addr 192.168.1.50

docker-swarm.png

Step 3 นำ worker node แต่ละตัว เข้า cluster

  • node-1 และ node-2
$ docker swarm join --token <token> <ip master>:2377
...
$ docker swarm join --token SWMTKN-1-50kpamk0y2g48d1y76h2gyhuwd89rsyq4kwx0hatf4rylrhp56-ceoe5yam6ce3jg82p81n582yg 192.168.1.50:2377

ผลที่ได้

docker-swarm2.png

เช็ค node ด้วยคำสั่ง sudo docker node ls ใน master node

docker-swarm3.png

ที่นี้ Worker node ทั้งสอง ถูกนำ เข้า cluster เรียบร้อย


Master Node

Step 4 ที่ Master Node

ลองสร้าง service ชื่อ nginx ขึ้นมา 1 container

sudo docker service create --replicas 1 --name nginx -p 80:80 nginx

docker-swarm4.png

เช็ค service ที่ start ว่า ถูกสร้าง ไว้ที่ไหน

$ sudo docker service ps nginx

Step 5 ลอง scale out service ที่ได้จาก 1 เป็น 5

$ sudo docker service scale nginx=5

docker-swarm5.png

ลอง เช็ค service อีกครั้ง

sudo docker service ps nginx

docker-swarm6.png

Step 6 ลอง เปิด ใน browser

docker-swarm7.png