نشر مجموعة توفّر عالي من AlloyDB Omni على أجهزة GCE الافتراضية باستخدام RPM Orchestrator

1. مقدمة

يوضّح هذا الدرس التطبيقي حول الترميز كيفية نشر مجموعة توفّر عالي (HA) من AlloyDB Omni على أجهزة Google Compute Engine (GCE) الافتراضية (VM). في نهاية هذا الدرس التطبيقي، ستوفّر بنية مرجعية عالية التوفّر تتألف من 3 عُقد لقاعدة البيانات و2 من عُقد HAProxy، بالإضافة إلى عقدة تحكّم لعمليات الإدارة.

المتطلبات الأساسية

  • الوصول إلى مشروع Google Cloud وCloud Shell من Cloud Console
  • تم تثبيت Google Cloud SDK (gcloud) وإعداده. للحصول على تفاصيل حول تثبيت gcloud، يُرجى الرجوع إلى gcloud-install.
  • تم تثبيت الإصدار v1.9.8 من Terraform.

ما ستتعلمه

  • كيفية إنشاء أجهزة افتراضية على GCE وتجهيزها لاستخدام AlloyDB Omni
  • كيفية تثبيت وتشغيل أداة AlloyDB Omni RPM Orchestrator
  • كيفية تثبيت حِزم AlloyDB Omni RPM وضبطها لبنية مرجعية عالية التوفّر

المتطلبات

  • الحصول على رابط عنوان URL إلى حِزم AlloyDB Omni RPM وأداة تنظيم حِزم RPM لإجراء ذلك، عليك ملء نموذج الاشتراك في AlloyDB Omni. يتم إرسال الروابط إلى بريدك الإلكتروني الذي يضم خادم عنوان URL للمستودع. ابدأ بضبط متغيرات البيئة التالية لإبقاء عناوين URL في متناول يدك والتي سيتم استخدامها أثناء تجربة البرمجة.
    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 Console، في صفحة اختيار المشروع، اختَر مشروعًا على السحابة الإلكترونية أو أنشِئ مشروعًا على السحابة الإلكترونية.
  2. تأكَّد من تفعيل الفوترة لمشروعك على Cloud. كيفية التحقّق من تفعيل الفوترة في مشروع

بدء Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

رمز لتفعيل Cloud Shell

يمكنك بدلاً من ذلك الضغط على G ثم S. سيؤدي هذا التسلسل إلى تفعيل Cloud Shell إذا كنت تستخدم Google Cloud Console أو هذا الرابط.

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

وحدة طرفية في Google Cloud Shell توضّح أنّه تم ربط البيئة

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. ولست بحاجة إلى تثبيت أي شيء.

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. يمكنك الآن توفير الأجهزة الافتراضية.
    terraform init
    
  2. قبل إنشاء أجهزة افتراضية، تأكَّد من أنّ لديك إذن الوصول المطلوب لإنشاء أجهزة افتراضية وموارد أخرى. باختصار، ستحتاج إلى الأذونات التالية.
    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
    
    من المفترض أن تظهر لك مثيلات تتوافق مع عُقد قاعدة البيانات الثلاث وعُقد HAProxy الاثنتين والجهاز الافتراضي للتحكّم والمناطق المتوافقة. سجِّل المنطقة لعقدة التحكّم. سنحتاج إلى ذلك لاحقًا خلال هذا الدرس العملي.
    export ZONE=$(gcloud compute instances list \
      --filter="name=$CLUSTER-control"          \
      --format="value(zone)" --project=$PROJECT)
    

4. تجهيز الأجهزة الافتراضية لعملية النشر

