منظم الأوركسترا المرن: ما الذي يأكله



لتوفير خدمة IaaS (مركز البيانات الافتراضية) ، نستخدم في Rusonyx الأوركسترا التجارية Flexiant Cloud Orchestrator (FCO). يحتوي هذا الحل على بنية فريدة من نوعها إلى حد ما ، والتي تميزه عن ما هو معروف للجميع لعامة Openstack و CloudStack.

كما يتم دعم برامج مراقبة العقدة ، KVM ، VmWare ، Xen ، Virtuozzo6 / 7 ، وكذلك الحاويات من نفس Virtuozzo. من المخازن المدعومة - التخزين المحلي ، NFS ، Ceph و Virtuozzo.

تدعم وزارة الخارجية إنشاء وإدارة مجموعات متعددة من واجهة واحدة. وهذا يعني أنه يمكنك إدارة نظام Virtuozzo ونظام KVM + Ceph عن طريق التبديل بينهما بالنقر فوق الماوس.

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

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



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

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



قصة مفصلة حول بنية كل مكون نخطط لتتناسب مع سلسلة من المقالات ، ما لم يكن الموضوع ، بالطبع ، موضع اهتمام.

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

# cat /etc/extility/config/vars … export LIMIT_MAX_LIST_ADMIN_DEFAULT="30000" export LIMIT_MAX_LIST_USER_DEFAULT="200" export LOGDIR="/var/log/extility" export LOG_FILE="misc.log" export LOG_FILE_LOG4JHOSTBILLMODULE="hostbillmodule.log" export LOG_FILE_LOG4JJADE="jade.log" export LOG_FILE_LOG4JTL="tigerlily.log" export LOG_FILE_LOG4JXVP="xvpmanager.log" export LOG_FILE_VARS="misc.log" … 

يتم تصحيح التكوين بالكامل في البداية في القوالب ، ثم يبدأ المولد
# build-config الذي سيشكل ملف vars ويرشد الخدمات لإعادة قراءة config. واجهة المستخدم لطيفة ويمكن وصفها بسهولة.



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

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

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

تتم كتابة كل التخصيص بلغة FDL ، والتي تستند إلى Lua. إذا كنت تعرف Lua ، فلن تكون هناك مشاكل مع FDL.

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

 function register() return {"pre_user_api_publish"} end function pre_user_api_publish(p) if(p==nil) then return{ ref = "cancelPublishImage", name = "Cancel publishing", description = "Cancel all user's images publishing", triggerType = "PRE_USER_API_CALL", triggerOptions = {"publishResource", "publishImage"}, api = "TRIGGER", version = 1, } end -- Turn publishing off return {exitState = "CANCEL"} end 

سيتم استدعاء وظيفة السجل من قبل نواة وزارة الخارجية. سيعود اسم الوظيفة ليتم استدعاؤها. تخزن المعلمة "p" لهذه الوظيفة مسابقة الاتصال ، وستكون فارغة عند الاتصال الأول (لا شيء). هذا سيسمح لنا لتسجيل الزناد لدينا. في triggerType ، نظهر أن المشغل يسمى قبل عملية النشر ، وينطبق على المستخدمين فقط. لمسؤولي النظام ، بالطبع ، نحن نسمح بنشر كل شيء. في triggerOptions ، نوضح بالتفصيل العمليات التي سيطلق عليها المشغل.

والأهم من ذلك ، إرجاع {exitState = "CANCEL"} ، ولهذا السبب تم تطوير المشغل. سيعود الفشل عندما يحاول المستخدم مشاركة صورته في لوحة التحكم.

في بنية FCO ، يتم تمثيل أي كائن (القرص ، الخادم ، الصورة ، الشبكة ، محول الشبكة ، وما إلى ذلك) ككيان مورد ، والذي له معلمات مشتركة:

  • الموارد uuid
  • اسم المورد
  • نوع المورد
  • مالك المورد UUID
  • حالة المورد (نشط ، غير نشط)
  • البيانات الوصفية للموارد
  • مفاتيح الموارد
  • UUID للمنتج الذي ينتمي إليه المورد
  • VDC الموارد

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

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

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

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

بعد أن عملت مع هذه الأوركسترا لعدة سنوات ، يمكننا أن نعتبرها مناسبة للغاية. للأسف ، المنتج لا يخلو من العيوب:

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

المجموع: بشكل عام ، تجربة المنتج جيدة. نحن على اتصال دائم مع مطوري الأوركسترا. يتم ترتيب اللاعبين للتعاون البناء.

على الرغم من بساطته ، فإن وزارة الخارجية لديها وظائف واسعة. في المقالات المستقبلية ، نعتزم الخوض في الموضوعات التالية:

  • الشبكات في وزارة الخارجية
  • يعيش الانتعاش ودعم بروتوكول FQP
  • كتابة الإضافات المخصصة والحاجيات
  • توصيل خدمات إضافية مثل Load Balancer و Acronis
  • دعم
  • آلية موحدة لتكوين وتكوين العقد
  • معالجة بيانات تعريف الجهاز الظاهري

سكرتير خاص أكتب في التعليقات إذا كانت الجوانب الأخرى مثيرة للاهتمام. ترقبوا!

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


All Articles