ครั้งที่แล้วพาเล่น HA MQTT Broker ด้วย Docker Compose ครั้งนี้มาแนะนำวิธีการ Reconfig HAProxy ในกรณีที่มีการ Scale In, Scale Out จากการใช้ Docker Compose Scale ขอเปลี่ยนตัวอย่างเป็น WebApp จะได้เข้าใจง่ายๆ WebApp ตัวนี้ expose port 8080 เราสามารถใช้ Interlock ช่วยในการ reconfig HAProxy ในกรณีที่มีการ Scale ไม่ว่าจะ Scale in หรือ Scale out ได้ ครั้งนี้เราจะใช้ Docker Machine, Docke Swarm, Docker Compose และ Interlock

มาลงมือติดตั้ง Docker กันก่อน

wget -qO- https://get.docker.com/ | sh

ตามด้วย Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

ตามด้วย Docker Machine

wget https://github.com/docker/machine/releases/download/v0.3.0/docker-machine_linux-amd64 -O /usr/local/bin/docker-machine

chmod +x /usr/local/bin/docker-machine

จากนั้นสร้าง Swarm ได้เลยดังนี้

docker run swarm create

จด Swarm Token เอาไว้จากนั้นสร้าง Environment Variable ดังนี้ อ้อเกือบลืม เราใช้ Machine สร้าง Instance บน Digital Ocean กัน

export SWARM_TOKEN="e927e34ace850caa875535742ea05643"

export DO_TOKEN="e927e34ace850caa875535742ea05643"

สั่งสร้าง Machine มา 3 เครื่อง คือ swarm-master, swarm-node-01, swarm-node-02 ดังนี้

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

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

docker-machine create \
-d digitalocean \
--digitalocean-access-token $DO_TOKEN \
--digitalocean-region sgp1 \
--swarm \
--swarm-discovery token://$SWARM_TOKEN \
swarm-node-02

เรียกใช้เครื่อง swarm-master

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

ดู docker info เราจะเห็น instance ผูกเข้าไปยัง swarm ดังนี้

ติดตั้ง Interlock ผ่าน Machine ดังนี้

docker run -p 80:8080 -d -v /etc/docker:/etc/docker ehazlett/interlock --swarm-url $DOCKER_HOST --swarm-tls-ca-cert=/etc/docker/ca.pem --swarm-tls-cert=/etc/docker/server.pem --swarm-tls-key=/etc/docker/server-key.pem --plugin haproxy start

เมื่อได้ HAProxy แล้วจากนั้นมาลอง Deploy App กัน เราจะผูก Domain www.fffee.org ไปกับ Container ที่สร้างโดย Docker Compose ให้สร้างไฟล์ docker-compose.yml ดังนี้

สั่ง compose up ได้เลย

docker-compose up -d

จากนั้นลองเข้าเว็บดูจะพบว่าเข้าเว็บได้แล้ว

ลองดู HAProxy Stats จะพบว่ามี container 1 ตัว ลงทะเบียนเรียบร้อยแล้ว

สั่ง scale web ไปเป็น 20

docker-compose scale web=20

ลอง docker-compose ps ดูจะพบว่า container กระจายไปยัง swarm-node-01 และ swarm-node-02

ลองดู HAProxy Stats จะพบว่ามี container 20 ตัว ลงทะเบียนเรียบร้อยแล้ว

ลอง scale web กลับมาที่ 4 container

ก็จะพบว่า Interlock จัดการเพิ่ม/ลด Container ใน HAProxy ให้อัตโนมัติ

Comments are closed.