عليك إنشاء جلسة SSH لعقدة التحكّم وتنفيذ خطوات لتفعيل إذن الوصول إلى جميع الأجهزة الافتراضية (المعروفة أيضًا باسم العُقد) من خلال SSH.

  1. تأكَّد من تحديد متغيّرات البيئة لمشروعك ومجموعتك.
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  2. أنشئ مفتاح SSH وأضِف المفتاح نفسه لتسجيل الدخول إلى الجهاز الافتراضي للتحكّم.
    # 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. اتّصِل بالجهاز الافتراضي للتحكّم عبر بروتوكول النقل الآمن (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 إلى إنشاء بعض النصوص البرمجية للإعداد وتجهيزها في الدليل /tmp/ الخاص بالآلة الافتراضية للتحكّم، والذي يتضمّن عناصر مثل اسم المجموعة وحساب الخدمة واسم المشروع وما إلى ذلك.يمكنك إنشاء إذن وصول إلى SSH بدون كلمة مرور من عُقد التحكّم إلى جميع عُقد المجموعة باستخدام نصوص الإعداد البرمجية على عقدة التحكّم.
    /tmp/setup-ssh-for-cluster.sh
    
    ملاحظة مهمة: سجِّل اسم مستخدم service_account. سنستخدم هذا الاسم كمتغير SSH_USER لاحقًا في هذا الدرس التطبيقي حول الترميز.
  7. في هذا الدرس التطبيقي، يمكننا إيقاف 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- تثبيت مكوّنات البرامج المطلوبة على جميع الأجهزة الافتراضية

الخطوة التالية هي تثبيت مكونات البرامج المطلوبة على الأجهزة الافتراضية. يمكن تنسيق ذلك على عقدة التحكّم. يجب تنفيذ جميع الأوامر التالية على عقدة التحكّم.

  1. اتّصِل بالجهاز الافتراضي للتحكّم عبر بروتوكول النقل الآمن (SSH)، إذا لم يكن متصلاً بعقدة التحكّم.
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    بعد الوصول إلى موجه ssh الخاص بالجهاز الظاهري للتحكّم، يمكنك الحصول على ملف بيئة المصدر.
    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 الخاص بمجموعة RPM Orchestrator Ansible، وثبِّته.
    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. يستخدم المنسّق ملف مواصفات النشر بتنسيق قائمة مستودع 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 يشير إلى دور التثبيت من مجموعة أدوات التنسيق.
    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. اتّصِل بالجهاز الافتراضي للتحكّم عبر بروتوكول النقل الآمن (SSH)، إذا لم يكن متصلاً بعقدة التحكّم.
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    بعد الوصول إلى موجه ssh الخاص بالجهاز الظاهري للتحكّم، يمكنك الحصول على ملف بيئة المصدر.
    source ~/.codelab.env
    
  2. أنشئ رمزًا تجزئة لكلمة المرور واحتفظ به.
    encoded_password=$(echo -n "your unique password" | base64)
    
  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: 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، والذي سيشير إلى دور bootstrap 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. (اختياري) ضبط أداة تجميع اتصالات PgBouncer

تتيح AlloyDB Omni تجميع الاتصالات بشكل بسيط باستخدام PgBouncer. يمكنك إعداد PgBouncer وتهيئته مباشرةً بعد توفير مجموعتك.

  1. أنشئ ملف مواصفات مورد باسم pgbouncer.yaml يربط مجمّع الاتصالات بمجموعة قواعد البيانات:
    cat > pgbouncer.yaml <<EOF
    PgBouncer:
      metadata:
        name: pgbouncer-pooler
      spec:
        dbclusterRef: $CLUSTER
        allowSuperUserAccess: true
        accessMode: "rw"
        port: 6432
    EOF
    
  2. ابدأ عملية تجميع 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();
    
    من المفترض أن تظهر لك نتيجة تشير إلى أنّ الإصدار 18 من PostgreSQL يعمل مع 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، احذف مورد مجمّع الاتصالات بعد ذلك:
    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. تهانينا

تهانينا على إكمال درس البرمجة.

المواضيع التي تناولناها

  • كيفية إنشاء أجهزة افتراضية على GCE وتجهيزها لاستخدام AlloyDB Omni
  • كيفية تثبيت وتشغيل أداة AlloyDB Omni RPM Orchestrator
  • كيفية تثبيت حِزم AlloyDB Omni RPM وضبطها لبنية مرجعية عالية التوفّر

يمكنك الاطّلاع على مزيد من المعلومات حول AlloyDB Omni في المستندات.

‫12. الاستطلاع

كيف ستستخدم هذا البرنامج التعليمي؟

قراءة المحتوى فقط قراءة المحتوى وإكمال التمارين