كيفية تنفيذ الاسترداد بعد الكوارث باستخدام خدمة النسخ الاحتياطي والاستعادة في Azure API Management

ينطبق على: المطور | أساسي | قياسي | قسط

من خلال نشر وإدارة واجهات برمجة التطبيقات عبر إدارة Azure API، فأنت تستفيد من التسامح مع الأخطاء وإمكانيات البنية الأساسية التي قد تصممها وتنفذها وتديرها يدويًا. تخفف منصة Azure جزءًا كبيرًا من حالات الفشل المحتملة بجزء بسيط من التكلفة.

للتعافي من مشكلات التوفر التي تؤثر على خدمة APIM، كن مستعدًا لإعادة تكوين خدمتك في منطقة أخرى في أي وقت. اعتمادًا على هدف وقت الاسترداد، قد ترغب في الاحتفاظ بخدمة الاستعداد في منطقة واحدة أو أكثر. يمكنك أيضًا محاولة الحفاظ على تزامن التكوين والمحتوى مع الخدمة النشطة وفقًا لهدف نقطة الاسترداد. توفر إمكانات النسخ الاحتياطي والاستعادة لـ APIM اللبنات الأساسية اللازمة لتنفيذ استراتيجية الإصلاح بعد كارثة.

يمكن أيضًا استخدام عمليات النسخ الاحتياطي والاستعادة لتكرار تكوين خدمة إدارة واجهة برمجة التطبيقات بين بيئات التشغيل، على سبيل المثال، التطوير والتشغيل المرحلي. احذر من أن بيانات وقت التشغيل مثل المستخدمين والاشتراكات سيتم نسخها أيضًا، وهو ما قد لا يكون دائمًا مرغوبًا فيه.

تشرح هذه المقالة كيفية أتمتة عمليات النسخ الاحتياطي والاستعادة لمثيل APIM باستخدام حساب تخزين خارجي. تستخدم الخطوات الموضحة هنا إما أوامر Backup-AzApiManagement و Restore-AzApiManagement Azure PowerShell cmdlets، أو خدمة APIM - خدمة إدارة النسخ الاحتياطي و Api - استعادة واجهات برمجة تطبيقات REST.

تحذير

تنتهي صلاحية كل نسخة احتياطية بعد 30 يومًا. إذا حاولت استعادة نسخة احتياطية بعد انتهاء صلاحية فترة 30 يومًا، فستفشل عملية الاستعادة برسالة Cannot restore: backup expired.

هام

لا تؤدي عملية الاستعادة إلى تغيير تكوين اسم المضيف المخصص للخدمة الهدف. نوصي باستخدام نفس اسم المضيف المخصص وشهادة TLS لكل من الخدمات النشطة والاحتياطية، بحيث بعد اكتمال عملية الاستعادة، يمكن إعادة توجيه نسبة استخدام الشبكة إلى مثيل الاستعداد عن طريق تغيير DNS CNAME بسيط.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

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

  • مثيل خدمة APIM. إذا لم يكن لديك واحد، فراجع إنشاء مثيل خدمة APIM.

  • حساب تخزين Azure. إذا لم يكن لديك حساب، فراجع إنشاء حساب تخزين.

  • أحدث إصدار من Azure PowerShell، إذا كنت تخطط لاستخدام أوامر cmdlets لـ Azure PowerShell. إذا لم تقم بتُثبيته بالفعل، ثبّت Azure PowerShell.

تكوين الوصول إلى حساب التخزين

عند تشغيل عملية النسخ احتياطي أو الاستعادة، تحتاج إلى تكوين الوصول إلى حساب التخزين. تدعم APIM آليتين للوصول إلى التخزين: مفتاح الوصول إلى تخزين Azure، أو هوية مُدارة لـ APIM.

تكوين مفتاح الوصول إلى حساب التخزين

ينشئ Azure مفتاحي وصول إلى حساب التخزين بسعة 512 بت لكل حساب تخزين. يمكن استخدام هذه المفاتيح للسماح بالوصول إلى البيانات في حساب التخزين خاصتك من خلال تفويض المفتاح المشترك. ولعرض المفاتيح واستردادها وإدارتها، راجع إدارة مفاتيح الوصول إلى حساب التخزين.

تكوين الهوية المدارة لإدارة API

إشعار

يتم دعم استخدام هوية مُدارة لـ APIM لعمليات التخزين أثناء النسخ الاحتياطي والاستعادة في إصدار API Management REST API أو 2021-04-01-preview إصدار أحدث.

  1. قم بتمكين الهوية المُدارة المعينة من قبل النظام أو من قبل المستخدم لإدارة واجهة برمجة التطبيقات في مثيل إدارة واجهة برمجة التطبيقات.

    • إذا قمت بتمكين هوية مُدارة يعينها المستخدم، فقم بتدوين معرف العميل للهوية.
    • إذا كنت ستقوم بالنسخ الاحتياطي والاستعادة إلى مثيلات إدارة واجهة برمجة التطبيقات المختلفة، فقم بتمكين هوية مُدارة في كل من المثيلات المصدر والهدف.
  2. قم بتعيين هوية دور Storage Blob Data Contributor، التي تم تحديد نطاقها لحساب التخزين المستخدم للنسخ الاحتياطي والاستعادة. لتعيين الدور، استخدم مدخل Microsoft Azure أو أدوات Azure الأخرى.

