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

1. บทนำ

Codelab นี้แสดงการติดตั้งใช้งานคลัสเตอร์ AlloyDB Omni ที่มีความพร้อมใช้งานสูง (HA) ใน Virtual Machine (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
  • วิธีติดตั้งและเรียกใช้ Orchestrator RPM ของ AlloyDB Omni
  • วิธีติดตั้งและกำหนดค่า RPM ของ AlloyDB Omni สำหรับสถาปัตยกรรมอ้างอิง HA

สิ่งที่คุณต้องมี

  • รับลิงก์ URL ไปยัง RPM ของ AlloyDB Omni และ Orchestrator 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 แสดงว่าสภาพแวดล้อมเชื่อมต่อแล้ว

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

3. สร้าง Virtual Machine ของ Google Cloud Compute Engine

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

  1. กำหนดตัวแปรสภาพแวดล้อมสำหรับรหัสโปรเจ็กต์และชื่อคลัสเตอร์ที่ต้องการ คุณจะใช้ตัวแปรเหล่านี้ตลอด Codelab
    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 เสร็จสมบูรณ์แล้ว ให้ตรวจสอบว่าสร้าง Virtual Machine สำเร็จแล้วโดยแสดงรายการอินสแตนซ์ที่สร้างขึ้นโดยใช้ 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 $(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 ของ Orchestrator RPM แล้วติดตั้ง
    gcloud storage cp "gs://${ORCHESTRATOR_ANSIBLE_COLLECTION_PATH#https://storage.googleapis.com/}google-alloydbomni_orchestrator-*.tar.gz" .
    ansible-galaxy collection install google-alloydbomni_orchestrator-0.1.0-6.tar.gz
    ansible-galaxy collection list | grep alloydbomni_orchestrator
    
    หมายเหตุ: ตรวจสอบว่าตัวแปร ORCHESTRATOR_ANSIBLE_COLLECTION_PATH มี "/" อยู่ที่ส่วนท้าย
  4. Orchestrator ใช้ไฟล์ข้อมูลจำเพาะการติดตั้งใช้งานในรูปแบบ Inventory ของ 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. สร้างเพลย์บุ๊กชื่อ 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. เรียกใช้เพลย์บุ๊กโดยใช้ไฟล์ Inventory เพื่อดาวน์โหลดและติดตั้ง 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. สร้างแฮชสำหรับรหัสผ่านและจดบันทึกแฮชดังกล่าว
    encoded_password=$(echo -n "your unique password" | base64)
    
  3. หากต้องการสร้างคลัสเตอร์ AlloyDB Omni ต้องทราบวิธีกำหนดค่าคลัสเตอร์ สร้างชื่อไฟล์ dbcluster.yaml สำหรับข้อมูลจำเพาะของคลัสเตอร์ DB
    cat > dbcluster.yaml <<EOF
    Secret:
      metadata:
        name: db-pw-$CLUSTER
      spec:
        type: Opaque
        data:
          $CLUSTER: $encoded_password
    ---
    DBCluster:
      metadata:
        name: $CLUSTER
      spec:
        databaseVersion: 18.1.0
        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. สร้างเพลย์บุ๊กชื่อ bootstrap.yaml ซึ่งจะอ้างอิงถึงบทบาท Ansible ในการเริ่มต้นเพื่อสร้างคลัสเตอร์ AlloyDB Omni
    cat > bootstrap.yaml <<EOF
    - name: Create DBCluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    EOF
    
  5. เรียกใช้เพลย์บุ๊กเพื่อสร้างคลัสเตอร์
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
    

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

AlloyDB Omni รองรับการจัดกลุ่มการเชื่อมต่อแบบ Lightweight โดยใช้ 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. เริ่มต้น Pooler ของ PgBouncer โดยใช้เพลย์บุ๊ก 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 โดยตรง คุณสามารถกำหนดค่าแผนการสำรองข้อมูลและทริกเกอร์การสำรองข้อมูลตามความต้องการไปยังบัคเก็ต GCS ที่สร้างขึ้นโดยการตั้งค่า Terraform

  1. สร้างไฟล์ข้อมูลจำเพาะของแผนการสำรองข้อมูลชื่อ backup_plan.yaml ที่ชี้ไปยังบัคเก็ต 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 ชื่อ backup.yaml ที่อ้างอิงถึงบทบาทการจัดการข้อมูลสำรอง
    cat > backup.yaml <<EOF
    - name: Manage AlloyDB Omni Backups
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
        - role: google.alloydbomni_orchestrator.backup
    EOF
    
  3. ใช้แผนการสำรองข้อมูลโดยใช้เพลย์บุ๊ก 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. เรียกใช้เพลย์บุ๊กเพื่อเริ่มการสำรองข้อมูล
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=create_backup.yaml
    
  6. หากต้องการตรวจสอบสถานะของการสำรองข้อมูล ให้สร้างเพลย์บุ๊ก status.yaml
- name: Fetch AlloyDB Omni Resource Status
hosts: localhost
vars:
  ansible_become: true
  ansible_user: $SSH_USER
  ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
roles:
  - role: google.alloydbomni_orchestrator.status
EOF
  1. เรียกใช้เพลย์บุ๊กเพื่อแสดงข้อมูลสำรองทั้งหมด
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. สร้างเพลย์บุ๊กชื่อ teardown.yaml
    cat > teardown.yaml <<EOF
    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
      - role: google.alloydbomni_orchestrator.delete
    EOF
    
  2. เรียกใช้เพลย์บุ๊กโดยใช้ 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
  • วิธีติดตั้งและเรียกใช้ Orchestrator RPM ของ AlloyDB Omni
  • วิธีติดตั้งและกำหนดค่า RPM ของ AlloyDB Omni สำหรับสถาปัตยกรรมอ้างอิง HA

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

12. แบบสำรวจ

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

อ่านผ่านๆ อ่านและทำแบบฝึกหัดให้เสร็จสมบูรณ์