RADOS: Monitor Node

Monitor node

สัญลักษณ์ Monitor node

Monitor node เป็น node ประเภทหนึ่งใน RADOS cluster ดังที่ได้เกริ่นไปในบทความตอนที่แล้ว (RADOS: An Introduction) ซึ่งเป็น node ที่ทำหน้าที่ที่สำคัญเป็นอย่างมากต่อการทำงานของ RADOS cluster หากขาด Monitor node ไปแล้ว RADOS cluster หรือแม้กระทั่งทั้ง Ceph Storage cluster จะไม่สามารถใช้การได้เลย

ใน RADOS cluster หนึ่งๆ จำเป็นต้องมี Monitor node อย่างน้อย 1 node แต่เพื่อให้ระบบปราศจาก single point of failure จึงควรมี Monitor node มากกว่า 1 node โดยแต่ละ node นั้นสามารถทำงานร่วมกันและปรับปรุงข้อมูลให้ตรงกันอยู่เสมอได้โดยอาศัย Paxos ซึ่งจะอธิบายเป็นลำดับถัดไป

หน้าที่หลักของ Monitor node ประกอบไปด้วยหน้าที่ต่างๆ หลากหลายหน้าที่ แต่หน้าที่ที่ขาดไม่ได้อย่างหนึ่งคือ การติดตาม จัดการ และดูแลสถานะของสมาชิกต่างๆ ใน RADOS cluster ไม่ว่าจะเป็น OSD node MDS node หรือแม้กระทั่ง Monitor node ด้วยกันเอง เช่น เมื่อมี Monitor node ใหม่เพิ่มเข้ามาใน RADOS cluster Monitor node เดิมใน cluster สามารถปรับปรุงแผนผังการเชื่อมต่อของ Monitor node ใน cluster ได้เอง เป็นต้น นอกจากนี้ยังดูแลเรื่องการพิสูจน์ตัวตน (authenticate) ผู้ใช้หรือแอปพลิเคชันที่ติดต่อเข้ามาใช้งาน RADOS cluster ทำให้ระบบมีความปลอดภัย นอกเหนือไปจากนั้น ​Monitor node ยังจัดการเรื่อง logging ต่างๆในระบบอีกด้วย และหนึ่งในหน้าที่ที่สำคัญที่สุดของ Monitor node คือ การเก็บรักษาและปรับปรุง Cluster Map ให้ถูกต้อง ตรงกัน และทันสมัยอยู่เสมออย่างอัตโนมัติโดยอาศัย Paxos อีกทั้งยังคอยแจกจ่าย Cluster Map ให้กับ node อื่นๆ หรือแอปพลิเคชันที่ติดต่อเข้ามาใช้งาน RADOS cluster หรือ Ceph Storage อีกด้วย

Cluster Map

Cluster Map คือ แผนผังที่เก็บรวบรวมเอาส่วนประกอบต่างๆ ใน RADOS cluster เอาไว้ พร้อมทั้งสถานะของส่วนประกอบเหล่านั้นด้วย เช่น กำลังทำงานอยู่หรือไม่ เป็นต้น โดย Cluster Map ที่แต่ละ Monitor node เก็บรักษาไว้ ประกอบไปด้วย map หรือ แผนผัง 5 ประเภทด้วยกัน อันได้แก่

  1. Monitor Map หรือ monmap เป็นรายการข้อมูลและสถานะของ Monitor node ใน Ceph Storage
  2. OSD Map คือ รายการข้อมูลและสถานะของ OSD node ที่เชื่อมต่อกันใน RADOS cluster นอกจากนี้ยังมีข้อมูลและสถานะของ Pool และจำนวน Placement Group ในแต่ละ Pool อีกด้วย
  3. PG (Placement Group) Map คือ รายการข้อมูลและสถานะของแต่ละ PG ใน RADOS cluster พร้อมทั้งบอกด้วยว่า แต่ละ PG ถูกเก็บอยู่ที่ OSD node ใด
  4. CRUSH Map คือ แผนผังการเชื่อมต่อของ OSD Node ในแต่ละ failure domain (เช่น Host, Rack, Room หรือ Data Center เป็นต้น) และกฎการกระจายตัวของข้อมูลโดยอ้างอิงจากแผนผังนั้น
  5. MDS Map คือ รายการข้อมูลและสถานะของแต่ละ MDS node ใน Ceph Storage ซึ่ง จะมี map ประเภทนี้เมื่อใช้งาน Ceph File System (Ceph FS) เท่านั้น

เมื่อมีการเปลี่ยนแปลงเกิดขึ้นกับ map แบบใดแบบหนึ่ง เช่น มี OSD node หนึ่งเพิ่มเข้าไปใน RADOS cluster จะทำให้ Cluster Map ถูกปรับปรุงให้เป็นปัจจุบัน ทั้งนี้ Monitor node จะยังคงเก็บ version เก่าไว้ด้วย จนกว่าทุก Monitor node จะปรับปรุง Cluster Map จนเหมือนกันทั้งหมด ซึ่งแต่ละ version จะถูกเรียกว่า “epoch”

Pool และ Placement Group คืออะไร?

Pool คือ กลุ่มที่จำลองขึ้นมา เพื่อจัดกลุ่มของ object ที่เก็บใน Ceph Storage ทำให้การจัดการทำได้ง่ายและสะดวกขึ้น โดยอนุญาตให้ผู้ใช้กำหนดลักษณะในการเก็บข้อมูล (Replication หรือ Erasure-coding) และกฎในการกระจายข้อมูลภายใน RADOS Cluster (CRUSH Ruleset) ได้

