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
- في Google Cloud Console، في صفحة اختيار المشروع، اختَر مشروعًا على السحابة الإلكترونية أو أنشِئ مشروعًا على السحابة الإلكترونية.
- تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

يمكنك بدلاً من ذلك الضغط على G ثم S. سيؤدي هذا التسلسل إلى تفعيل Cloud Shell إذا كنت تستخدم Google Cloud Console أو هذا الرابط.
من المفترَض أن يستغرق توفير البيئة والاتصال بها بضع ثوانٍ فقط. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذا الجهاز الافتراضي بجميع أدوات التطوير التي تحتاج إليها. توفّر هذه الخدمة دليلًا دائمًا للمنزل بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يحسّن بشكل كبير أداء الشبكة والمصادقة. يمكن إكمال جميع المهام في هذا الدرس البرمجي بدون الحاجة إلى مغادرة المتصفّح. ولن تحتاج إلى تثبيت أي برامج.
3- إنشاء أجهزة افتراضية على Google Cloud Compute Engine
إعداد نصوص Terraform البرمجية
- حدِّد متغيّرات البيئة لرقم تعريف مشروعك واسم المجموعة المطلوب. ستستخدم هذه القيم في جميع مراحل الدرس التطبيقي.
ملاحظة: يجب أن يتراوح طول رقم تعريف مشروع Google Cloud بين 6 و30 حرفًا فقط. لمزيد من المعلومات، يُرجى الرجوع إلى https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects#before_you_beginexport PROJECT="your-project-id" export CLUSTER="your-cluster-name" - تأكَّد من تسجيل الدخول باستخدام حساب مستخدم على Google Cloud.
gcloud auth login - أنشئ دليل عمل لعملية النشر وانسخ ملفات إعدادات Terraform المطلوبة من مصدر المستودع.
mkdir -p ~/alloydb-omni/$PROJECT/$CLUSTER cd ~/alloydb-omni/$PROJECT/$CLUSTER gcloud storage cp gs://alloydb-omni-install/rpm-orchestrator/gce/terraform/*.tf . - أنشِئ ملف
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 البرمجية والتحقّق من صحتها
- يمكنك الآن توفير الأجهزة الافتراضية.
terraform init - قبل إنشاء الأجهزة الافتراضية، تأكَّد من أنّ لديك إذن الوصول المطلوب لإنشاء الأجهزة الافتراضية والموارد الأخرى. باختصار، يجب أن تتوفّر لديك الأذونات التالية.
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 - تحقَّق من صحة الإعدادات وطبِّقها لتوفير الموارد.
ملاحظة: تأكَّد من استخدام Terraform v1.9.8 كما هو متوقّع في إعدادات النشر.terraform validate terraform apply --auto-approve - بعد اكتمال عملية Terraform، تأكَّد من إنشاء الأجهزة الافتراضية بنجاح من خلال إدراج المثيلات التي تم إنشاؤها باستخدام
gcloud. من المفترض أن تظهر لك مثيلات تتوافق مع عُقد قواعد البيانات الثلاث وعُقد HAProxy الاثنتين والجهاز الافتراضي للتحكّم والمناطق ذات الصلة. سجِّل المنطقة لعقدة التحكّم. سنحتاج إلى ذلك لاحقًا خلال هذا الدرس البرمجي.gcloud compute instances list --filter="name~$CLUSTER" --project=$PROJECTexport ZONE=$(gcloud compute instances list \ --filter="name=$CLUSTER-control" \ --format="value(zone)" --project=$PROJECT)
4. تجهيز الأجهزة الافتراضية لعملية النشر
عليك إنشاء جلسة SSH لعقدة التحكّم وتنفيذ خطوات لتفعيل إمكانية الوصول إلى جميع الأجهزة الافتراضية (المعروفة أيضًا باسم العُقد) من خلال SSH.
- تأكَّد من تحديد متغيرات البيئة لمشروعك ومجموعتك.
export PROJECT="your-project-id" export CLUSTER="your-cluster-name" - أنشئ مفتاح 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 - أنشئ قاعدة جدار حماية للسماح باتصالات 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" - اتّصِل بالجهاز الافتراضي للتحكّم عبر بروتوكول النقل الآمن (SSH):
gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT - أنشئ مجموعة Linux على عقدة التحكّم بالاسم نفسه الذي يحمله اسم المستخدم:
sudo groupadd -f $(id -un) sudo usermod -aG $(id -un) $(id -un) - يؤدي إعداد Terraform إلى إنشاء بعض نصوص التهيئة البرمجية وتجهيزها في الدليل
/tmp/الخاص بالجهاز الافتراضي للتحكّم الذي يتضمّن عناصر مثل اسم المجموعة وحساب الخدمة واسم المشروع وما إلى ذلك.يمكنك إنشاء إذن وصول إلى بروتوكول النقل الآمن (SSH) بدون كلمة مرور من عُقد التحكّم إلى جميع عُقد المجموعة باستخدام نصوص التهيئة البرمجية على عقدة التحكّم. ملاحظة مهمة: سجِّل اسم مستخدم service_account. سنستخدم هذا المتغير باسم SSH_USER لاحقًا في هذا الدرس العملي./tmp/setup-ssh-for-cluster.sh - في هذا الدرس التطبيقي، يمكننا إيقاف SELinux على جميع العُقد. يضيف نص Terraform البرمجي /tmp/run-all.sh الذي يمكن استخدامه لهذا الغرض.
/tmp/run-all.sh sudo setenforce 0 - إذا كنت قد اشتركت في AlloyDB Omni وحصلت على الروابط، حان الوقت لإضافة عناوين URL هذه إلى متغيرات البيئة أيضًا.
حدِّد عنوان IP افتراضيًا لبيئتك من متغيّر الإدخال cidr_range في الملف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="..." EOFterraform/variables.tf، على ألا يتعارض مع العُقد الأخرى، كما هو موضّح في المثال التالي:cat >> ~/.codelab.env <<EOF export VIRTUAL_IP="10.1.0.50" EOF
5- تثبيت مكوّنات البرامج المطلوبة على جميع الأجهزة الافتراضية
الخطوة التالية هي تثبيت مكونات البرامج المطلوبة على الأجهزة الافتراضية. ويمكن تنسيق ذلك على عقدة التحكّم. يجب تنفيذ جميع الأوامر التالية على عقدة التحكّم.
- اتّصِل بالجهاز الافتراضي للتحكّم عبر بروتوكول النقل الآمن (SSH)، إذا لم يكن متصلاً بعقدة التحكّم.
بعد الوصول إلى طلب ssh الخاص بالجهاز الافتراضي للتحكّم، شغِّل ملف بيئة المصدر.gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECTsource ~/.codelab.env - على عقدة التحكّم، ثبِّت 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 - بعد ذلك، نزِّل ملف 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_orchestratorsort -Vوtail -n 1الملف الذي يتضمّن أحدث إصدار. ملاحظة: تأكَّد من أنّ المتغيّر ORCHESTRATOR_ANSIBLE_COLLECTION_PATH يتضمّن "/" في النهاية. - يستخدم المنسّق ملف مواصفات نشر بتنسيق مستودع 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 - أنشئ دليلًا إرشاديًا باسم 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 - نفِّذ دليل التشغيل باستخدام ملف المستودع لتنزيل حِزم RPM وتثبيتها على جميع العُقد المحدّدة.
ansible-playbook -i deployment_spec.yaml install.yaml
6. إعداد مجموعة AlloyDB Omni
في هذه المرحلة، نكون قد ثبّتنا جميع المكوّنات المطلوبة على جميع العُقد. نحن على استعداد لتنفيذ عملية الإعداد الأوّلي لمجموعة AlloyDB Omni.
- اتّصِل بالجهاز الافتراضي للتحكّم عبر بروتوكول النقل الآمن (SSH)، إذا لم يكن متصلاً بعقدة التحكّم.
بعد الوصول إلى طلب ssh الخاص بالجهاز الافتراضي للتحكّم، شغِّل ملف بيئة المصدر.gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECTsource ~/.codelab.env - أنشئ قيمة تجزئة لكلمة المرور واسترجِع إصدار قاعدة بيانات 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" - لإنشاء مجموعة، يجب أن تعرف 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 - أنشئ ملفًا نصيًا باسم bootstrap.yaml، والذي سيشير إلى دور bootstrap ansible لإنشاء مجموعة AlloyDB Omni.
cat > bootstrap.yaml <<EOF - name: Create DBCluster hosts: localhost roles: - role: google.alloydbomni_orchestrator.bootstrap EOF - تنفيذ كتاب التشغيل لإنشاء مجموعة
ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
7. (اختياري) ضبط أداة تجميع اتصالات PgBouncer
تتيح AlloyDB Omni تجميع الاتصالات الخفيف باستخدام PgBouncer. يمكنك إعداد PgBouncer وتشغيله مباشرةً بعد توفير مجموعتك.
- أنشئ ملف مواصفات مورد باسم pgbouncer.yaml يربط مجمّع الاتصالات بمجموعة قواعد البيانات:
cat > pgbouncer.yaml <<EOF PgBouncer: metadata: name: pgbouncer-pooler spec: dbclusterRef: $CLUSTER allowSuperUserAccess: true accessMode: "rw" port: 6432 EOF - ابدأ عملية إعداد مجمّع PgBouncer باستخدام ملف bootstrap.yaml الذي تم إنشاؤه سابقًا، مع تمرير ملف المواصفات الجديد:
ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=pgbouncer.yaml
8. التحقّق من مجموعة AlloyDB Omni
للتأكّد من أنّ مجموعتك تعمل بشكل صحيح ويمكن الوصول إليها باستخدام موازن التحميل، يمكنك الاتصال بها باستخدام برنامج PostgreSQL العادي من عقدة التحكّم.
- ثبِّت مستودع حزمة وبرنامج 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 - اتّصِل بالمجموعة باستخدام عنوان IP الظاهري المحجوز سابقًا. سيُطلب منك إدخال كلمة المرور التي تم ترميزها في dbcluster.yaml:
/usr/pgsql-18/bin/psql -h $VIRTUAL_IP -U postgres -W - بعد الاتصال، يمكنك تنفيذ طلبات بحث SQL الأساسية للتحقّق من حالة المجموعة، مثل التحقّق من إصدار قاعدة البيانات:
من المفترض أن يظهر لك ناتج يشير إلى أنّ الإصدار 18 من PostgreSQL يعمل مع AlloyDB Omni. اكتبpostgres=# SELECT version();\qللخروج من الطلب.
9. (اختياري) الاحتفاظ بنسخة احتياطية من البيانات باستخدام pgBackRest
تتكامل AlloyDB Omni مع pgBackRest لإدارة عمليات النسخ الاحتياطي مباشرةً إلى Cloud Storage. يمكنك إعداد خطة احتياطية وتفعيل الاحتفاظ بنسخة احتياطية عند الطلب في حزمة GCS التي تم إنشاؤها من خلال إعداد Terraform.
- أنشئ ملف مواصفات خطة احتياطية باسم 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 - أنشِئ ملف إعدادات Ansible باسم backup.yaml يشير إلى دور إدارة النسخ الاحتياطية:
cat > backup.yaml <<EOF - name: Manage AlloyDB Omni Backups hosts: localhost roles: - role: google.alloydbomni_orchestrator.backup EOF - طبِّق الخطة الاحتياطية باستخدام ملف backup.yaml:
ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=backup_plan.yaml - بعد إنشاء الخطة بنجاح، أنشئ ملفًا لمورد النسخ الاحتياطي عند الطلب باسم create_backup.yaml.
cat > create_backup.yaml <<EOF Backup: metadata: name: on-demand-backup spec: backupPlanRef: pgb-plan dbclusterRef: $CLUSTER EOF - نفِّذ دليل التشغيل لبدء عملية الاحتفاظ بنسخة احتياطية:
ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=create_backup.yaml - للتحقّق من حالة النسخة الاحتياطية، أنشئ ملف status.yaml:
cat > status.yaml <<EOF
- name: Fetch AlloyDB Omni Resource Status
hosts: localhost
roles:
- role: google.alloydbomni_orchestrator.status
EOF
- نفِّذ دليل التشغيل لسرد جميع النُسخ الاحتياطية:
ansible-playbook status.yaml -i deployment_spec.yaml -e resource_type=Backup
- بدلاً من ذلك، للحصول على معلومات تفصيلية عن نسخة احتياطية معيّنة تم إنشاؤها سابقًا، مرِّر
-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. تنظيف الموارد
عند الانتهاء من عملية النشر، يمكنك إتلاف الموارد المتوفّرة لتجنُّب تحمّل أي رسوم.
- أنشئ دليلًا إرشاديًا باسم teardown.yaml:
cat > teardown.yaml <<EOF - name: Tear down AlloyDB Omni cluster hosts: localhost roles: - role: google.alloydbomni_orchestrator.delete EOF - نفِّذ الدليل الإرشادي باستخدام ansible-playbook. إذا كنت قد أعددت النُسخ الاحتياطية، احذف أولاً موارد Backup وBackupPlan:
إذا كنت قد أعددت PgBouncer، احذف مورد مجمّع الاتصالات بعد ذلك: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" بعد ذلك، حدِّد DBCluster كـ resource_type واحذف مجموعة قواعد البيانات نفسها:ansible-playbook teardown.yaml -i deployment_spec.yaml -e "resource_type=PgBouncer" -e "resource_name=pgbouncer-pooler"ansible-playbook teardown.yaml -i deployment_spec.yaml -e "resource_type=DBCluster" -e "resource_name=$CLUSTER" - بعد حذف المجموعة، سجِّل الخروج من عقدة التحكّم، وعُد إلى نافذة الأوامر وانتقِل إلى دليل عمل Terraform.
ملاحظة: إذا سجّلت الدخول حديثًا إلى Cloud Shell، تذكَّر ضبط ما يلي:export PROJECT="your-project-id" export CLUSTER="your-cluster-name" - احذف قاعدة جدار الحماية 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 - أكِّد عملية التدمير عندما يُطلب منك ذلك. بما أنّ موارد الشبكة أو مساراتها المتبقية قد تمنع أحيانًا إيقاف التشغيل الكامل، نفِّذ أوامر التنظيف الآمنة التالية لضمان إزالة جميع قواعد جدار الحماية وبوابات 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 في المستندات.