Skip to content

การสำรองข้อมูลและการกู้คืนระบบจากภัยพิบัติ

ฐานข้อมูล PostgreSQL ของ control plane คือแหล่งข้อมูลความจริงหนึ่งเดียว (single source of truth) ของระบบ โดยจะเก็บข้อมูลองค์กร โปรเจกต์ ผู้ให้บริการ งบประมาณ ขีดจำกัด ค่ากำหนด guardrail, API key, ข้อมูลบัญชีการใช้งาน และประวัติการใช้งาน (audit log) ทั้งหมดไว้ที่นี่ ดังนั้นการปกป้องข้อมูลชุดนี้จึงเป็นหัวใจสำคัญอย่างยิ่งสำหรับแผนการกู้คืนระบบจากภัยพิบัติ (DR plan)

เอกสารนี้เหมาะสำหรับใคร

วิศวกรแพลตฟอร์ม (platform engineer) ที่มีหน้าที่ดูแลปกป้องข้อมูลและกู้คืนระบบ

สิ่งที่จำเป็นต้องสำรองข้อมูล

ข้อมูลแหล่งจัดเก็บความสำคัญ
ค่ากำหนดผู้เช่าและนโยบายความปลอดภัยPostgreSQL ของ control planeใช้เพื่อจำลองข้อมูลองค์กร โปรเจกต์ งบประมาณ ผู้ให้บริการ และ guardrail ทั้งหมดขึ้นมาใหม่
API keysPostgreSQL ของ 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) ดังนี้

yaml
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 ด้วยเช่นกัน

สำรองข้อมูลก่อนการอัปเกรดระบบทุกครั้ง

โปรดสำรองข้อมูลล่าสุดทุกครั้งก่อนเริ่มขั้นตอน การอัปเกรดระบบ เพื่อให้คุณสามารถย้อนกลับเวอร์ชันการย้ายฐานข้อมูลได้หากจำเป็น

ขั้นตอนการกู้คืนข้อมูล

  1. กู้คืนข้อมูลคลัสเตอร์ PostgreSQL จากไฟล์สำรองข้อมูลล่าสุด และรันประมวลผล WAL ย้อนกลับไปยังช่วงเวลาที่ระบุในกรณีที่ทำ point-in-time recovery โดยทำงานตามขั้นตอนการกู้คืนของ CloudNativePG
  2. ตรวจสอบให้แน่ใจว่า Kubernetes Secrets ทั้งหมดพร้อมใช้งาน โดยดึงมาจากระบบจัดเก็บความลับหรือจากไฟล์สำรอง
  3. เริ่มเปิดระบบการทำงานของแพลตฟอร์มด้วยคำสั่ง helm install หรือ upgrade เมื่อระบบเริ่มทำงาน control plane จะทำการเชื่อมต่อไปยังฐานข้อมูลที่กู้คืนเสร็จแล้ว และดำเนินปรับประสานสถานะ (reconcile) ข้อมูลไปยัง gateway โดยอัตโนมัติ ซึ่งผู้ให้บริการ งบประมาณ guardrail และคีย์ต่าง ๆ จะถูกส่งกลับไปยัง data plane ทันที

เนื่องจากเกตเวย์ไม่มีการจัดเก็บค่ากำหนดใด ๆ ไว้ที่ตัวเอง การกู้คืนฐานข้อมูลจึงเสมือนเป็นการกู้คืนพฤติกรรมการทำงานของแพลตฟอร์มทั้งหมด โดยไม่จำเป็นต้องแยกกู้คืนสถานะการทำงานใด ๆ ที่เกตเวย์เพิ่มเติม

bash
$ 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): แนะนำให้จัดเก็บไว้ในระบบจัดเก็บความลับภายนอก เพื่อให้ข้อมูลคงอยู่แยกต่างหากและพร้อมดึงข้อมูลมาใช้งานได้แม้สูญเสียคลัสเตอร์

ขั้นตอนต่อไป

Enterprise AI governance, on infrastructure you own.