البرنامج التعليمي: محاكاة فشل في قراءة البيانات من المنطقة الأساسية

يعد هذا البرنامج التعليمي الجزء الثاني من سلسلة. وفيه ستتعرف على ميزات إمكانية قراءة الوصول إلى القراءة عبر وحدات التخزين الاحتياطية في المناطق الجغرافية (RA-GZRS) من خلال محاكاة الفشل.

لمحاكاة فشل، يمكنك استخدام إما توجيه ثابت أو Fiddler. وستتيح لك كلتا الطريقتين محاكاة فشل الطلبات إلى نقطة النهاية الرئيسية لحساب وحدة التخزين RA-GZRS، مما يؤدي إلى قراءة التطبيق من نقطة النهاية الثانوية بدلًا من ذلك.

إذا لم يكن لديك اشتراك في Azure، فأنشئ free account قبل البدء.

في الجزء الثاني من السلسلة، تتعلم كيفية:

  • تشغيل التطبيق وإيقافه مؤقتًا
  • محاكاة فشل باستخدام مسار ثابت غير صالح أو Fiddler
  • محاكاة استعادة نقطة النهاية الأساسية

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

قبل أن تبدأ هذا الدرس، أكمل الدرس السابق: اجعل بيانات تطبيقك عالية التوفر مع وحدة تخزين Azure .

لمحاكاة فشل مع توجيه ثابت، ستستخدم موجه أوامر مرتفعة.

لمحاكاة فشل باستخدام Fiddler، بادر بتنزيل وتثبيت Fiddler

محاكاة فشل مع توجيه ثابت غير صالح

يمكنك إنشاء مسار ثابت غير صحيح لكافة الطلبات إلى نقطة النهاية الأساسية لحساب التخزين (RA-GZRS). في هذا البرنامج التعليمي، يتم استخدام المضيف المحلي كبوابة لتوجيه الطلبات إلى حساب التخزين. يؤدي استخدام المضيف المحلي كبوابة إلى تكرار كافة الطلبات إلى نقطة النهاية الرئيسية لحساب التخزين داخل المضيف، ما يؤدي إلى فشل الطلب. اتبع الخطوات التالية لمحاكاة فشل واستعادة نقطة النهاية الأساسية مع توجيه ثابت غير صالح.

بدء التطبيق وإيقافه مؤقتًا

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

محاكاة الفشل

في أثناء إيقاف التطبيق مؤقتًا، افتح موجه الأوامر على Windows كمسؤول أو قم بتشغيل المحطة الطرفية كـ root على Linux.

الحصول على معلومات حول مجال نقطة النهاية الأساسية لحساب التخزين عن طريق إدخال الأمر التالي على موجه الأوامر أو المحطة الطرفية، STORAGEACCOUNTNAME واستبدالها باسم حساب التخزين الخاص بك.

nslookup STORAGEACCOUNTNAME.blob.core.windows.net

نسخ إلى عنوان IP لحساب التخزين الخاص بك إلى محرر نص لاستخدامها لاحقًا.

للحصول على عنوان IP للمضيف المحلي، اكتب ipconfig على موجه الأوامر Windows، أو ifconfig على المحطة الطرفية Linux.

لإضافة توجيه ثابت للمضيف الوجهة اكتب الأمر التالي على موجه أوامر Windows أو محطة Linux الطرفية، استبدال <destination_ip> عنوان IP حساب التخزين الخاص بك <gateway_ip>بعنوان IP المضيف المحلي.

Linux

sudo route add <destination_ip> gw <gateway_ip>

Windows

route add <destination_ip> <gateway_ip>

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

محاكاة استعادة نقطة النهاية الأساسية

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

Linux

sudo route del <destination_ip> gw <gateway_ip>

Windows

route delete <destination_ip>

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

محاكاة فشل باستخدام Fiddler

لمحاكاة الفشل باستخدام Fiddler، يمكنك حقن استجابة فاشلة للطلبات إلى نقطة النهاية الأساسية لحساب تخزين RA-GZRS.

المقاطع التالية تصور كيفية محاكاة فشل واستعادة نقطة النهاية الأساسية باستخدام fiddler.

إطلاق fiddler

فتح Fiddler، حدد قواعد و تخصيص أدوار.

تخصيص قواعد Fiddler

يشغل برنامج Fiddler ScriptEditor الملف SampleRules.js وعرضه. يستخدم هذا الملف لتخصيص Fiddler.

لصق نموذج التعليمات البرمجية التالية في الدالة OnBeforeResponse واستبدل STORAGEACCOUNTNAME باسم حساب التخزين الخاص بك. اعتمادًا على العينة، قد تحتاج أيضًا إلى استبدال HelloWorld باسم ملف الاختبار الذي يتم تنزيله، أو إزالة هذا الجزء من الشرط إذا لم يتم تطبيقه. يتم التعليق على التعليمات البرمجية الجديدة لضمان عدم تشغيلها على الفور.

بمجرد الانتهاء، حدد ملف و حفظ لحفظ التغييرات. اترك نافذة ScriptEditor مفتوحًا للاستخدام في الخطوات التالية.

    /*
        // Simulate data center failure
        // After it is successfully downloading the blob, pause the code in the sample,
        // uncomment these lines of script, and save the script.
        // It will intercept the (probably successful) responses and send back a 503 error.
        // When you're ready to stop sending back errors, comment these lines of script out again
        //     and save the changes.

        if ((oSession.hostname == "STORAGEACCOUNTNAME.blob.core.windows.net")
            // depending on the sample, you may need to modify or remove the line below
            && (oSession.PathAndQuery.Contains("HelloWorld"))) {
            oSession.responseCode = 503;
        }
    */

لصق قاعدة مخصصة

بدء التطبيق وإيقافه مؤقتًا

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

محاكاة الفشل

أثناء إيقاف التطبيق مؤقتاً، بادر بالتبديل مرةً أخرى إلى Fiddler ثم الغِ القاعدة المخصصة التي حفظتها في الدالة OnBeforeResponse. تأكد من تحديد FileSave لحفظ التغييرات الخاصة بك حتى تصبح القاعدة سوف سارية المفعول. يبحث هذا الرمز عن طلبات إلى حساب تخزين RA-GZRS و, إذا كان المسار يحتوي على اسم ملف العينة يقوم بإرجاع رمز استجابة من 503 - Service Unavailable.

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

محاكاة استعادة نقطة النهاية الأساسية

في Fiddler، قم بإزالة القاعدة المخصصة أو التعليق عليها مرة أخرى. حدد File و Save للتأكد من أن القاعدة لن تكون سارية المفعول بعد الآن.

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

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

في الجزء الثاني من السلسلة، تعلمت عن محاكاة فشل في اختبار الوصول إلى وحدة التخزين الاحتياطية الجغرافية.

لمعرفة المزيد حول كيفية عمل تخزين RA-GZRS والمخاطر المرتبطة به، راجع تصميم تطبيقات HA باستخدام RA-GZRS.