كيفية بناء Infura الخاص بك على AWS باستخدام إطار عمل بدون خادم

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

عيوب وجود عقدة واحدة فقط

ومع ذلك ، في كثير من الحالات ، لا تعد العقدة الواحدة كافية. يمكنني التفكير في العديد من الأسباب التي قد تحتاج إلى أكثر من عقدة واحدة.

  1. التوقف. إذا كان لا بد من إزالة العقدة لأي سبب من الأسباب للصيانة ، فلن يتبقى عقدة. ستكون هناك فترة توقف عند الحاجة على سبيل المثال إلى ترقية إصدار من Parity.
  2. الوقوع في المزامنة. التكافؤ كبير ولكن لا تشوبه شائبة. قد تقع في بعض الأحيان خارج المزامنة لأسباب مختلفة. يتيح لنا وجود عقد متعددة إعادة توجيه حركة المرور مؤقتًا من العقد التي تراجعت والاستعلام عن العقد المتزامنة.
  3. توزيع الحمولة. لا يوجد سوى مستوى معين من الطلبات / الثانية على json-rpc يمكن أن تحافظ عليه عقدة Parity واحدة. تصبح واجهة Json-rpc بطيئة على هذا المستوى ولا تقع عقدة Parity خارج المزامنة. هذا مهم بشكل خاص إذا تم استخدام العقدة (العقدة) من واجهة dapp على الويب ورقمها ، ويمكنك ملاحظة الطفرات اليومية في مشاركة المستخدم.

البنية التحتية ل jsonrpc الوكيل

صورة كبيرة لما يفعله الوكيل كما يلي:

  1. يجب أن تبقى قائمة URL خارج العقدة Parity في DynamoDB. هناك أيضًا عنوان URL خاص يسمى زعيم يشير إلى Infura.
  2. يجب تشغيل eth_getBlockNumber على كل عقد من القائمة كل 60 ثانية. تتم مقارنة النتيجة مع القائد. ولكي تُعتبر العقدة صحية ، يجب أن تستجيب ولا تزيد عن 10 كتل خلف Infura. يتم حفظ الحالة الصحية لكل عقدة في DynamoDB.
  3. يؤدي تغيير الحالة الصحية لأي عقدة إلى تنشيط تكوين الخادم الوكيل. Proxy config هو ببساطة ملف .conf nginx يقوم بتكوين خدمة upstream والتي يتم تحميل موازين التحميل بين عقدنا. إذا لم يكن أي من العقد سليمًا ، فسيقوم التكوين الذي تم إنشاؤه بإرسال جميع الطلبات إلى Infura asa backback. يتم تحميل ملف التكوين إلى S3 bucket.
  4. يؤدي تحميل ملف التكوين إلى S3 bucket إلى تحديث خدمة ECS التي تقوم بتشغيل حاوية nginx مع التكوين الذي تم إنشاؤه.

مراقبة العقد

الجانب العلوي من استخدام خدمات AWS هو أنها تأتي مع مقاييس افتراضية خارج الصندوق

طلبات في الثانية الواحدة

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

التأخير إلى Infura

كما يعمل مكدس jsonrpc-proxy على دفع المقاييس الخاصة به والتي تظهر الفرق بين كل رقم كتلة عقدة و Infura.

عدد العقد الصحية

يظهر متري مخصص آخر عدد العقد صحية.

هذا المقياس مفيد جدًا في إعداد المنبه CloudWatch.

نشر وكيل jsonrpc الخاص بك

يمكن العثور على رمز حلنا في مستودع git.

بناء حاوية ECR مع إنجن إكس

تعمل خدمتنا على تشغيل حاوية nginx على نظام ECS الذي يجلب التكوين من دلو S3. يجب أن تكون صورة هذه الخدمة متاحة على بعض حسابات AWS كـ jsonrpc-proxy. يمكنك إنشاء وتحميل الصور باستخدام الأوامر التالية:

عامل ميناء cd
$ AWS_DEFAULT_PROFILE = اسم ملف تعريفك bash -x build_and_upload.sh

سيؤدي ذلك إلى إنشاء مستودع ECR ، وبناء الصورة ودفعها. في النتيجة ، سترى ARN لمستودع ECR الذي تم إنشاؤه والذي تحتاج إلى وضعه في ملف config في الخطوة التالية.

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

إنشاء ملف التكوين

تتم المكدس بحيث يعيد استخدام الموارد الخارجية التي يجب تمريرها كمعلمة في ملف التكوين. يمكنك البدء بإنشاء ملف التكوين الخاص بك من القالب المقدم:

خدمات مؤتمر نزع السلاح
$ cp config.yml.sample config.dev.yml # يفترض هذا "dev" كاسم مرحلة لاستخدامه لاحقًا

تحرير الملف وتحديد الداخل:

  • VPC تقوم بتشغيلها ومعرفات الشبكة الفرعية الخاصة بالشبكات الفرعية الخاصة
  • قائمة مجموعات الأمان التي تسمح بالوصول إلى جميع عقد التماثل
  • ECS الكتلة والتطبيق موازن الحمل. ينشئ المكدس لا كتلة خاصة به ولا موازن التحميل ، لأنك عادة لن ترغب في الدفع مقابل الموارد المخصصة فقط لتشغيل nginx بالداخل. يرجى ملاحظة: من الضروري أن تضاف مجموعة ECS إلى مجموعات الأمان مما يتيح لها الوصول إلى عقد التماثل
  • تم إنشاء ERC Image ARN في الخطوة السابقة

نشر المكدس

سوف تحتاج إلى تثبيت serverless على جهازك.

npm تثبيت -G serverless

من تحتاج إلى تثبيت تبعيات المكدس:

خدمات مؤتمر نزع السلاح
تثبيت npm

بمجرد الانتهاء من ذلك ، يمكنك نشر مكدس على حساب AWS الخاص بك:

$ AWS_DEFAULT_PROFILE = yourProfileName sls publish -s dev

أخيرًا تحتاج إلى تكوين DNS الخاص بك للإشارة إلى الاسم المستخدم بواسطة المكدس إلى "موازن تحميل التطبيق".

إضافة العقد لرصد

الخطوة التالية هي أن تخبر الوكيل فعليًا عن العقد التي يجب مراقبتها:

إذا كان كل شيء يسير على ما يرام في دقيقة واحدة ، يجب أن تكون قادرًا على رؤية أن المراقبة تبدأ وأن العقد أصبحت الآن صحية: