كيف تتم استضافة Yandex.Cloud بواسطة Virtual Private Cloud وكيف يساعدنا مستخدمونا في تنفيذ الميزات المفيدة

مرحبًا ، اسمي كوستيا كرامليخ ، وأنا مطور رائد في قسم السحابة الخاصة الافتراضية في Yandex.Cloud. أنا منخرط في شبكة افتراضية ، وكما قد تتوقع ، سأتحدث في هذه المقالة عن جهاز Virtual Private Cloud (VPC) بشكل عام والشبكة الافتراضية بشكل خاص. سوف تتعلم أيضًا لماذا نحن ، مطورو الخدمة ، نقدر تعليقات المستخدمين. لكن أول الأشياء أولاً.



ما هو VPC؟


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

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

كيف تبدو الشبكة الافتراضية من الخارج




بواسطة VPC ، نتفهم في المقام الأول شبكة التراكب وخدمات الشبكة ، مثل VPNaaS و NATaas و LBaas ، وما إلى ذلك ، وكل هذا يعمل على أساس البنية التحتية للشبكة الآمنة من الفشل ، والتي كانت هناك بالفعل مقالة ممتازة هنا حول Habré.

دعونا ننظر إلى الشبكة الافتراضية وجهازها عن كثب.



فكر في مجالين لسهولة الوصول. نحن نقدم شبكة افتراضية - ما نسميه VPC. في الواقع ، إنها تحدد المساحة الفريدة لعناوينك "الرمادية". داخل كل شبكة افتراضية ، يمكنك التحكم تمامًا في مساحة العنوان التي يمكنك تخصيصها لموارد الحوسبة.

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

يوضح الرسم البياني أعلاه حالة نموذجية: جهازي VPC يتقاطعان في مكان ما مع العناوين. كلاهما قد يكون لك على سبيل المثال ، واحد للتطوير ، وآخر للاختبار. قد يكون هناك ببساطة مستخدمين مختلفين - في هذه الحالة ، لا يهم. وهناك جهاز افتراضي واحد عالق في كل VPC.



يضاعف المخطط. يمكنك جعل آلة افتراضية واحدة تلتصق بشبكة فرعية متعددة مرة واحدة. وليس هذا فقط ، ولكن في شبكات افتراضية مختلفة.



في الوقت نفسه ، إذا كنت بحاجة إلى وضع السيارات على الإنترنت ، فيمكن القيام بذلك من خلال واجهة برمجة التطبيقات أو واجهة المستخدم. للقيام بذلك ، تحتاج إلى تكوين ترجمة NAT للعنوان الداخلي "الرمادي" ، إلى "أبيض" - عامة. لا يمكنك تحديد عنوان "أبيض" ؛ حيث يتم تعيينه بشكل عشوائي من مجموعة العناوين الخاصة بنا. بمجرد التوقف عن استخدام IP الخارجي ، فإنه يعود إلى التجمع. أنت تدفع فقط مقابل الوقت الذي تستخدم فيه العنوان "الأبيض".



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



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

كيف تعمل الشبكة الافتراضية من الداخل للخارج





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

نسجل الحالة المرغوبة في قاعدة بيانات Yandex ونذهب لتكوين أجزاء مختلفة من VPC. تم بناء شبكة التراكب في Yandex.Cloud على أساس مكونات مختارة من OpenContrail ، والتي تم تسميتها مؤخرًا Tungsten Fabric. يتم تنفيذ خدمات الشبكة على منصة CloudGate واحدة. في CloudGate ، استخدمنا أيضًا عددًا من المكونات مفتوحة المصدر: GoBGP - للوصول إلى معلومات التحكم ، و VPP - لتنفيذ موجه برامج يعمل فوق DPDK لمسار البيانات.

تتواصل Tungsten Fabric مع CloudGate من خلال GoBGP. يخبر عما يحدث على شبكة التراكب. يقوم CloudGate ، بدوره ، بربط شبكات التراكب مع بعضها البعض والإنترنت.



الآن دعونا نرى كيف تعالج الشبكة الافتراضية قابلية التوسع والتوافر. فكر في حالة بسيطة. توجد منطقة توفر واحدة ويتم إنشاء جهازي VPCs فيها. نشرنا مثالاً واحدًا على قماش التنجستن ، وهو يسحب عشرات الآلاف من الشبكات. تتواصل الشبكات مع CloudGate. CloudGate ، كما قلنا ، يضمن اتصالهم ببعضهم البعض ومع الإنترنت.



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

