Object Storage (S3, Ceph RGW)
ตำแหน่งในระบบผู้ดูแล: Infrastructure › Cloud provider › Ceph S3 (RGW) (
/infra/s3). บัญชีผู้ใช้: Services › Object Storage › S3 accounts (/s3). ราคา: Services › Object Storage › PAYG pricing (/s3/policy). เปิดใช้งานโมดูลได้ที่ System › Admin › License & updates
What it does
ลูกค้าสามารถสร้างบัญชี S3 จากพอร์ทัลและรับคีย์เข้าใช้งานได้ NexCMP จะทำหน้าที่สร้างและลบผู้ใช้ที่ตรงกันบน Ceph RADOS Gateway (RGW) ของคุณผ่านทาง RGW Admin Ops API อ่านค่าการใช้งานเพื่อการเรียกเก็บเงิน และคิดเงินแบบจ่ายตามจริง: พื้นที่จัดเก็บที่เกินโควตาฟรีต่อ GB ต่อเดือน (คิดเงินเป็นรายชั่วโมง) และปริมาณการใช้งานดาวน์โหลดต่อ GB ส่วนการอัปโหลดไม่มีค่าใช้จ่าย
ใช้งานเมื่อคุณรันคลัสเตอร์ Ceph ที่มี RGW และต้องการรีเซล러บริการ object storage
ข้อกำหนด
| Item | Requirement |
|---|---|
| Ceph | คลัสเตอร์ที่มี RGW daemon อย่างน้อยหนึ่งตัว และเปิดใช้งาน Admin Ops API แล้ว (ค่าเริ่มต้น rgw_enable_apis รวม admin แล้ว) |
| ผู้ดูแลระบบ | ผู้ใช้ RGW สำหรับ NexCMP พร้อมสิทธิ์การใช้งานที่ระบุไว้ด้านล่าง ห้ามใช้บัญชีผู้ใช้ที่เป็นเจ้าของข้อมูลของลูกค้า |
| เอนด์พอยต์ | เอนด์พอยต์ S3 ที่ลูกค้าใช้งาน และเอนด์พอยต์ Admin Ops ทั้งคู่ต้องเขียนในรูปแบบ https://host โดย ไม่มีพาท, ใช้พอร์ต 443 เท่านั้น และต้องแปลงเป็นแอดเดรสแบบ สาธารณะ เท่านั้น: ห้ามใช้แอดเดรสแบบ loopback, link-local, multicast, private และ unique-local |
| ใบรับรอง | ใบรับรองที่ถูกต้องสำหรับโฮสต์เอนด์พอยต์ |
| บันทึกการใช้งาน | เปิดใช้งาน RGW usage logging (rgw_enable_usage_log = true) เพื่อให้ API การใช้งานสามารถรายงานปริมาณรับส่งข้อมูลได้ |
| โซน | โซนหลักที่เลือกบริการ Object Storage (S3) ไว้ ดูเพิ่มเติมที่ Zones |
| สตอเรจ | ความจุใน Ceph สำหรับโควตาที่คุณต้องการขาย |
| ขึ้นอยู่กับ | โมดูล Object Storage ปริมาณการดาวน์โหลดจะถูกนําไปคิดรวมใน Bandwidth ด้วย |
เตรียมโครงสร้างพื้นฐาน
บนโหนดผู้ดูแลระบบของ Ceph:
สร้างผู้ดูแลระบบและกำหนดสิทธิ์ Admin Ops ที่จำเป็น:
bashradosgw-admin user create --uid=nexcmp-admin --display-name="NexCMP admin" radosgw-admin caps add --uid=nexcmp-admin --caps="users=*;buckets=*;usage=read;metadata=read" radosgw-admin user info --uid=nexcmp-adminคัดลอก
access_keyและsecret_keyจากผลลัพธ์ ซึ่งจะทำหน้าที่เป็น Admin access key และ Admin secret key ใน NexCMPเปิดใช้งานบันทึกการใช้งานและรีสตาร์ทเกตเวย์:
bashceph config set client.rgw rgw_enable_usage_log trueวางเกตเวย์ไว้เบื้องหลัง HTTPS บนพอร์ต 443 (ผ่านรีเวิร์สพร็อกซีหรือ TLS ของ RGW เอง), ประกาศชื่อ DNS และทดสอบจากเซิร์ฟเวอร์พาเนล:
bashcurl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/คุณควรได้รับผลลัพธ์เป็น S3 XML (HTTP 200 หรือ 403) ไม่ใช่หมดเวลา (timeout)
เชื่อมต่อใน NexCMP
กำหนดบริการ S3 ให้กับโซน เปิดไปที่ Infrastructure › Datacenter › Zone, แก้ไขโซนแล้วเลือก Object Storage (S3) เฉพาะโซนหลักที่เปิดใช้บริการ S3 เท่านั้นที่จะปรากฏในฟอร์มแบ็กเนด
เปิดไปที่ Infrastructure › Cloud provider › Ceph S3 (RGW) และคลิก Add backend:
ฟิลด์ ค่าตัวอย่าง ชื่อแบ็กเนด Ceph RGW 1โซน โซนจากขั้นตอนที่ 1 เอนด์พอยต์ RGW Admin Ops https://s3.example.comCustomer S3 endpoint https://s3.example.comS3 signing region defaultAdmin access key XXXXAdmin secret key XXXXใช้งาน on เปิดใช้งานการขาย (ต้องทดสอบการเชื่อมต่อก่อน) off สำหรับตอนนี้ Reason for change initial setup
คลิก OK (บันทึก) แล้วคลิก Check ในแถว NexCMP จะเรียก Admin Ops API ด้วย admin key คำว่า Ceph connection successful และแท็ก Verified หมายความว่าใช้งานได้
คลิก Edit เปิดสวิตช์ Enable sales แล้วบันทึก NexCMP จะไม่อนุญาตให้เปิดการขายจนกว่าการทดสอบจะสำเร็จ
เปิด Services › Object Storage › PAYG pricing และกำหนดราคา:
ฟิลด์ ความหมาย พื้นที่จัดเก็บข้อมูลส่วนที่เกินฟรีเทียร์ (VND/GB/เดือน) ราคาพื้นที่จัดเก็บ; คิดเงินเป็นรายชั่วโมงโดยใช้ราคารายเดือนหารด้วย 730 Download (VND/GB) ราคาสำหรับทราฟฟิกขาออก Upload (VND/GB) เท่ากับ 0 เสมอ ฟรีเทียร์สำหรับ VM ที่กำลังทำงาน (GB) กำหนดตายตัวที่ 100 GB ต่อบัญชีเมื่อลูกค้ามี VM ที่รันอยู่อย่างน้อย 1 รายการ โดยใช้ร่วมกันทุกบัญชี S3 ตามขนาด Debt limit (VND) วงเงินการใช้งานค้างชำระที่อนุญาต Billing threshold (VND) รวบรวมการใช้งานเป็นใบแจ้งหนี้เดียวเมื่อยอดเกินจำนวนนี้ ยอดเงินขั้นต่ำในการสร้าง S3 (VND) ยอดเงินในกระเป๋าเงินที่ต้องมีเพื่อสร้างบัญชี จำนวนบัญชี S3 สูงสุดต่อลูกค้าหนึ่งราย, โควตาทางเทคนิคเริ่มต้น (GB) ขีดจำกัดสำหรับบัญชีใหม่ 
ราคาร S3 กรอกเป็นสกุลเงิน VND โดยจะถูกแปลงเพื่อแสดงผลและหักเงินในกระเป๋าเงินตามอัตราแลกเปลี่ยนที่มีผลบังคับใช้ ดูข้อมูลเพิ่มเติมที่ Currency and exchange rates
ตรวจสอบ
- Check แสดงข้อความ "Ceph connection successful"
- ในฐานะลูกค้า (หรือใช้บัญชีทดสอบ) ให้สร้างบัญชี S3 บน Ceph
radosgw-admin user listจะแสดงผู้ใช้ใหม่ และ S3 accounts จะแสดงรายการดังกล่าว - สร้าง bucket ด้วย S3 client ใดก็ได้โดยใช้คีย์ของลูกค้าเทียบกับ endpoint ของลูกค้า จากนั้นอัปโหลดไฟล์
- หลังรอบการคิดเงินของชั่วโมงถัดไป S3 accounts จะแสดงการใช้งาน
ข้อจำกัดและหมายเหตุ
- แบ็กเอนด์ที่มีบัญชีเชื่อมอยู่แล้วจะยังคงรักษา zone, endpoint และ region เดิมไว้ หากต้องการเปลี่ยนแปลง ให้สร้างแบ็กเอนด์ใหม่
- หนึ่งโซนสามารถมีแบ็กเอนด์ของตัวเองได้ โดยบัญชีและแบ็กเอนด์จะผูกติดกับโซนนั้นอย่างถาวร
- Free tier และ "การอัปโหลดฟรี" เป็นกฎตายตัว ไม่ใช่ตัวเลือก
- คีย์จะถูกจัดเก็บแบบเข้ารหัส คอนโซลจะแสดงเพียงฟิลด์ "เว้นว่างไว้เพื่อคงคีย์ปัจจุบัน" โดยคู่คีย์จะต้องป้อนร่วมกันเสมอ
- Secret key ของลูกค้าจะแสดงเพียงครั้งเดียวตอนสร้าง และจะไม่แสดงอีกหากทำหายต้องเปลี่ยนใหม่โดยการหมุนเวียนคีย์ (rotate)
การแก้ Problme
| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
| "Endpoint requires HTTPS" | Endpoint ใช้ HTTP ธรรมดา | เผยแพร่ HTTPS บนพอร์ต 443 |
| "ไม่อนุญาตให้ใช้พอร์ตเอ็นด์พอยต์นี้" | พอร์ตอื่นที่ไม่ใช่ 443 | ใช้พอร์ต HTTPS มาตรฐาน |
| "ไม่อนุญาตให้ใช้ที่อยู่ Endpoint นี้" | ชื่อนี้ชี้ไปยังแอดเดอร์สแบบ private, loopback, link-local หรือ unique-local | ใช้แอดเดอร์สแบบสาธารณะ (public address) |
| "Endpoint ต้องประกอบด้วยโปรโตคอลและโฮสต์เท่านั้น" | URL มี path, query หรือข้อมูลผู้ใช้ | Use https://host only. |
| "ไม่สามารถแก้ไขที่อยู่ Endpoint ได้" | DNS ไม่สามารถ resolve จากเซิร์ฟเวอร์แพเนลได้ | Fix DNS. |
| "Failed to connect to Ceph" | Firewall or TLS error | ทดสอบด้วย curl จากเซิร์ฟเวอร์แพเนล |
| "Ceph returned HTTP 403 AccessDenied" | คีย์ไม่ถูกต้องหรือขาดสิทธิ์การใช้งานที่จำเป็น | ตรวจสอบคีย์อีกครั้งแล้วรัน radosgw-admin caps add ใหม่ |
| "Invalid Ceph response" | Endpoint ไม่ใช่ RGW Admin Ops API | ชี้ไปยัง RGW ไม่ใช่หน้าเว็บเพจ |
| "การทดสอบการเชื่อมต่อต้องสำเร็จก่อนจึงจะเปิดใช้งานการขายได้" | คุณเปิดใช้งานการขายก่อนที่จะทำ Check สำเร็จ | รัน Check ก่อน แล้วจึงเปิดใช้งานการขาย |
| "จำเป็นต้องกรอกคีย์ใหม่ทั้งหมดสำหรับ Endpoint" | มีการเปลี่ยนแปลง Endpoint โดยไม่ได้ระบุคีย์ทั้งสองตัว | กรอก Access Key และ Secret Key พร้อมกัน |
| "แบกแอนด์มีทรัพยากรที่เชื่อมโยงอยู่แล้ว โปรดสร้างแบกแอนด์ใหม่หากต้องการเปลี่ยนโซนหรือ Endpoint" | มีบัญชีใช้งานอยู่บนแบ็กเอนด์นี้แล้ว | สร้างแบ็กเอนด์ใหม่ |
| "เลือกโซนหลักที่มีบริการ S3" | โซนนี้ไม่ใช่มาสเตอร์โซนหรือไม่มีบริการ S3 | ทำเครื่องหมายที่ Object Storage (S3) บนโซน |
| "Invalid region" | ภูมิภาค (Region) มีอักขระอื่นนอกเหนือจากตัวอักษร ตัวเลข - และ _ | ใช้ default หรือชื่อ RGW zonegroup ของคุณ |
| "ไม่พบสรุปการใช้งาน Ceph จึงไม่มีการเรียกเก็บเงิน" | Usage log disabled | Enable rgw_enable_usage_log. |