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

1. مقدمة

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

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

  • الوصول إلى مشروع على السحابة الإلكترونية من Google وCloud Shell من Cloud Console
  • تم تثبيت حزمة تطوير البرامج (SDK) من Google Cloud (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 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 -f $(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" .
    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. يستخدم المنسّق ملف مواصفات نشر بتنسيق مستودع 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. أنشئ قيمة تجزئة لكلمة المرور واسترجِع إصدار قاعدة بيانات 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. أنشئ ملفًا نصيًا باسم bootstrap.yaml، والذي سيشير إلى دور bootstrap ansible لإنشاء مجموعة AlloyDB Omni.
    cat > bootstrap.yaml <<EOF
    - name: Create DBCluster
      hosts: localhost
      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
      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:
cat > status.yaml <<EOF
- name: Fetch AlloyDB Omni Resource Status
  hosts: localhost
  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
      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. استطلاع

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

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