Placement Group (PG) คือ กลุ่มในการเก็บ object ซึ่งอยู่ภายใน Pool อีกทีหนึ่ง โดย Pool หนึ่งมีได้หลายๆ PG และ 1 object อยู่ได้เพียง 1 PG เท่านั้น โดย PG นี้ช่วยทำให้ การจัดการและ balance load ของแต่ละ OSD node ทำได้ง่ายและสะดวกขึ้น

Cluster Map นี้มีความจำเป็นมากใน Ceph Storage เพราะเป็นหนึ่งใน input ในการคำนวณหาตำแหน่งการจัดวางข้อมูลภายใน RADOS cluster ด้วย CRUSH algorithm โดยทุกๆ node ใน Ceph Storage และ Ceph Client ที่ผู้ใช้ใช้เพื่อติดต่อเข้ามาใช้งาน Ceph Storage จะมีสำเนาของ Cluster Map เป็นของตนเอง (ที่ขอมาจาก Monitor node อีกทีหนึ่ง) หากว่า Cluster Map ที่มีอยู่ไม่เป็นปัจจุบัน หรือมีข้อผิดพลาด อาจทำให้ไม่สามารถอ่านหรือเขียนข้อมูล หรือรักษาข้อมูลให้ปลอดภัยได้เลยทีเดียว และที่สำคัญไปยิ่งกว่านั้นคือ หน้าที่ของ Monitor node ในการบำรุงรักษาให้ Cluster Map เป็นปัจจุบัน ถูกต้อง และตรงกันอยู่เสมอ ซึ่งสามารถเป็นไปได้ด้วย algorithm ที่เรียกว่า Paxos

Paxos

เพื่อให้ปราศจาก single point of failure เป็นที่แนะนำว่า ใน RADOS cluster ควรมี Monitor node มากกว่า 1 node และ ต้องมีเป็น จำนวนคี่ เท่านั้น ในกรณีที่มี Monitor node หลายๆ node ทำงานร่วมกัน อาจเกิดปัญหาขึ้นได้หาก Cluster Map ที่แต่ละ Monitor node ไม่ตรงกัน ทางผู้พัฒนา Ceph Storage จึงได้แก้ปัญหานี้โดยออกแบบให้ Monitor node ตัดสินใจเองได้ว่า Cluster Map ควรจะถูกแก้ไขอย่างไรให้ตรงกัน เป็นปัจจุบัน และถูกต้องที่สุด โดยใช้ algorithm การโหวตที่เรียกว่า Paxos

ใน Paxos ผลโหวตจะถูกตัดสินโดยจะเลือกค่าของเสียงข้างมากเสมอ เช่น 2 ใน 3 หรือ 4 ใน 7 เสียง เป็นต้น และด้วยเหตุนี้เอง ทำให้มีข้อจำกัดว่าจำนวน Monitor node ต้องเป็นจำนวนคี่เท่านั้น เพราะว่าหากว่ามี Monitor node เป็นจำนวนคู่ เช่น 6 node อาจเกิดกรณีที่เสียงทั้งสองข้างเท่ากัน เช่น 3:3 ทำให้ Monitor node ไม่สามารถตัดสินใจได้ว่าค่าใดถูกต้องกันแน่ โดยปรากฏการณ์นี้ถูกเรียกว่า Split Brain

 

ด้วยความสามารถของ Paxos นี้เอง ทำให้ Monitor node สามารถตัดสินใจเองได้ และทำให้สามารถบำรุงรักษา Cluster Map ให้เป็นปัจจุบันและสอดคล้องกันอยู่เสมอได้ ซึ่ง Cluster Map นี้ถือเป็นสิ่งจำเป็นมาก ใน Ceph Storage เพราะหากไม่มี Cluster Map แล้ว เป็นไปไม่ได้เลยที่จะใช้งาน Ceph Storage ได้ นอกจากนี้แล้ว Monitor node ยังทำหน้าที่สำคัญอื่นด้วย เช่น พิสูจน์ตัวตัวของผู้ใช้ก่อนเข้าใช้งาน Ceph Storage เป็นต้น

สำหรับในบทความตอนต่อไป ผมจะอธิบายถึงบทบาทหน้าที่ ความสามารถ ของ node ประเภทต่อไปใน RADOS cluster อันได้แก่ OSD node ครับ

และสำหรับผู้ที่ยังไม่ได้อ่านบทความตอนก่อนหน้านี้ สามารถติดตามอ่านได้ที่นี่ครับ :

 

เกี่ยวกับ Throughwave Thailand

Throughwave Thailand เป็นตัวแทนจำหน่าย (Distributor) สำหรับผลิตภัณฑ์ Enterprise IT ครบวงจรทั้ง Server, Storage, Network และ Security พร้อมโซลูชัน VMware และ Microsoft ที่มีลูกค้าเป็นองค์กรชั้นนำระดับหลายหมื่นผู้ใช้งานมากมาย โดยทีมงาน Throughwave Thailand ได้รับความไว้วางใจจากลูกค้าจากทีมงาน Engineer มากประสบการณ์ ที่คอยสนับสนุนการใช้งานของลูกค้าตลอด 24×7 ร่วมกับ Partner ต่างๆ ทั่วประเทศไทยนั่นเอง https://www.throughwave.co.th

 

Credit: ขอขอบคุณภาพจาก https://www.slideshare.net/buildacloud/ceph-intro-and-architectural-overview-by-ross-turk