ติดตั้งใช้งานคลัสเตอร์ที่มีความพร้อมใช้งานสูงของ AlloyDB Omni ใน VM ของ GCE โดยใช้ RPM Orchestrator

1. บทนำ

Codelab นี้แสดงการติดตั้งใช้งานคลัสเตอร์ความพร้อมใช้งานสูง (HA) ของ AlloyDB Omni ในเครื่องเสมือน (VM) ของ Google Compute Engine (GCE) เมื่อสิ้นสุด Codelab นี้ คุณจะจัดสรรสถาปัตยกรรมอ้างอิง HA ซึ่งประกอบด้วยโหนดฐานข้อมูล 3 โหนดและโหนด HAProxy 2 โหนด พร้อมด้วยโหนดควบคุมสำหรับการดำเนินการจัดการ

ข้อกำหนดเบื้องต้น

  • สิทธิ์เข้าถึงโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud และ Cloud Shell จาก Cloud Console
  • ติดตั้งและกำหนดค่า Google Cloud SDK (gcloud) แล้ว ดูรายละเอียดเกี่ยวกับการติดตั้ง gcloud ได้ที่ gcloud-install
  • ติดตั้ง Terraform v1.9.8 แล้ว

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้างและเตรียม VM ของ GCE สำหรับ AlloyDB Omni
  • วิธีติดตั้งและเรียกใช้ AlloyDB Omni RPM Orchestrator
  • วิธีติดตั้งและกำหนดค่า RPM ของ AlloyDB Omni สำหรับสถาปัตยกรรมอ้างอิง HA

สิ่งที่ต้องมี

  • รับลิงก์ URL ไปยัง RPM ของ AlloyDB Omni และตัวจัดสรร RPM โดยคุณต้องกรอกแบบฟอร์มลงชื่อสมัครใช้ AlloyDB Omni ระบบจะส่งลิงก์ไปยังอีเมลของคุณซึ่งเป็นเซิร์ฟเวอร์ URL ของที่เก็บ เริ่มต้นตัวแปรสภาพแวดล้อมต่อไปนี้เพื่อให้ URL พร้อมใช้งาน ซึ่งจะใช้ในระหว่าง Codelab
    export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..."
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    export ETCD_REPOSITORY_URL="..."
    
  • เทอร์มินัลที่ใช้งานได้ซึ่งมีสิทธิ์เข้าถึงสแต็กการติดตั้งใช้งาน AlloyDB Omni คุณใช้ Cloud Shell เพื่อวัตถุประสงค์นี้ได้

2. การตั้งค่าและข้อกำหนด

การตั้งค่าโปรเจ็กต์

สร้างโปรเจ็กต์ Google Cloud

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์เปิดใช้การเรียกเก็บเงินแล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่

เริ่มใช้ Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากแล็ปท็อประยะไกลได้ แต่ใน Codelab นี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

ไอคอนเพื่อเปิดใช้งาน Cloud Shell

หรือจะกด G แล้วตามด้วย S ก็ได้ ลำดับนี้จะเปิดใช้งาน Cloud Shell หากคุณอยู่ในคอนโซล Google Cloud หรือใช้ลิงก์นี้

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

เทอร์มินัล Google Cloud Shell แสดงว่าสภาพแวดล้อมเชื่อมต่อแล้ว

เครื่องเสมือนนี้มาพร้อมเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหน้าแรกขนาด 5 GB แบบถาวร และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ โดยไม่จำเป็นต้องติดตั้งอะไร

3. สร้างเครื่องเสมือน Google Cloud Compute Engine

เตรียมสคริปต์ Terraform

  1. กำหนดตัวแปรสภาพแวดล้อมสำหรับรหัสโปรเจ็กต์และชื่อคลัสเตอร์ที่ต้องการ คุณจะได้ใช้ข้อมูลเหล่านี้ตลอดทั้งโค้ดแล็บ
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
    หมายเหตุ: รหัสโปรเจ็กต์ Google Cloud ควรมีความยาวระหว่าง 6 ถึง 30 อักขระเท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects#before_you_begin
  2. ตรวจสอบว่าคุณได้เข้าสู่ระบบด้วยผู้ใช้บัญชี Google Cloud
    gcloud auth login
    
  3. สร้างไดเรกทอรีการทำงานสำหรับการติดตั้งใช้งานและคัดลอกไฟล์การกำหนดค่า Terraform ที่จำเป็นจากแหล่งที่มาของที่เก็บ
    mkdir -p ~/alloydb-omni/$PROJECT/$CLUSTER
    cd ~/alloydb-omni/$PROJECT/$CLUSTER
    gcloud storage cp gs://alloydb-omni-install/rpm-orchestrator/gce/terraform/*.tf .
    
  4. สร้างterraform.tfvarsเพื่อระบุพารามิเตอร์ที่จำเป็นตามสถาปัตยกรรมอ้างอิงตามเนื้อหาต่อไปนี้
    cat > terraform.tfvars <<EOF
    # Required instance counts for reference architecture
    db_instance_count      = 3
    haproxy_instance_count = 2
    control_instance_count = 1
    
    # Optional: Customize if needed with the below variables
    # os_image             = "rocky-linux-cloud/rocky-linux-9"
    # zone                 = "us-west4-c"
    # region_1             = "us-west4"
    # db_instance_type     = "c4-highmem-4"
    # db_disk_type         = "hyperdisk-balanced"
    # db_data_size         =  "50" # GB
    # data_dir             =  "/data"
    EOF
    

เรียกใช้สคริปต์ Terraform และตรวจสอบ

  1. ตอนนี้คุณจัดสรร VM ได้แล้ว
    terraform init
    
  2. ก่อนสร้าง VM โปรดตรวจสอบว่าคุณมีสิทธิ์เข้าถึงที่จำเป็นในการสร้าง VM และทรัพยากรอื่นๆ โดยสรุป คุณจะต้องมีสิทธิ์ต่อไปนี้
    roles/compute.admin
    roles/iam.roleAdmin
    roles/compute.osAdminLogin
    roles/iam.serviceAccountCreator
    roles/iam.serviceAccountUser
    roles/artifactregistry.repoAdmin
    roles/storage.objectUser
    roles/resourcemanager.projectIamAdmin
    roles/serviceusage.serviceUsageAdmin
    
  3. ตรวจสอบการกำหนดค่าและใช้การกำหนดค่าเพื่อจัดสรรทรัพยากร
    terraform validate
    terraform apply --auto-approve
    
    หมายเหตุ: ตรวจสอบว่าคุณใช้ Terraform v1.9.8 ตามที่คาดไว้ในการกำหนดค่าการติดตั้งใช้งาน
  4. เมื่อ Terraform เสร็จสมบูรณ์แล้ว ให้ตรวจสอบว่าสร้างเครื่องเสมือนสำเร็จแล้วโดยแสดงอินสแตนซ์ที่สร้างขึ้นโดยใช้ gcloud
    gcloud compute instances list --filter="name~$CLUSTER" --project=$PROJECT
    
    คุณควรเห็นอินสแตนซ์ที่สอดคล้องกับโหนด DB 3 รายการ, โหนด HAProxy 2 รายการ, VM ควบคุม และโซนที่เกี่ยวข้อง บันทึกโซนสำหรับโหนดควบคุม เราจะต้องใช้ข้อมูลนี้ใน Codelab นี้ในภายหลัง
    export ZONE=$(gcloud compute instances list \
      --filter="name=$CLUSTER-control"          \
      --format="value(zone)" --project=$PROJECT)
    

4. เตรียม VM สำหรับการติดตั้งใช้งาน

คุณต้องสร้างเซสชัน SSH ไปยังโหนดควบคุมและทำตามขั้นตอนเพื่อเปิดใช้การเข้าถึง SSH ใน VM ทั้งหมด (หรือที่เรียกว่าโหนด)

  1. ตรวจสอบว่าได้กำหนดตัวแปรสภาพแวดล้อมสำหรับโปรเจ็กต์และคลัสเตอร์แล้ว
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  2. สร้างคีย์ SSH และเพิ่มคีย์เดียวกันเพื่อเข้าสู่ระบบ VM ควบคุม
    # Replace values with your specific GCP project, cluster and zone details
    ssh-keygen -t ed25519 -f $HOME/.ssh/google_compute_engine
    gcloud compute os-login ssh-keys add --key-file=$HOME/.ssh/google_compute_engine.pub --project=$PROJECT
    
  3. สร้างกฎไฟร์วอลล์เพื่ออนุญาตการเชื่อมต่อ SSH และอนุญาตการรับส่งข้อมูล VRRP
    gcloud compute config-ssh --project=$PROJECT
    gcloud compute firewall-rules create $CLUSTER-allow-ssh --network=$CLUSTER --project=$PROJECT --direction=INGRESS --action=allow --rules=tcp:22 --source-ranges="0.0.0.0/0"
    gcloud compute firewall-rules create $CLUSTER-allow-vrrp --network=$CLUSTER --project=$PROJECT --allow=112 --source-ranges="0.0.0.0/0"
    
  4. เชื่อมต่อกับ VM ควบคุมผ่าน SSH โดยทำดังนี้
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
  5. สร้างกลุ่ม Linux ในโหนดควบคุมโดยใช้ชื่อเดียวกับชื่อผู้ใช้
    sudo groupadd -f $(id -un)
    sudo usermod -aG $(id -un) $(id -un)
    
  6. การตั้งค่า Terraform จะสร้างสคริปต์การกำหนดค่า 2-3 รายการและจัดเตรียมไว้ในไดเรกทอรี /tmp/ ของ VM ควบคุม ซึ่งรวมถึงสิ่งต่างๆ เช่น ชื่อคลัสเตอร์ บัญชีบริการ ชื่อโปรเจ็กต์ ฯลฯ สร้างการเข้าถึง SSH แบบไม่ต้องใช้รหัสผ่านจากโหนดควบคุมไปยังโหนดคลัสเตอร์ทั้งหมดโดยใช้สคริปต์การตั้งค่าในโหนดควบคุม
    /tmp/setup-ssh-for-cluster.sh
    
    สำคัญ: จดบันทึกผู้ใช้ service_account เราจะใช้ข้อมูลนี้เป็น SSH_USER ใน Codelab นี้ในภายหลัง
  7. สำหรับ Codelab นี้ เราจะปิดใช้ SELinux ในโหนดทั้งหมด สคริปต์ Terraform จะเพิ่ม "/tmp/run-all.sh" ซึ่งใช้เพื่อวัตถุประสงค์นี้ได้
    /tmp/run-all.sh sudo setenforce 0
    
  8. หากคุณลงชื่อสมัครใช้ AlloyDB Omni และได้รับลิงก์แล้ว ก็ถึงเวลาเพิ่ม URL เหล่านั้นลงในตัวแปรสภาพแวดล้อมด้วย
    cat >> ~/.codelab.env <<EOF
    export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..."
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    export ETCD_REPOSITORY_URL="..."
    EOF
    
    กำหนด IP เสมือนสำหรับสภาพแวดล้อมจากตัวแปรอินพุต cidr_range ในไฟล์ terraform/variables.tf เพื่อไม่ให้ขัดแย้งกับโหนดอื่นๆ ดังที่แสดงในตัวอย่างต่อไปนี้
    cat >> ~/.codelab.env <<EOF
    export VIRTUAL_IP="10.1.0.50"
    EOF
    

5. ติดตั้งคอมโพเนนต์ซอฟต์แวร์ที่จำเป็นใน VM ทั้งหมด

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

  1. เชื่อมต่อกับ VM ควบคุมผ่าน SSH หากยังไม่ได้อยู่ในโหนดควบคุม
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    เมื่ออยู่ในพรอมต์ SSH ของ VM ควบคุม ให้เรียกใช้ไฟล์สภาพแวดล้อม
    source ~/.codelab.env
    
  2. ติดตั้ง Ansible และไลบรารี Python ที่จำเป็นในโหนดควบคุม
    sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y
    sudo dnf install -y ansible
    sudo dnf install -y python3-grpcio python3-protobuf python3-googleapis-common-protos python3-grpcio-status
    
  3. จากนั้นดาวน์โหลดไฟล์ tar ของคอลเล็กชัน Ansible ของ RPM Orchestrator แล้วติดตั้ง
    gcloud storage cp "gs://${ORCHESTRATOR_ANSIBLE_COLLECTION_PATH#https://storage.googleapis.com/}google-alloydbomni_orchestrator-*.tar.gz" .
    COLLECTION_FILE=$(ls -1 google-alloydbomni_orchestrator-*.tar.gz \
      | sort -V | tail -n 1)
    ansible-galaxy collection install "$COLLECTION_FILE"
    ansible-galaxy collection list | grep alloydbomni_orchestrator
    
    คำสั่ง sort -V และ tail -n 1 จะเลือกไฟล์ที่มีเวอร์ชันล่าสุด หมายเหตุ: ตรวจสอบว่าตัวแปร ORCHESTRATOR_ANSIBLE_COLLECTION_PATH มี "/" อยู่ท้าย
  4. Orchestrator ใช้ไฟล์ข้อกำหนดการติดตั้งใช้งานในรูปแบบสินค้าคงคลังของ Ansible เพื่อทำความเข้าใจโทโพโลยีคลัสเตอร์ สร้างไฟล์ชื่อ deployment_spec.yaml ที่มีรายละเอียดของโหนดในโหนดควบคุม
    cat > deployment_spec.yaml <<EOF
    alloydbomni:
      vars:
        cluster_manager:
          name: "$CLUSTER"
        etcd:
          setup: true
          config_forcewrite: true
        alloydbomni:
          major_version: "18"
          repo_url: $ALLOYDB_OMNI_REPOSITORY_URL
        alloydbomni_monitor:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
        alloydbomni_cluster_manager:
          repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL
        alloydbomni_node_manager:
          repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL
        pgbouncer:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
        pgbackrest:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
    
      children:
        primary_instance_nodes:
          hosts:
            $CLUSTER-db1:
            $CLUSTER-db2:
            $CLUSTER-db3:
        load_balancer_nodes:
          hosts:
            $CLUSTER-haproxy1:
            $CLUSTER-haproxy2:
    EOF
    
    หมายเหตุ: ตรวจสอบไฟล์ที่สร้างขึ้นเพื่อให้แน่ใจว่าอ้างอิงถึงค่าที่ถูกต้อง
  5. สร้าง Playbook ชื่อ install.yaml ที่อ้างอิงบทบาทการติดตั้งจากคอลเล็กชัน Orchestrator
    cat > install.yaml <<EOF
    - name: Install AlloyDB Omni cluster components
      hosts: all
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
        - role: google.alloydbomni_orchestrator.install
    EOF
    
    หมายเหตุ: ตรวจสอบไฟล์ที่สร้างขึ้นเพื่อให้แน่ใจว่าอ้างอิงถึงค่าที่ถูกต้อง
  6. เรียกใช้เพลย์บุ๊กโดยใช้ไฟล์สินค้าคงคลังเพื่อดาวน์โหลดและติดตั้ง RPM ในโหนดที่ระบุทั้งหมด
    ansible-playbook -i deployment_spec.yaml install.yaml
    

6. บูตสตราปคลัสเตอร์ AlloyDB Omni

ในขั้นตอนนี้ เราได้ติดตั้งคอมโพเนนต์ที่จำเป็นทั้งหมดในโหนดทั้งหมดแล้ว เราพร้อมที่จะเริ่มต้นคลัสเตอร์ AlloyDB Omni แล้ว

  1. เชื่อมต่อกับ VM ควบคุมผ่าน SSH หากยังไม่ได้อยู่ในโหนดควบคุม
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    เมื่ออยู่ในพรอมต์ SSH ของ VM ควบคุม ให้เรียกใช้ไฟล์สภาพแวดล้อม
    source ~/.codelab.env
    
  2. สร้างแฮชสำหรับรหัสผ่านและดึงข้อมูลเวอร์ชันฐานข้อมูล AlloyDB Omni ที่ติดตั้ง
    encoded_password=$(echo -n "your unique password" | base64)
    DB_VERSION=$(/tmp/run-all.sh -t db 'rpm -q --qf "%{VERSION}\n" alloydbomni18' | tail -n 1)
    echo "$DB_VERSION"
    
  3. หากต้องการสร้างคลัสเตอร์ AlloyDB Omni ต้องทราบวิธีกำหนดค่า สร้างชื่อไฟล์ dbcluster.yaml สำหรับข้อกำหนดของคลัสเตอร์ฐานข้อมูล
    cat > dbcluster.yaml <<EOF
    Secret:
      metadata:
        name: db-pw-$CLUSTER
      spec:
        type: Opaque
        data:
          $CLUSTER: $encoded_password
    ---
    DBCluster:
      metadata:
        name: $CLUSTER
      spec:
        databaseVersion: $DB_VERSION
        mode: ""
        availability:
          numberOfStandbys: 2
          enableAutoFailover: true
          enableAutoHeal: true
          autoFailoverTriggerThreshold: 2
          autoHealTriggerThreshold: 2
          healthcheckPeriodSeconds: 5
          replayReplicationSlotsOnStandbys: false
        primarySpec:
          adminUser:
            passwordRef:
              name: db-pw-$CLUSTER
          resources:
            cpu: 4
            memory: 32Gi
            disks:
            - name: DataDisk
              path: $PGDATA
          dbLoadBalancerOptions:
            gcp:
              loadBalancerIP: "$VIRTUAL_IP"
              loadBalancerType: "internal"
              loadBalancerInterface: "eth0"
    EOF
    
  4. สร้าง Playbook ชื่อ bootstrap.yaml ซึ่งจะอ้างอิงถึงบทบาท Ansible ของการเริ่มต้นระบบเพื่อสร้างคลัสเตอร์ AlloyDB Omni
    cat > bootstrap.yaml <<EOF
    - name: Create DBCluster
      hosts: localhost
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    EOF
    
  5. เรียกใช้ Playbook เพื่อสร้างคลัสเตอร์
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
    

7. (ไม่บังคับ) กำหนดค่า PgBouncer Connection Pooler

AlloyDB Omni รองรับการจัดกลุ่มการเชื่อมต่อที่มีน้ำหนักเบาโดยใช้ PgBouncer คุณสามารถกำหนดค่าและบูตสแตรป PgBouncer ได้ทันทีหลังจากจัดสรรคลัสเตอร์

  1. สร้างไฟล์ข้อกำหนดทรัพยากรชื่อ pgbouncer.yaml ที่เชื่อมโยง Connection Pooler กับคลัสเตอร์ฐานข้อมูล
    cat > pgbouncer.yaml <<EOF
    PgBouncer:
      metadata:
        name: pgbouncer-pooler
      spec:
        dbclusterRef: $CLUSTER
        allowSuperUserAccess: true
        accessMode: "rw"
        port: 6432
    EOF
    
  2. เริ่มต้นพูลเลอร์ PgBouncer โดยใช้ Playbook bootstrap.yaml เดียวกันที่สร้างไว้ก่อนหน้านี้ โดยส่งไฟล์ข้อกำหนดใหม่
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=pgbouncer.yaml
    

8. ยืนยันคลัสเตอร์ AlloyDB Omni

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

  1. ติดตั้งที่เก็บไคลเอ็นต์และแพ็กเกจ PostgreSQL 18 ในโหนดควบคุมโดยทำดังนี้
    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo dnf install -y postgresql18
    
  2. เชื่อมต่อกับคลัสเตอร์โดยใช้ IP เสมือนที่จองไว้ก่อนหน้านี้ ระบบจะแจ้งให้คุณป้อนรหัสผ่านที่คุณเข้ารหัสไว้ใน dbcluster.yaml
    /usr/pgsql-18/bin/psql -h $VIRTUAL_IP -U postgres -W
    
  3. เมื่อเชื่อมต่อแล้ว คุณจะเรียกใช้การค้นหา SQL พื้นฐานเพื่อตรวจสอบสถานะคลัสเตอร์ได้ เช่น ตรวจสอบเวอร์ชันฐานข้อมูล
    postgres=# SELECT version();
    
    คุณควรเห็นเอาต์พุตที่ระบุว่า PostgreSQL 18 ทำงานร่วมกับ AlloyDB Omni พิมพ์ \q เพื่อออกจากพรอมต์

9. (ไม่บังคับ) สำรองข้อมูลโดยใช้ pgBackRest

AlloyDB Omni ผสานรวมกับ pgBackRest เพื่อจัดการข้อมูลสำรองไปยัง Cloud Storage โดยตรง คุณสามารถกำหนดค่าแผนการสำรองข้อมูลและทริกเกอร์การสำรองข้อมูลแบบออนดีมานด์ไปยัง Bucket ของ GCS ที่สร้างขึ้นโดยการตั้งค่า Terraform

  1. สร้างไฟล์ข้อกำหนดแผนสำรองชื่อ backup_plan.yaml ที่ชี้ไปยัง Bucket ของ GCS ที่จัดสรรไว้
    cat > backup_plan.yaml <<EOF
    BackupPlan:
      metadata:
        name: pgb-plan
      spec:
        dbclusterRef: $CLUSTER
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: $CLUSTER-gcs-backups
            key: /backups
    EOF
    
  2. สร้าง Ansible Playbook ชื่อ backup.yaml ที่อ้างอิงถึงบทบาทการจัดการการสำรองข้อมูล
    cat > backup.yaml <<EOF
    - name: Manage AlloyDB Omni Backups
      hosts: localhost
      roles:
        - role: google.alloydbomni_orchestrator.backup
    EOF
    
  3. ใช้แผนสำรองโดยใช้ Playbook backup.yaml
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=backup_plan.yaml
    
  4. เมื่อสร้างแผนเรียบร้อยแล้ว ให้สร้างไฟล์ทรัพยากรการสำรองข้อมูลตามต้องการชื่อ create_backup.yaml
    cat > create_backup.yaml <<EOF
    Backup:
      metadata:
        name: on-demand-backup
      spec:
        backupPlanRef: pgb-plan
        dbclusterRef: $CLUSTER
    EOF
    
  5. เรียกใช้ Playbook เพื่อเริ่มการสำรองข้อมูล
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=create_backup.yaml
    
  6. หากต้องการยืนยันสถานะของข้อมูลสำรอง ให้สร้าง Playbook status.yaml ดังนี้
cat > status.yaml <<EOF
- name: Fetch AlloyDB Omni Resource Status
  hosts: localhost
  roles:
    - role: google.alloydbomni_orchestrator.status
EOF
  1. เรียกใช้ Playbook เพื่อแสดงรายการข้อมูลสำรองทั้งหมด
ansible-playbook status.yaml -i deployment_spec.yaml -e resource_type=Backup
  1. หรือหากต้องการดูข้อมูลโดยละเอียดเกี่ยวกับข้อมูลสำรองที่เฉพาะเจาะจงซึ่งสร้างไว้ก่อนหน้านี้ ให้ส่ง -e resource_name=on-demand-backup ดังนี้
ansible-playbook status.yaml -i deployment_spec.yaml \
  -e resource_type=Backup \
  -e resource_name=on-demand-backup

10. ล้างข้อมูลทรัพยากร

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

  1. สร้าง Playbook ชื่อ teardown.yaml:
    cat > teardown.yaml <<EOF
    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      roles:
      - role: google.alloydbomni_orchestrator.delete
    EOF
    
  2. เรียกใช้ Playbook โดยใช้ ansible-playbook หากกำหนดค่าการสำรองข้อมูลไว้ ให้ลบทรัพยากร Backup และ BackupPlan ก่อน
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=Backup" -e "resource_name=on-demand-backup"
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=BackupPlan" -e "resource_name=pgb-plan"
    
    หากกำหนดค่า PgBouncer ให้ลบทรัพยากร Connection Pooler ดังนี้
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=PgBouncer" -e "resource_name=pgbouncer-pooler"
    
    จากนั้นระบุ DBCluster เป็น resource_type แล้วลบคลัสเตอร์ฐานข้อมูลเอง
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=DBCluster" -e "resource_name=$CLUSTER"
    
  3. เมื่อลบคลัสเตอร์แล้ว ให้ออกจากระบบโหนดควบคุม กลับไปที่เทอร์มินัล แล้วไปที่ไดเรกทอรีงาน Terraform
    หมายเหตุ: หากเพิ่งเข้าสู่ระบบ Cloud Shell โปรดอย่าลืมตั้งค่าต่อไปนี้
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  4. ลบกฎไฟร์วอลล์ VRRP และทำลายทรัพยากรที่จัดการโดย Terraform โดยทำดังนี้
    gcloud compute firewall-rules delete -q "$CLUSTER-allow-vrrp" --project="$PROJECT"
    gcloud compute firewall-rules delete -q "$CLUSTER-allow-ssh" --project="$PROJECT"
    terraform destroy
    
  5. ยืนยันการทำลายเมื่อได้รับข้อความแจ้ง เนื่องจากทรัพยากรหรือเส้นทางของเครือข่ายที่ยังคงอยู่ อาจป้องกันไม่ให้มีการเลิกใช้งานอย่างสมบูรณ์ในบางครั้ง ให้เรียกใช้คำสั่งการล้างข้อมูลที่ปลอดภัยต่อไปนี้เพื่อให้แน่ใจว่าระบบได้นำกฎไฟร์วอลล์ เกตเวย์ NAT เราเตอร์ เส้นทาง ซับเน็ต และเครือข่ายที่เกี่ยวข้องทั้งหมดออกแล้ว แทนที่ REGION ด้วยภูมิภาคการติดตั้งใช้งานที่เฉพาะเจาะจง เช่น "us-central1"
    # Delete any remaining firewall rules associated with the cluster
    gcloud compute firewall-rules list --project=$PROJECT 2> /dev/null | grep ^$CLUSTER- | cut -f1 -d' ' | \
      while read rule; do gcloud compute firewall-rules delete --project=$PROJECT --quiet $rule; done
    
    # Delete the Cloud NAT gateway and router if they still exist
    gcloud compute routers nats describe $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute routers nats delete $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT --quiet
    
    gcloud compute routers describe $CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute routers delete $CLUSTER-router --region=REGION --project=$PROJECT --quiet
    
    # Delete any remaining custom routes
    gcloud compute routes list --project=$PROJECT --filter="network:$CLUSTER" --format="value(name)" 2>/dev/null | \
      while read route; do gcloud compute routes delete --project=$PROJECT --quiet $route 2>/dev/null || true; done
    
    # Delete the subnet and network if they still exist
    gcloud compute networks subnets describe $CLUSTER --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute networks subnets delete $CLUSTER --region=REGION --project=$PROJECT --quiet
    
    gcloud compute networks describe $CLUSTER --project $PROJECT 2> /dev/null \
      && gcloud compute networks delete $CLUSTER --project $PROJECT --quiet
    

11. ขอแสดงความยินดี

ขอแสดงความยินดีที่ทำ Codelab เสร็จสมบูรณ์

สิ่งที่เราได้พูดถึง

  • วิธีสร้างและเตรียม VM ของ GCE สำหรับ AlloyDB Omni
  • วิธีติดตั้งและเรียกใช้ AlloyDB Omni RPM Orchestrator
  • วิธีติดตั้งและกำหนดค่า RPM ของ AlloyDB Omni สำหรับสถาปัตยกรรมอ้างอิง HA

อ่านข้อมูลเพิ่มเติมเกี่ยวกับ AlloyDB Omni ได้ในเอกสารประกอบ

12. แบบสำรวจ

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านอย่างเดียว อ่านและทำแบบฝึกหัด