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
- في Google Cloud Console، في صفحة اختيار المشروع، اختَر مشروعًا على السحابة الإلكترونية أو أنشِئ مشروعًا على السحابة الإلكترونية.
- تأكَّد من تفعيل الفوترة لمشروعك على Cloud. كيفية التحقّق من تفعيل الفوترة في مشروع
بدء 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 $(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، وثبِّته.
ملاحظة: تأكَّد من أنّ المتغيّر ORCHESTRATOR_ANSIBLE_COLLECTION_PATH يتضمّن "/" في النهاية.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 - يستخدم المنسّق ملف مواصفات النشر بتنسيق قائمة مستودع 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 - أنشئ رمزًا تجزئة لكلمة المرور واحتفظ به.
encoded_password=$(echo -n "your unique password" | base64) - لإنشاء مجموعة، يجب أن تعرف خدمة 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 - أنشئ ملفًا برمجيًا باسم 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 - تنفيذ دليل التشغيل لإنشاء مجموعة
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 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 - طبِّق الخطة الاحتياطية باستخدام ملف 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:
- 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
- نفِّذ دليل التشغيل لسرد جميع النُسخ الاحتياطية:
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 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 - نفِّذ الدليل الإرشادي باستخدام 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 في المستندات.