ถ้าคุณต้องการใช้ CoreOS เป็น Infrastructure หลักในการจัดการ Docker Container ในหลายๆ Host การสร้าง CoreOS Cluster ขึ้นมาใช้งานก็จะเป็นทางเลือกที่ดีที่สุด CoreOS ออกแบบ Cluster ขึ้นมาไม่เหมือนใคร การทำงานจะทำงานผ่าน service หลายตัวประกอบเข้าด้วยกัน เช่น etcd, fleet เป็นต้น CoreOS จะใช้การอ่านข้อมูล Node ของ Cluster จาก etcd เป็นหลัก ไม่ได้เกิดจากการเอาสายเชื่อมต่อกันแต่เกิด Cluster จากการทำงานซอฟต์แวร์เป็นหลัก

มาลองสร้าง CoreOS Cluster บน DigitalOcean กัน สำหรับท่านที่ติดตั้ง CoreOS เองก็สามรถใช้ How-To นี้อ้างอิงได้ CoreOS จะต้องใช้ etcd ซึ่งเป็น Discovery URL เพื่อเก็บข้อมูลของ Node ใน Cluster ซึ่งคุณใช้ etcd service ของคุณเองก็ได้ หรือจะใช้ service กลางจาก discovery.etcd.io ได้เช่นกัน การขอ Discovery URL ทำได้ง่ายๆ ผ่าน cURL ดังนี้

curl -w "\n" https://discovery.etcd.io/new

คุณจะได้รหัส token มาพร้อมกับ Discovery URL ดังนี้

https://discovery.etcd.io/2ff216654df841f09b76715109594100

เมื่อได้ Discovery URL แล้วเราก็มาเริ่มสร้าง CoreOS Cluster กันได้ ทุกๆ เครื่องที่จะผูกเป็น Cluster จะต้องใช้ Discovery URL อันเดียวกัน ถึงจะอยู่ใน Cluster เดียวกัน ซึ่งการตั้งค่านี้จะต้องทำผ่าน cloud-config ในแต่ละ Node ในกรณีที่คุณติดตั้ง CoreOS เองคุณจำเป็นต้องเขียน cloud-config อยู่แล้ว ดังนั้นคุณสามารถเพิ่มข้อมูลในส่วนนี้เข้าไปได้เลย แต่ใน DigitalOcean ต้องใช้เทคนิคเล็กน้อยตอนที่เราสร้าง Droplet

เราจะใส่ cloud-config ข้างต้นลงในส่วน User Data ตั้งค่าตรง Available Settings ดังภาพ

ทำซ้ำจนครบตามจำนวน Droplet ที่คุณต้องการ เมื่อ Droplet Start ครบหมดแล้ว ใช้คำสั่ง

fleetctl list-machines

จะพบว่าเครื่องทั้ง 3 ผูกเป็น Cluster เรียบร้อยแล้ว

จากนี้เราสามารถใช้ fleet จัดการ CoreOS Cluster ได้แล้ว มาลอง Deploy Service ง่ายๆ กัน สร้างไฟล์ wordpress.service ดังนี้

จากนั้น load service นี้ให้ fleet

fleetctl load wordpress.service

คุณจะพบว่า fleet เลือก Node แรกสำหรับ Deploy Service นี้

ใช้คำสั่ง fleetctl list-unit-files อีกครั้งจะพบว่า unite file ถูกใช้สำหรับ Node แรก

fleetctl list-unit-files

ลองดูสถานะของ unite file นี้ด้วยคำสั่ง

fleetctl list-units

จะพบว่า WordPress Service นี้ยังไม่มีการเรียกใช้หรือตายอยู่

มาลอง start service กัน โดยใช้คำสั่ง

fleetctl start wordpress.service

คุณจะพบว่า fleet สั่งให้ Node แรกของเรา deploy service แล้ว

รอจน Service Deploy เสร็จ ตรวจสอบสถานะการ Deploy ได้ดังนี้

fleetctl list-units

และ

fleetctl status wordpress.service

Comments are closed.