يتم عرض VPC1 في منطقة الوصول B إذا كانت هناك موارد في منطقة الوصول B تلتصق بـ VPC1. إذا لم تكن هناك موارد من VPC2 في منطقة الوصول B ، فلن نحقق VPC2 في هذه المنطقة. في المقابل ، بما أن الموارد من VPC3 موجودة فقط في المنطقة B ، فإن VPC3 ليست في المنطقة A. كل شيء بسيط ومنطقي.

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



إذا نظرنا إلى مضيف معين ، فسوف نرى أن ثلاثة مكونات تدور في نظام التشغيل المضيف:
  • الحوسبة هي الجزء المسؤول عن توزيع موارد الحوسبة على المضيف.
  • VRouter هو جزء من Tungsten Fabric الذي ينظم التراكب ، أي أنفاق الحزم من خلال البطانة.
  • VDisk هي أجزاء من المحاكاة الافتراضية للتخزين.

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

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

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

نحن نميز ثلاث طبقات في نظامنا:
  • طائرة التكوين - تحدد الحالة المستهدفة للنظام. هذا ما يقوم المستخدم بتكوينه من خلال API.
  • طائرة التحكم - توفر دلالات محددة من قبل المستخدم ، أي أنها تنقل حالة طائرة البيانات إلى ما وصفه المستخدم في تكوين الطائرة.
  • طائرة البيانات - يعالج مباشرة حزم المستخدم.



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

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



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



الآن دعونا نرى كيف يبدو النظام على المضيفين. يوجد في الجهاز الظاهري محول شبكة معين عالق في VRouter. VRouter عبارة عن وحدة أساسية من Tungsten Fabric تبحث في الحزم. إذا كان هناك بالفعل تدفق لبعض الحزمة ، فإن الوحدة النمطية تعالجها. إذا لم يكن هناك تدفق ، فإن الوحدة النمطية تقوم بما يسمى الترقب ، أي أنها ترسل الحزمة إلى عملية وضع المستخدم. تقوم العملية بتحليل الحزمة وتستجيب لها نفسها ، على سبيل المثال ، إلى DHCP و DNS ، أو تخبر VRouter بما يجب فعله بها. بعد ذلك ، يمكن لجهاز VRouter معالجة الحزمة.

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



تتواصل طائرة التحكم مع بعضها البعض بين مناطق الوصول إلى BGP ، كما هو الحال مع جهاز توجيه آخر. يخبرون أي الأجهزة يتم رفعها ، بحيث يمكن للأجهزة الافتراضية في منطقة واحدة أن تتفاعل مباشرة مع الأجهزة الافتراضية الأخرى.



أيضا ، تتواصل طائرة التحكم مع CloudGate. وبالمثل ، يُبلغ عن مكان وما هي الأجهزة الافتراضية التي يتم رفعها ، وما هي عناوينها. هذا يسمح لك بتوجيه حركة المرور الخارجية وحركة المرور من الموازن إليهم.

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

خطط للمستقبل القريب


إذا قمنا بتلخيص كل ما سبق في عدة جمل ، يمكننا القول أن VPC في Yandex.Cloud يحل مهمتين مهمتين:

  • يوفر العزلة بين العملاء المختلفين.
  • يجمع بين الموارد والبنية التحتية وخدمات المنصة والسحب الأخرى داخل الشركة وفي شبكة واحدة.

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

VPC يكتسب وظائف بشكل تدريجي ، ونحن نحقق فرصًا جديدة ، ونحن نحاول تحسين شيء ما من حيث راحة المستخدم. يتم التعبير عن بعض الأفكار وتندرج في قائمة الأولويات بفضل أعضاء مجتمعنا.

الآن لدينا تقريبًا القائمة التالية من الخطط للمستقبل القريب:

  • VPN كخدمة.
  • Private DNS – DNS-.
  • DNS .
  • .
  • «» IP- .

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

في البداية ، لا يمكن إضافة عنوان IP "أبيض" إلا عند إنشاء الجهاز. إذا نسي المستخدم القيام بذلك ، فيجب إعادة إنشاء الجهاز الظاهري. نفس الشيء ، وإذا لزم الأمر ، قم بإزالة IP الخارجي. سيكون من الممكن قريبًا تشغيل IP العام وإيقاف تشغيله دون إعادة إنشاء الجهاز.

لا تتردد في التعبير عن أفكارك ودعم اقتراحات المستخدمين الآخرين. أنت تساعدنا في تحسين السحابة والحصول على ميزات مهمة ومفيدة بشكل أسرع!

Source: https://habr.com/ru/post/undefined/


All Articles