การสำรองข้อมูลและการกู้คืนระบบจากภัยพิบัติ
ฐานข้อมูล PostgreSQL ของ control plane คือแหล่งข้อมูลความจริงหนึ่งเดียว (single source of truth) ของระบบ โดยจะเก็บข้อมูลองค์กร โปรเจกต์ ผู้ให้บริการ งบประมาณ ขีดจำกัด ค่ากำหนด guardrail, API key, ข้อมูลบัญชีการใช้งาน และประวัติการใช้งาน (audit log) ทั้งหมดไว้ที่นี่ ดังนั้นการปกป้องข้อมูลชุดนี้จึงเป็นหัวใจสำคัญอย่างยิ่งสำหรับแผนการกู้คืนระบบจากภัยพิบัติ (DR plan)
เอกสารนี้เหมาะสำหรับใคร
วิศวกรแพลตฟอร์ม (platform engineer) ที่มีหน้าที่ดูแลปกป้องข้อมูลและกู้คืนระบบ
สิ่งที่จำเป็นต้องสำรองข้อมูล
| ข้อมูล | แหล่งจัดเก็บ | ความสำคัญ |
|---|---|---|
| ค่ากำหนดผู้เช่าและนโยบายความปลอดภัย | PostgreSQL ของ control plane | ใช้เพื่อจำลองข้อมูลองค์กร โปรเจกต์ งบประมาณ ผู้ให้บริการ และ guardrail ทั้งหมดขึ้นมาใหม่ |
| API keys | PostgreSQL ของ control plane | เพื่อให้คีย์เดิมยังใช้งานได้ต่อเนื่องหลังกู้คืนระบบ |
| ข้อมูลบัญชีการใช้งาน | PostgreSQL ของ control plane | ยอดใช้จ่ายสะสมประจำเดือนและประวัติย้อนหลัง |
| ประวัติการใช้งาน (Audit log) | PostgreSQL ของ control plane | สำหรับตรวจสอบประวัติตามข้อกำหนด |
| ระบบจัดการตัวตน | PostgreSQL ของ Keycloak | บัญชีผู้ใช้งาน ค่ากำหนดการเชื่อมต่อ IdP และการจับคู่กลุ่ม |
| ข้อมูลที่เป็นความลับ (Secrets) | Kubernetes Secrets หรือระบบจัดเก็บความลับของคุณ | คีย์ของผู้ให้บริการ, OIDC secrets และรหัสผ่านฐานข้อมูล |
ข้อมูลชี้วัด ล็อก และประวัติการทำงานในชุดระบบตรวจสอบสถานะการทำงานเป็นเพียงข้อมูลวัดระยะไกลในการปฏิบัติงาน (operational telemetry) โปรดสำรองข้อมูลเหล่านี้เฉพาะในกรณีที่นโยบายการจัดเก็บข้อมูลขององค์กรคุณระบุไว้เท่านั้น เนื่องจากข้อมูลเหล่านี้จะสามารถสร้างขึ้นมาใหม่ได้จากการรับส่งข้อมูลตามปกติ แต่ฐานข้อมูลกำหนดค่าไม่สามารถทดแทนได้เช่นนั้น
ขั้นตอนการสำรองข้อมูล PostgreSQL
ฐานข้อมูล control plane ทำงานอยู่บน CloudNativePG ซึ่งรองรับการตั้งเวลาสำรองข้อมูลไปยังที่จัดเก็บข้อมูลแบบวัตถุ (object storage) ดังนี้
postgres:
backup:
enabled: true
method: objectStore # หรือ volumeSnapshot
objectStore:
destinationPath: s3://backups/opsta-ai-gateway/
endpointURL: https://s3.internal:9000ระบบจะสร้างการสำรองข้อมูลหลัก (base backup) ควบคู่กับประวัติการเขียนข้อมูลอย่างต่อเนื่อง (WAL archiving) ทำให้สามารถกู้คืนข้อมูลย้อนกลับไปยังเวลาที่เจาะจงได้ (point-in-time recovery) โปรดใช้แนวทางเดียวกันนี้กับการสำรองข้อมูลคลัสเตอร์ฐานข้อมูลของ Keycloak ด้วยเช่นกัน
สำรองข้อมูลก่อนการอัปเกรดระบบทุกครั้ง
โปรดสำรองข้อมูลล่าสุดทุกครั้งก่อนเริ่มขั้นตอน การอัปเกรดระบบ เพื่อให้คุณสามารถย้อนกลับเวอร์ชันการย้ายฐานข้อมูลได้หากจำเป็น
ขั้นตอนการกู้คืนข้อมูล
- กู้คืนข้อมูลคลัสเตอร์ PostgreSQL จากไฟล์สำรองข้อมูลล่าสุด และรันประมวลผล WAL ย้อนกลับไปยังช่วงเวลาที่ระบุในกรณีที่ทำ point-in-time recovery โดยทำงานตามขั้นตอนการกู้คืนของ CloudNativePG
- ตรวจสอบให้แน่ใจว่า Kubernetes Secrets ทั้งหมดพร้อมใช้งาน โดยดึงมาจากระบบจัดเก็บความลับหรือจากไฟล์สำรอง
- เริ่มเปิดระบบการทำงานของแพลตฟอร์มด้วยคำสั่ง
helm installหรือupgradeเมื่อระบบเริ่มทำงาน control plane จะทำการเชื่อมต่อไปยังฐานข้อมูลที่กู้คืนเสร็จแล้ว และดำเนินปรับประสานสถานะ (reconcile) ข้อมูลไปยัง gateway โดยอัตโนมัติ ซึ่งผู้ให้บริการ งบประมาณ guardrail และคีย์ต่าง ๆ จะถูกส่งกลับไปยัง data plane ทันที
เนื่องจากเกตเวย์ไม่มีการจัดเก็บค่ากำหนดใด ๆ ไว้ที่ตัวเอง การกู้คืนฐานข้อมูลจึงเสมือนเป็นการกู้คืนพฤติกรรมการทำงานของแพลตฟอร์มทั้งหมด โดยไม่จำเป็นต้องแยกกู้คืนสถานะการทำงานใด ๆ ที่เกตเวย์เพิ่มเติม
$ kubectl -n opsta-ai-gateway get backup
NAME AGE CLUSTER METHOD PHASE ERROR
opsta-pg-backup-20260614 2m opsta-pg barmanObjectStore completedรูปแบบการทำงานด้านการกู้คืนระบบจากภัยพิบัติ
- ฐานข้อมูล: ใน โหมด HA คลัสเตอร์ขนาด 3 instances จะช่วยลดความเสียหายจากการหยุดทำงานของโหนดเดี่ยวได้ และระบบสำรองข้อมูลไปยัง object store จะช่วยป้องกันความเสียหายในระดับสูญเสียคลัสเตอร์ทั้งหมด
- การจำลองระบบ: แพลตฟอร์มสามารถติดตั้งขึ้นใหม่ได้จาก Helm chart ควบคู่กับข้อมูลฐานข้อมูลที่กู้คืนมา โดยไม่ต้องดำเนินการใด ๆ ด้วยตนเอง
- ความลับ (Secrets): แนะนำให้จัดเก็บไว้ในระบบจัดเก็บความลับภายนอก เพื่อให้ข้อมูลคงอยู่แยกต่างหากและพร้อมดึงข้อมูลมาใช้งานได้แม้สูญเสียคลัสเตอร์
ขั้นตอนต่อไป
- ระบบความพร้อมใช้งานสูง (High availability) — วิธีการรับมือโหนดหยุดทำงานโดยไม่ต้องดำเนินกระบวนการกู้คืนข้อมูล
- การอัปเกรดระบบ — ข้อแนะนำการสำรองข้อมูลล่วงหน้าก่อนทำการอัปเกรดระบบ
- ความเป็นเอกราชของข้อมูล — รายละเอียดสิทธิความเป็นเจ้าของข้อมูลและแหล่งจัดเก็บ