إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذه المقالة، يمكنك تنفيذ خطوات مختلفة للاختبار والتحقق من الصحة على قاعدة بيانات PostgreSQL المنشورة على AKS. يتضمن ذلك التحقق من التوزيع والاتصال بقاعدة البيانات واختبار سيناريوهات تجاوز الفشل.
- إذا لم تكن قد نشرت PostgreSQL بالفعل، فاتبع الخطوات الواردة في نشر قاعدة بيانات PostgreSQL عالية التوفر على AKS باستخدام Azure CLI للحصول على الإعداد، ومن ثم يمكنك العودة إلى هذه المقالة.
هام
يتم ذكر البرامج مفتوحة المصدر في جميع وثائق وعينات AKS. يتم استبعاد البرامج التي تنشرها من اتفاقيات مستوى خدمة AKS والضمان المحدود ودعم Azure. أثناء استخدامك للتكنولوجيا مفتوحة المصدر جنبا إلى جنب مع AKS، راجع خيارات الدعم المتوفرة من المجتمعات المحلية المعنية ومشرفي المشاريع لوضع خطة.
تتحمل Microsoft مسؤولية بناء الحزم مفتوحة المصدر التي ننشرها على AKS. تتضمن هذه المسؤولية امتلاك ملكية كاملة لعملية البناء والمسح الضوئي والتوقيع والتحقق من الصحة وإصلاحها، بالإضافة إلى التحكم في الثنائيات في صور الحاوية. لمزيد من المعلومات، راجع إدارة الثغرات الأمنية لتغطية دعم AKS وAKS.
فحص مجموعة PostgreSQL المنشورة
تحقق من انتشار PostgreSQL عبر مناطق توفر متعددة عن طريق استرداد تفاصيل عقدة AKS باستخدام kubectl get الأمر .
kubectl get nodes \
--context $AKS_PRIMARY_CLUSTER_NAME \
--namespace $PG_NAMESPACE \
--output json | jq '.items[] | {node: .metadata.name, zone: .metadata.labels."failure-domain.beta.kubernetes.io/zone"}'
يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي مع منطقة التوفر الموضحة لكل عقدة:
{
"node": "aks-postgres-15810965-vmss000000",
"zone": "westus3-1"
}
{
"node": "aks-postgres-15810965-vmss000001",
"zone": "westus3-2"
}
{
"node": "aks-postgres-15810965-vmss000002",
"zone": "westus3-3"
}
{
"node": "aks-systempool-26112968-vmss000000",
"zone": "westus3-1"
}
{
"node": "aks-systempool-26112968-vmss000001",
"zone": "westus3-2"
}
الاتصال ب PostgreSQL وإنشاء عينة مجموعة بيانات
في هذا القسم، يمكنك إنشاء جدول وإدراج بعض البيانات في قاعدة بيانات التطبيق التي تم إنشاؤها في CNPG Cluster CRD الذي قمت بنشره سابقا. يمكنك استخدام هذه البيانات للتحقق من صحة عمليات النسخ الاحتياطي والاستعادة لنظام مجموعة PostgreSQL.
إنشاء جدول وإدراج البيانات في قاعدة بيانات التطبيق باستخدام الأوامر التالية:
kubectl cnpg psql $PG_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACE-- Create a small dataset CREATE TABLE datasample (id INTEGER, name VARCHAR(255)); INSERT INTO datasample (id, name) VALUES (1, 'John'); INSERT INTO datasample (id, name) VALUES (2, 'Jane'); INSERT INTO datasample (id, name) VALUES (3, 'Alice'); SELECT COUNT(*) FROM datasample;اكتب
\qللخروج من psql عند الانتهاء.يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
CREATE TABLE INSERT 0 1 INSERT 0 1 INSERT 0 1 count ------- 3 (1 row)
الاتصال بنسخ PostgreSQL المتماثلة للقراءة فقط
اتصل بالنسخ المتماثلة للقراءة فقط PostgreSQL وتحقق من صحة مجموعة بيانات العينة باستخدام الأوامر التالية:
kubectl cnpg psql --replica $PG_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACESELECT pg_is_in_recovery();مثال على الإخراج
pg_is_in_recovery ------------------- t (1 row)SELECT COUNT(*) FROM datasample;مثال على الإخراج
count ------- 3 (1 row)
إعداد النسخ الاحتياطية ل PostgreSQL عند الطلب والمجدولة باستخدام Barman
ملاحظة
من المتوقع أن تقوم CloudNativePG بإهمال دعم Barman Cloud الأصلي لصالح المكون الإضافي Barman Cloud في الإصدار 1.29 القادم. تستمر الخطوات الواردة في هذا الدليل في العمل اليوم ، ولكن خطط للترحيل إلى المكون الإضافي بمجرد استقراره.
تحقق من أن نظام مجموعة PostgreSQL يمكنه الوصول إلى حساب تخزين Azure المحدد في CNPG Cluster CRD وأن
Working WAL archivingيبلغ عن استخدامOKالأمر التالي:kubectl cnpg status $PG_PRIMARY_CLUSTER_NAME 1 \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACEمثال على الإخراج
Continuous Backup status First Point of Recoverability: Not Available Working WAL archiving: OK WALs waiting to be archived: 0 Last Archived WAL: 00000001000000000000000A @ 2024-07-09T17:18:13.982859Z Last Failed WAL: -نشر نسخة احتياطية عند الطلب إلى Azure Storage، والذي يستخدم تكامل هوية حمل عمل AKS، باستخدام ملف YAML مع
kubectl applyالأمر .export BACKUP_ONDEMAND_NAME="on-demand-backup-1" cat <<EOF | kubectl apply --context $AKS_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACE -v 9 -f - apiVersion: postgresql.cnpg.io/v1 kind: Backup metadata: name: $BACKUP_ONDEMAND_NAME spec: method: barmanObjectStore cluster: name: $PG_PRIMARY_CLUSTER_NAME EOFتحقق من حالة النسخ الاحتياطي عند الطلب باستخدام
kubectl describeالأمر .kubectl describe backup $BACKUP_ONDEMAND_NAME \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACEمثال على الإخراج
Type Reason Age From Message ---- ------ ---- ---- ------- Normal Starting 6s cloudnative-pg-backup Starting backup for cluster pg-primary-cnpg-r8c7unrw Normal Starting 5s instance-manager Backup started Normal Completed 1s instance-manager Backup completedتحقق من أن المجموعة لديها نقطة أولى من قابلية الاسترداد باستخدام الأمر التالي:
kubectl cnpg status $PG_PRIMARY_CLUSTER_NAME 1 \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACEمثال على الإخراج
Continuous Backup status First Point of Recoverability: 2024-06-05T13:47:18Z Working WAL archiving: OKتكوين نسخة احتياطية مجدولة لكل ساعة في 15 دقيقة بعد الساعة باستخدام ملف YAML مع
kubectl applyالأمر .export BACKUP_SCHEDULED_NAME="scheduled-backup-1" cat <<EOF | kubectl apply --context $AKS_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACE -v 9 -f - apiVersion: postgresql.cnpg.io/v1 kind: ScheduledBackup metadata: name: $BACKUP_SCHEDULED_NAME spec: # Backup once per hour schedule: "0 15 * ? * *" backupOwnerReference: self cluster: name: $PG_PRIMARY_CLUSTER_NAME EOFتحقق من حالة النسخ الاحتياطي المجدول باستخدام
kubectl describeالأمر .kubectl describe scheduledbackup $BACKUP_SCHEDULED_NAME \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACEعرض ملفات النسخ الاحتياطي المخزنة على تخزين Azure blob للمجموعة الأساسية باستخدام
az storage blob listالأمر .az storage blob list \ --account-name $PG_PRIMARY_STORAGE_ACCOUNT_NAME \ --container-name backups \ --query "[*].name" \ --only-show-errorsيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي، والتحقق من صحة النسخ الاحتياطي كان ناجحا:
[ "pg-primary-cnpg-r8c7unrw/base/20240605T134715/backup.info", "pg-primary-cnpg-r8c7unrw/base/20240605T134715/data.tar", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000001", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000002", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000003", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000003.00000028.backup", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000004", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000005", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000005.00000028.backup", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000006", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000007", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000008", "pg-primary-cnpg-r8c7unrw/wals/0000000100000000/000000010000000000000009" ]
استعادة النسخ الاحتياطي عند الطلب إلى نظام مجموعة PostgreSQL جديد
في هذا القسم، يمكنك استعادة النسخ الاحتياطي عند الطلب الذي قمت بإنشائه مسبقا باستخدام عامل تشغيل CNPG في مثيل جديد باستخدام bootstrap Cluster CRD. يتم استخدام نظام مجموعة مثيل واحد للتبسيط. تذكر أن هوية حمل عمل AKS (عبر CNPG inheritFromAzureAD) تصل إلى ملفات النسخ الاحتياطي، وأن اسم مجموعة الاسترداد يستخدم لإنشاء حساب خدمة Kubernetes جديد خاص بمجموعة الاسترداد.
يمكنك أيضا إنشاء بيانات اعتماد موحدة ثانية لتعيين حساب خدمة نظام مجموعة الاسترداد الجديد إلى UAMI الموجود الذي لديه حق الوصول "Storage Blob Data Contributor" إلى ملفات النسخ الاحتياطي على تخزين blob.
إنشاء بيانات اعتماد هوية موحدة ثانية باستخدام
az identity federated-credential createالأمر .export PG_PRIMARY_CLUSTER_NAME_RECOVERED="$PG_PRIMARY_CLUSTER_NAME-recovered-db" az identity federated-credential create \ --name $PG_PRIMARY_CLUSTER_NAME_RECOVERED \ --identity-name $AKS_UAMI_CLUSTER_IDENTITY_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --issuer "${AKS_PRIMARY_CLUSTER_OIDC_ISSUER}" \ --subject system:serviceaccount:"${PG_NAMESPACE}":"${PG_PRIMARY_CLUSTER_NAME_RECOVERED}" \ --audience api://AzureADTokenExchangeاستعادة النسخ الاحتياطي عند الطلب باستخدام Cluster CRD مع
kubectl applyالأمر .cat <<EOF | kubectl apply --context $AKS_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACE -v 9 -f - apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: $PG_PRIMARY_CLUSTER_NAME_RECOVERED spec: inheritedMetadata: annotations: service.beta.kubernetes.io/azure-dns-label-name: $AKS_PRIMARY_CLUSTER_PG_DNSPREFIX labels: azure.workload.identity/use: "true" instances: 1 affinity: nodeSelector: workload: postgres # Point to cluster backup created earlier and stored on Azure Blob Storage bootstrap: recovery: source: clusterBackup storage: size: 2Gi pvcTemplate: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi storageClassName: managed-csi-premium volumeMode: Filesystem walStorage: size: 2Gi pvcTemplate: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi storageClassName: managed-csi-premium volumeMode: Filesystem serviceAccountTemplate: metadata: annotations: azure.workload.identity/client-id: "$AKS_UAMI_WORKLOAD_CLIENTID" labels: azure.workload.identity/use: "true" externalClusters: - name: clusterBackup barmanObjectStore: destinationPath: https://${PG_PRIMARY_STORAGE_ACCOUNT_NAME}.blob.core.windows.net/backups serverName: $PG_PRIMARY_CLUSTER_NAME azureCredentials: inheritFromAzureAD: true wal: maxParallel: 8 EOFاتصل بالمثيل المسترد، ثم تحقق من وجود مجموعة البيانات التي تم إنشاؤها على نظام المجموعة الأصلي حيث تم أخذ النسخ الاحتياطي الكامل باستخدام الأمر التالي:
kubectl cnpg psql $PG_PRIMARY_CLUSTER_NAME_RECOVERED --namespace $PG_NAMESPACESELECT COUNT(*) FROM datasample;مثال على الإخراج
count ------- 3 (1 row) Type \q to exit psqlاحذف المجموعة المستردة باستخدام الأمر التالي:
kubectl cnpg destroy $PG_PRIMARY_CLUSTER_NAME_RECOVERED 1 \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACEاحذف بيانات اعتماد الهوية الموحدة
az identity federated-credential deleteباستخدام الأمر .az identity federated-credential delete \ --name $PG_PRIMARY_CLUSTER_NAME_RECOVERED \ --identity-name $AKS_UAMI_CLUSTER_IDENTITY_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --yes
كشف نظام مجموعة PostgreSQL باستخدام موازن تحميل عام
في هذا القسم، يمكنك تكوين البنية الأساسية الضرورية لعرض نقاط النهاية للقراءة والكتابة والقراءة فقط ل PostgreSQL بشكل عام مع قيود مصدر IP لعنوان IP العام لمحطة عمل العميل.
يمكنك أيضا استرداد نقاط النهاية التالية من خدمة IP لنظام المجموعة:
-
نقطة نهاية أساسية للقراءة والكتابة تنتهي ب
*-rw. -
من صفر إلى N (اعتمادا على عدد النسخ المتماثلة) نقاط النهاية للقراءة فقط التي تنتهي ب
*-ro. -
نقطة نهاية نسخ متماثل واحدة تنتهي ب
*-r.
احصل على تفاصيل خدمة CLUSTER IP باستخدام
kubectl getالأمر .kubectl get services \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACE \ -l cnpg.io/cluster=$PG_PRIMARY_CLUSTER_NAMEمثال على الإخراج
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE pg-primary-cnpg-sryti1qf-r ClusterIP 10.0.193.27 <none> 5432/TCP 3h57m pg-primary-cnpg-sryti1qf-ro ClusterIP 10.0.237.19 <none> 5432/TCP 3h57m pg-primary-cnpg-sryti1qf-rw ClusterIP 10.0.244.125 <none> 5432/TCP 3h57mملاحظة
هناك ثلاث خدمات:
namespace/cluster-name-roتم تعيينها إلى المنفذ 5433،namespace/cluster-name-rwوتعيينهاnamespace/cluster-name-rإلى المنفذ 5433. من المهم تجنب استخدام نفس المنفذ مثل عقدة القراءة/الكتابة لمجموعة قاعدة بيانات PostgreSQL. إذا كنت تريد أن تصل التطبيقات إلى النسخة المتماثلة للقراءة فقط من مجموعة قاعدة بيانات PostgreSQL، فوجهها إلى المنفذ 5433. عادة ما تستخدم الخدمة النهائية للنسخ الاحتياطية للبيانات ولكن يمكن أن تعمل أيضا كعقدة للقراءة فقط.احصل على تفاصيل الخدمة باستخدام
kubectl getالأمر .export PG_PRIMARY_CLUSTER_RW_SERVICE=$(kubectl get services \ --namespace $PG_NAMESPACE \ --context $AKS_PRIMARY_CLUSTER_NAME \ -l "cnpg.io/cluster" \ --output json | jq -r '.items[] | select(.metadata.name | endswith("-rw")) | .metadata.name') echo $PG_PRIMARY_CLUSTER_RW_SERVICE export PG_PRIMARY_CLUSTER_RO_SERVICE=$(kubectl get services \ --namespace $PG_NAMESPACE \ --context $AKS_PRIMARY_CLUSTER_NAME \ -l "cnpg.io/cluster" \ --output json | jq -r '.items[] | select(.metadata.name | endswith("-ro")) | .metadata.name') echo $PG_PRIMARY_CLUSTER_RO_SERVICEتكوين خدمة موازن التحميل مع ملفات YAML التالية باستخدام
kubectl applyالأمر .cat <<EOF | kubectl apply --context $AKS_PRIMARY_CLUSTER_NAME -f - apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: $AKS_PRIMARY_CLUSTER_NODERG_NAME service.beta.kubernetes.io/azure-pip-name: $AKS_PRIMARY_CLUSTER_PUBLICIP_NAME service.beta.kubernetes.io/azure-dns-label-name: $AKS_PRIMARY_CLUSTER_PG_DNSPREFIX name: cnpg-cluster-load-balancer-rw namespace: "${PG_NAMESPACE}" spec: type: LoadBalancer ports: - protocol: TCP port: 5432 targetPort: 5432 selector: cnpg.io/instanceRole: primary cnpg.io/podRole: instance loadBalancerSourceRanges: - "$MY_PUBLIC_CLIENT_IP/32" EOF cat <<EOF | kubectl apply --context $AKS_PRIMARY_CLUSTER_NAME -f - apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: $AKS_PRIMARY_CLUSTER_NODERG_NAME service.beta.kubernetes.io/azure-pip-name: $AKS_PRIMARY_CLUSTER_PUBLICIP_NAME service.beta.kubernetes.io/azure-dns-label-name: $AKS_PRIMARY_CLUSTER_PG_DNSPREFIX name: cnpg-cluster-load-balancer-ro namespace: "${PG_NAMESPACE}" spec: type: LoadBalancer ports: - protocol: TCP port: 5433 targetPort: 5432 selector: cnpg.io/instanceRole: replica cnpg.io/podRole: instance loadBalancerSourceRanges: - "$MY_PUBLIC_CLIENT_IP/32" EOFاحصل على تفاصيل الخدمة باستخدام
kubectl describeالأمر .kubectl describe service cnpg-cluster-load-balancer-rw \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACE kubectl describe service cnpg-cluster-load-balancer-ro \ --context $AKS_PRIMARY_CLUSTER_NAME \ --namespace $PG_NAMESPACE export AKS_PRIMARY_CLUSTER_ALB_DNSNAME="$(az network public-ip show \ --resource-group $AKS_PRIMARY_CLUSTER_NODERG_NAME \ --name $AKS_PRIMARY_CLUSTER_PUBLICIP_NAME \ --query "dnsSettings.fqdn" --output tsv)" echo $AKS_PRIMARY_CLUSTER_ALB_DNSNAME
التحقق من صحة نقاط نهاية PostgreSQL العامة
في هذا القسم، يمكنك التحقق من إعداد Azure Load Balancer بشكل صحيح باستخدام IP الثابت الذي قمت بإنشائه سابقا وتوجيه الاتصالات إلى النسخ المتماثلة الأساسية للقراءة والكتابة والقراءة فقط واستخدام psql CLI للاتصال بكليهما.
تذكر أن نقطة النهاية الأساسية للقراءة والكتابة تعين إلى منفذ TCP 5432 ونقاط نهاية النسخة المتماثلة للقراءة فقط إلى المنفذ 5433 للسماح باستخدام نفس اسم PostgreSQL DNS للقراء والكتاب.
ملاحظة
تحتاج إلى قيمة كلمة مرور مستخدم التطبيق لمصادقة PostgreSQL الأساسية التي تم إنشاؤها مسبقا وتخزينها في $PG_DATABASE_APPUSER_SECRET متغير البيئة.
تحقق من صحة نقاط نهاية PostgreSQL العامة باستخدام الأوامر التالية
psql:echo "Public endpoint for PostgreSQL cluster: $AKS_PRIMARY_CLUSTER_ALB_DNSNAME" # Query the primary, pg_is_in_recovery = false psql -h $AKS_PRIMARY_CLUSTER_ALB_DNSNAME \ -p 5432 -U app -d appdb -W -c "SELECT pg_is_in_recovery();"مثال على الإخراج
pg_is_in_recovery ------------------- f (1 row)echo "Query a replica, pg_is_in_recovery = true" psql -h $AKS_PRIMARY_CLUSTER_ALB_DNSNAME \ -p 5433 -U app -d appdb -W -c "SELECT pg_is_in_recovery();"مثال على الإخراج
# Example output pg_is_in_recovery ------------------- t (1 row)عند الاتصال بنجاح بنقطة نهاية القراءة والكتابة الأساسية، ترجع
fالدالة PostgreSQL خطأ، مما يشير إلى أن الاتصال الحالي قابل للكتابة.عند الاتصال بنسخة متماثلة، ترجع
tالدالة إلى true، مما يشير إلى أن قاعدة البيانات في الاسترداد والقراءة فقط.
محاكاة تجاوز الفشل غير المخطط له
في هذا القسم، تقوم بتشغيل فشل مفاجئ عن طريق حذف الجراب الذي يقوم بتشغيل الأساسي، والذي يحاكي تعطلا مفاجئا أو فقدان اتصال الشبكة بالعقدة التي تستضيف PostgreSQL الأساسي.
تحقق من حالة مثيلات الجراب قيد التشغيل باستخدام الأمر التالي:
kubectl cnpg status $PG_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACEمثال على الإخراج
Name Current LSN Rep role Status Node --------------------------- ----------- -------- ------- ----------- pg-primary-cnpg-sryti1qf-1 0/9000060 Primary OK aks-postgres-32388626-vmss000000 pg-primary-cnpg-sryti1qf-2 0/9000060 Standby (sync) OK aks-postgres-32388626-vmss000001 pg-primary-cnpg-sryti1qf-3 0/9000060 Standby (sync) OK aks-postgres-32388626-vmss000002احذف الحاوية الأساسية باستخدام
kubectl deleteالأمر .PRIMARY_POD=$(kubectl get pod \ --namespace $PG_NAMESPACE \ --no-headers \ -o custom-columns=":metadata.name" \ -l role=primary) kubectl delete pod $PRIMARY_POD --grace-period=1 --namespace $PG_NAMESPACEتحقق من أن
pg-primary-cnpg-sryti1qf-2مثيل pod هو الآن الأساسي باستخدام الأمر التالي:kubectl cnpg status $PG_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACEمثال على الإخراج
pg-primary-cnpg-sryti1qf-2 0/9000060 Primary OK aks-postgres-32388626-vmss000001 pg-primary-cnpg-sryti1qf-1 0/9000060 Standby (sync) OK aks-postgres-32388626-vmss000000 pg-primary-cnpg-sryti1qf-3 0/9000060 Standby (sync) OK aks-postgres-32388626-vmss000002pg-primary-cnpg-sryti1qf-1إعادة تعيين مثيل الجراب كجهة أساسية باستخدام الأمر التالي:kubectl cnpg promote $PG_PRIMARY_CLUSTER_NAME 1 --namespace $PG_NAMESPACEتحقق من أن مثيلات الجراب قد عادت إلى حالتها الأصلية قبل اختبار تجاوز الفشل غير المخطط له باستخدام الأمر التالي:
kubectl cnpg status $PG_PRIMARY_CLUSTER_NAME --namespace $PG_NAMESPACEمثال على الإخراج
Name Current LSN Rep role Status Node --------------------------- ----------- -------- ------- ----------- pg-primary-cnpg-sryti1qf-1 0/9000060 Primary OK aks-postgres-32388626-vmss000000 pg-primary-cnpg-sryti1qf-2 0/9000060 Standby (sync) OK aks-postgres-32388626-vmss000001 pg-primary-cnpg-sryti1qf-3 0/9000060 Standby (sync) OK aks-postgres-32388626-vmss000002
تنظيف الموارد
بمجرد الانتهاء من مراجعة التوزيع، احذف جميع الموارد التي أنشأتها في هذا الدليل باستخدام
az group deleteالأمر .az group delete --resource-group $RESOURCE_GROUP_NAME --no-wait --yes
الخطوات التالية
في هذا الدليل الإرشادي، تعلمت كيفية:
- استخدم Azure CLI لإنشاء مجموعة AKS متعددة المناطق.
- نشر نظام مجموعة وقاعدة بيانات PostgreSQL عالية التوفر باستخدام عامل تشغيل CNPG.
- إعداد المراقبة ل PostgreSQL باستخدام Prometheus وGrafana.
- نشر عينة مجموعة بيانات إلى قاعدة بيانات PostgreSQL.
- محاكاة مقاطعة نظام المجموعة وتجاوز فشل النسخة المتماثلة PostgreSQL.
- إجراء نسخة احتياطية واستعادة قاعدة بيانات PostgreSQL.
لمعرفة المزيد حول كيفية استخدام AKS لأحمال العمل الخاصة بك، راجع ما هي خدمة Azure Kubernetes (AKS)؟ لمعرفة المزيد حول قاعدة بيانات Azure ل PostgreSQL، راجع ما هي قاعدة بيانات Azure ل PostgreSQL؟
المساهمون
تحتفظ Microsoft بهذه المقالة. كتبه المساهمون التاليون في الأصل:
- كين كيلتي | الوحدة النمطية للنظام الأساسي الموثوق به
- راسل دي بينا | الوحدة النمطية للنظام الأساسي الموثوق به
- أدريان جويان | مهندس عملاء أول
- جيني هايز | مطور محتوى أول
- كارول سميث | مطور محتوى أول
- إيرين شيفر | مطور المحتوى 2
- آدم شريف | مهندس عميل 2
اعتراف
تم تطوير هذه الوثائق بالاشتراك مع EnterpriseDB، المشرفين على مشغل CloudNativePG. نشكر غابرييل بارتوليني على مراجعة المسودات السابقة لهذه الوثيقة وتقديم التحسينات التقنية.