Ceph Client – Part I: RGW

ในการใช้งาน Ceph Storage ผู้ใช้สามารถใช้งานผ่าน Ceph Client แบบใดแบบหนึ่งหรือหลายแบบร่วมกันก็ได้ โดย Ceph Storage นั้นมาพร้อมกับ Client 3 ประเภทให้ผู้ใช้เลือกใช้งานกับ use case ที่แตกต่างกันได้อย่างเหมาะสม และนอกจากนั้น ผู้ใช้ยังสามารถสร้าง Ceph Client หรือ ทำให้แอปพลิเคชันที่มีอยู่แล้วสามารถทำงานร่วมกับ Ceph Storage ได้อีกด้วย

คำว่า Ceph client ในที่นี้มีคำจำกัดความคร่าวๆ ว่า ช่องทางติดต่อเข้าไปเพื่อทำงานกับ RADOS ซึ่งเป็นส่วนที่ทำหน้าที่จัดการกับข้อมูลภายใน Ceph Storage โดยจากแผนภาพด้านบนนี้แสดงให้เห็นว่า Ceph client มีอยู่ 3 ประเภทด้วยกัน คือ Ceph’s RADOS Gateway (RGW), Ceph’s RADOS Block Device (RBD), และ Ceph File System (CephFS) สำหรับบทความใน Ceph Client series นี้ จะแบ่งออกเป็น 3 ตอน (รวมตอนปัจจุบัน) โดยสำหรับตอนนี้จะกล่าวถึง RGW ในบทความตอนถัดไปจะกล่าวถึง RBD และสำหรับ CephFS และ การสร้าง client ขึ้นเอง จะกล่าวถึงในบทความตอนสุดท้ายครับ

 

สำหรับผู้ที่สนใจเกี่ยวกับ Ceph Storage เพิ่มเติม สามารถติดตามอ่านบทความตอนก่อนหน้านี้ได้ที่นี่ครับ

 

RGW

 

RGW หรือ RADOS Gateway เป็น client ที่อนุญาตให้ผู้ใช้ใช้งาน Ceph Storage ในรูปแบบของ object storage โดยส่วน RGW นี้ทำหน้าที่เป็นตัวกลางระหว่างแอปพลิเคชันของผู้ใช้ และ RADOS ดังที่แสดงในรูปด้านบน

RGW ทำงานอย่างไร?

ในการใช้งานผ่าน RGW นั้น RGW จะทำตัวเป็น web service (ทำงานบน CivetWeb) โดย ติดต่อกับแอปพลิเคชันของผู้ใช้ด้วยวิธีการรับส่ง object ผ่านทาง RESTful HTTP APIs ซึ่งรองรับทั้งการทำงานด้วย Amazon S3 หรือ OpenStack Swift protocol โดยทั้งสอง protocol ทั้งสองนี้เป็น protocol ที่ใช้กันอย่างแพร่หลายในวง object storage industry จนอาจถือได้ว่าเป็น de facto standard เลยทีเดียว ทั้งนี้มีข้อสังเกตว่า object ที่แอปพลิเคชันของผู้ใช้ส่งมายัง RGW ไม่ใช่ RADOS object แต่เป็น S3 หรือ Swift object ครับ หลังจาก RGW ได้รับ object มาจากผู้ใช้แล้วจึงจะทำการแปลงเป็น RADOS object แล้วส่งไปเก็บยัง RADOS ผ่านทาง socket โดยอาศัย librados อีกทีหนึ่ง ซึ่งเป็น library ในการติดต่อทำงานกับ RADOS ผ่านทาง socket

Multi-Site RGW

สำหรับองค์กรขนาดใหญ่ที่มีสาขาอยู่หลายภูมิภาค หรือสำหรับระบบที่มีผู้ใช้งานทั่วโลก การกระจาย storage ออกไปอยู่ยังแต่ละ site ในแต่ละภูมิภาคถือเป็นเรื่องจำเป็น เพราะสามารถช่วยลด latency หรือระยะเวลาในการส่งผ่านข้อมูลจากผู้ใช้มายังระบบ storage ลงได้อย่างมีนัยสำคัญ ทำให้ระบบสามารถทำงานได้อย่างมีประสิทธิภาพมากขึ้น แต่วิธีการดังกล่าวมักก่อให้เกิดปัญหาในการทำให้ข้อมูลในระบบ storage แต่ละภูมิภาคสอดคล้องกันตลอดเวลา ทำให้ในหลายระบบอนุญาตให้บันทึกข้อมูลลงใน site หลักเท่านั้น สำหรับ site อื่นๆ จะทำงานในลักษณะของ read-only หรือ อนุญาตให้อ่านข้อมูลได้อย่างเดียว ทำให้ประสิทธิภาพของระบบลดลง

ดังที่แสดงในรูปด้านบน เมื่อใช้งาน Ceph Storage ผ่าน RGW ผู้ใช้สามารถทำ Multi-Site RGW ได้ทั้งในลักษณะ active-active (สามารถเขียนข้อมูลได้เพียง site แต่สามารถอ่านข้อมูลจาก site ใดก็ได้) และ active-active (อ่านและเขียนข้อมูลที่ site ใดก็ได้) โดยผู้ใช้สามารถติดตั้ง Ceph Storage cluster หลายๆ site ในหลายๆ ภูมิภาคได้ และตั้งค่าให้ Ceph Storage cluster เหล่านั้นทำงานร่วมกัน เสมือนเป็น cluster เดียวกัน อนุญาตให้ผู้ใช้สามารถใช้งาน Ceph Storage ได้อย่างเต็มประสิทธิภาพและต่อเนื่องไม่ว่าจะอยู่ที่ภูมิภาคใด

 

RADOSGW หรือ RGW นับว่าเป็น Ceph Client ที่น่าสนใจมาก เพราะนอกจากจะอนุญาตให้ผู้ใช้ใช้งาน Ceph Storage ในลักษณะของ object storage ผ่าน Amazon S3 และ OpenStack Swift แล้ว นอกจากนี้แล้ว ผู้ใช้ยังสามารถติดตั้ง Ceph Storage และ RGW หลายๆ site ในภูมิภาคที่แตกต่างกัน และกำหนดให้ทำงานร่วมกันเสมือนเป็นระบบ storage เดียวได้อีกด้วย โดยอาศัยความสามารถของ RGW ที่เรียกว่า Multi-Site RGW

 

สามารถอ่านบนความตอนต่อไปเกี่ยวกับ Ceph Block Device (RBD) อีกประเภทหนึ่งของ Ceph Client ได้ที่นี่ครับ

 

References:

 

เกี่ยวกับ Throughwave Thailand

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