การกำหนด machine constraints บน juju คือการเลือก hardware ที่จะใช้ในการ deploy service ต่างๆ เช่น ต้องการกำหนดสเปคของ hardware (machine) ที่จะใช้รัน mysql (service) ว่าต้องมี cpu อย่างต่ำ 4 cores และ RAM อย่างน้อย 8GB เป็นต้น

การกำหนด constraint บน juju นั้น จะช่วยให้เราได้ประสิทธิภาพที่เหมาะสม ถ้าลองเปรียบเทียบก็จะเหมือนกันสมัยก่อน ที่เราจะซื้อเซิร์ฟเวอร์มาลงอะไรสักอย่างหนึ่ง เราก็ต้องกำหนดสเปคของ hardware ว่า minimum spec ที่จะสามารถรันระบบที่เราจะติดตั้งได้นั้น ควรเป็นยังไง

การกำหนด constraints ก็ทำนองเดียวกัน แต่ตัวอย่างข้างบนที่ออกจะโบราณไปหน่อยนั้น ถ้าเทียบกับการกำหนด constraints บน juju แล้ว ผมว่ามันลดความลำบากของเราลงไปเยอะครับ

วิธีการกำหนด constraints จะทำได้โดยการกำหนดเป็น options –constraints ซึ่งจะนำไปใช้กับคำสั่ง juju bootstrap, juju deploy, juju add-machine ก็สามารถได้

เริ่มต้นจากการกำหนด constraint ให้กับ environment ก่อนเลยแล้วกันนะครับ ด้วยคำสั่ง

$ juju bootstrap --constraints "mem=2G"

เป็นการกำหนด constraints ในส่วนของ memory ให้กับ environment ที่สร้างขึ้นนี้เท่ากับ 2 GB

เราสามารถเรียกดู constraints ที่กำหนดไว้ได้ด้วยคำสั่ง

$ juju get-constraints

ในการ deploy service เราก็สามารถกำหนด constraints ได้เช่นกัน ตัวอย่างด้านล่างจะทดลอง deploy mysql โดยกำหนดค่า constraints ลงไปด้วยเลย

$ juju deploy --constraints "cpu-cores=2 mem=1G" mysql

เมื่อเรียกดูค่า constraints บน service ที่กำหนดไว้สามารถทำได้โดยรันคำสั่ง

$ juju get-constraints <ชื่อ service>

การกำหนด constraints อีกวิธีหนึ่งที่จะมาแนะนำคือ หากเรา deploy service ไปโดยที่ไม่ได้กำหนด constraints ไว้ แล้วต้องการกำหนดในภายหลังสามารถทำได้ ตัวอย่างจะกำหนด constraints ให้กับ wordpress ด้วยคำสั่ง

$ juju set-constraints --service wordpress cpu-cores=4 mem=2G

เมื่อรันคำสั่งเพื่อเรียกดูค่า constraints บน service จะได้รายละเอียดตามตัวอย่างด้านล่าง

ด้านล่างนี้จะเป็นรายละเอียด constraints ที่เราสามารถเรียกใช้ได้นะครับ

  • arch : ย่อมาจาก architecture ตัวอย่างการระบุเช่น amd64, arm, i386, arm64 หรือ ppc64
  • container : ใช้กำหนดชนิดของ container ที่ใช้รัน service ภายใน ตัวอย่างการระบุเช่น lxc หรือ kvm
  • cpu-cores : กำหนดค่าต่ำสุดของ cpu core ที่ service จะสามารถเรียกใช้ได้
  • cpu-powers : ค่าประมาณการของ cpu power ที่จะสามารถเรียกใช้ได้ (ผู้ให้บริการบางรายอาจจะไม่ support ในส่วนนี้ แนะนำให้กำหนด cpu-cores จะดีกว่า)
  • instance-type : เป็นการกำหนดค่าตามแต่รายละเอียดของชนิด และผู้ให้บริการ (อาจจะทำให้เกิดปัญหา เนื่องจากขึ้นอยู่กับผู้ให้บริการด้วย แนะนำให้กำหนดรายละเอียดของ cpu-cores และ mem ด้วยตนเองจะดีกว่า)
  • mem : กำหนดค่าต่ำสุดของ memory หรือ RAM ซึ่งสามารถกำหนดได้เป็นตัวเลขตามด้วยหน่วย เช่น 512M (512 megabytes) หรือ 2G (2048 megabytes)
  • networks : ลิสต์ของ network ที่ machine สามารถใช้งานได้
  • root-disk : กำหนดค่าต่ำที่สุดของพื้นที่ในแต่ละ service วิธีกำหนดทำเช่นเดียวกัน mem

เราสามารถกำหนด constraints ตามลิสต์ด้านบนได้ตามต้องการครับ

Comments are closed.