النسخ الاحتياطي لخدمة APIM

سجّل الدخول باستخدام Azure PowerShell.

في الأمثلة التالية:

  • يوجد مثيل APIM المسمى myapim في مجموعة الموارد التي بعنوان apimresourcegroup.
  • يوجد حساب تخزين يسمى backupstorageaccount في مجموعة الموارد التي بعنوان storageresourcegroup. يحتوي حساب التخزين على حاوية تسمى ملفات النسخ الاحتياطية.
  • سيُنشأ كائن ثنائي كبير الحجم للنسخ الاحتياطي باسم ContosoBackup.apimbackup.

تعيين المتغيرات في PowerShell:

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

الوصول باستخدام مفتاح الوصول إلى التخزين

$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName -TargetBlobName $blobName

الوصول باستخدام الهوية المدارة

لتكوين هوية مُدارة في مثيل APIM للوصول إلى حساب التخزين، راجع تكوين هوية مُدارة، سابقًا في هذه المقالة.

الوصول باستخدام الهوية المدارة المعينة من قبل النظام

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName `
    -TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

الوصول باستخدام الهوية المدارة المعينة من قبل المستخدم

في هذا المثال، الهوية المدارة المعينة من قبل المستخدم المسماة myidentity موجودة في مجموعة الموارد التي بعنوان identityresourcegroup.

$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";

$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName `
    -TargetBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid

النسخ الاحتياطي عملية طويلة الأمد قد تستغرق عدة دقائق حتى تكتمل. خلال هذا الوقت تستمر بوابة API في معالجة الطلبات، ولكن حالة الخدمة هي التحديث.

استعادة خدمة APIM

تنبيه

تجنب إجراء تغييرات على تكوين الخدمة (على سبيل المثال، واجهات برمجة التطبيقات والسياسات ومظهر بوابة المطور) أثناء إجراء عملية الاستعادة. يمكن الكتابة فوق التغييرات.

في الأمثلة التالية،

  • تتم استعادة مثيل APIM المسمى myapim من كائن ثنائي كبير الحجم للنسخ الاحتياطي المسمى ContosoBackup.apimbackup في حساب التخزين الذي بعنوان backupstorageaccount.
  • يوجد كائن تخزين البيانات الثنائية الكبيرة للنسخ الاحتياطي في حاوية باسم النسخ الاحتياطية.

تعيين المتغيرات في PowerShell:

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

الوصول باستخدام مفتاح الوصول إلى التخزين

$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName -SourceBlobName $blobName

الوصول باستخدام الهوية المدارة

لتكوين هوية مُدارة في مثيل APIM للوصول إلى حساب التخزين، راجع تكوين هوية مُدارة، سابقًا في هذه المقالة.

الوصول باستخدام الهوية المدارة المعينة من قبل النظام

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName `
    -SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

الوصول باستخدام الهوية المدارة المعينة من قبل المستخدم

في هذا المثال، الهوية المدارة المعينة من قبل المستخدم المسماة myidentity موجودة في مجموعة الموارد التي بعنوان identityresourcegroup.

$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";

$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName `
    -SourceBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid

تستغرق عملية الاستعادة وقتًا طويلاً، وقد تستغرق ما يصل إلى 45 دقيقة أو أكثر حتى تكتمل.

القيود

  • استعادة النسخة الاحتياطية مضمونة لمدة 30 يومًا فقط منذ لحظة إنشائها.
  • أثناء إجراء النسخ الاحتياطي، تجنب التغييرات الإدارية في الخدمة مثل تسعير ترقية الطبقة أو الرجوع إلى إصدار أقدم، وتغيير اسم المجال، والمزيد.
  • التغييرات التي تم إجراؤها على تكوين الخدمة (على سبيل المثال، واجهات برمجة التطبيقات والسياسات ومظهر مدخل المطور) أثناء عملية النسخ الاحتياطي قد يتم استبعادها من النسخة الاحتياطية وسيتم فقدها.
  • لا يلتقط النسخ الاحتياطي بيانات السجل المجمعة مسبقًا والمستخدمة في التقارير المعروضة في نافذة التحليلات في مدخل Microsoft Azure.
  • يجب عدم تمكين مشاركة الموارد عبر الأصل (CORS) على خدمة Blob في حساب التخزين.
  • يجب أن يتطابق SKU الخاص بالخدمة التي تتم استعادتها إليه مع SKU الخاص بالخدمة الاحتياطية التي يجري استعادتها.

قيود شبكة التخزين

إذا تم تمكين جدار الحماية لحساب التخزين، فمن المستحسن استخدام الهوية المدارة المعينة من قبل النظام لمثيل APIM للوصول إلى الحساب. تأكد من أن حساب التخزين يمنح الوصول إلى خدمات Azure الموثوق بها.

ما لم يتم نسخه احتياطيًا

يؤثر تكرار إجراء النسخ الاحتياطية للخدمة على هدف نقطة الاستعادة. لتقليلها إلى الحد الأدنى، نوصي بتنفيذ نسخ احتياطية منتظمة وإجراء نسخ احتياطية عند الطلب بعد إجراء تغييرات على خدمة إدارة واجهة برمجة التطبيقات الخاصة بك.

الخطوات التالية

تحقق من الموارد التالية ذات الصلة لعملية النسخ الاحتياطي/الاستعادة: