ครั้งที่แล้วได้แนะนำการใช้งาน Docker Machine ไปหลายครั้งบน Public Cloud หลายค่าย เช่น Azure, Rackspace, DigitalOcean เป็นต้น แนะนำการผูก Docker Cluster โดนใช้ Docker Swarm และใช้งาน Service Orchestration โดยใช้ Docker Composer กันไปแล้ว ครั้งนี้จะมาแนะนำการใช้งานร่วมกันทั้ง 3 Service

เริ่มจากสร้าง Cluster และ Swarm Master บน DigitalOcean

docker run swarm create

เอาค่า UUID ที่ได้มาสร้าง env ดังนี้

export SWARM_TOTEN="c8dc7848af2cbeccd7bc7dfef48e7448"
export DO_TOKEN="YOUR-DIGITALOCEAN-TOKEN"

ใช้ Docker Machine สร้าง Swarm Master

docker-machine create \
-d digitalocean \
--digitalocean-access-token $DO_TOKEN \
--swarm \
--swarm-master \
--swarm-discovery token://$SWARM_TOTEN \
swarm-master

จากนั้นเพิ่ม Swarm Node ดังนี้

docker-machine create \
-d digitalocean \
--digitalocean-access-token $DO_TOKEN \
--swarm \
--swarm-discovery token://$SWARM_TOTEN \
swarm-node-01

ให้เพิ่มอีก 3 Node จะได้ Docker Machine ดังนี้

docker-machine ls

จากนั้นเราจะใช้ Docker เชื่อมต่อไปยัง Swarm Master ตั้งค่า env เพิ่มดังนี้

$(docker-machine env --swarm swarm-master)

ลองดู info จะพบว่าเรากำลังใช้งานผ่าน swarm อยู่

docker info

ตอนนี้เราสามารถเรียกใช้งาน Cluster ผ่าน Swarm ได้แล้ว มาใช้ Docker Compose กัน สร้างไดเรคทอรีเก็บ project

mkdir wp

cd wp

สร้างไฟล์ docker-compose.yaml ดังนี้

หากดูที่ config จะพบว่าใช้ affinity ระบุว่าไม่ให้ deploy บนเครื่องที่มี container ชื่อ wp_web_* คือ ไม่ให้ deploy บนเครื่องซ้ำกัน อาจจะระบุเป็นชื่อ node ก็ได้เช่น constraint:node==/swarm-node-[0-9]+/จากนั้นสั่ง compose up ได้เลยดังนี้

docker-compose up -d

ลอง scale ดูดังนี้

docker-compose scale web=4

เราจะได้ wordpress มา 4 ตัวทำงานบนเครื่องที่ไม่ซ้ำกัน

ตัวอย่างของการ scale เหมาะกับ service หรือ state less application ที่ต้องการจำนวนเครื่องในการประมวลผล

Comments are closed.