مرحبا. تمت كتابة هذا المقال لأولئك الذين ما زالوا يسارعون بين اختيار منصات المحاكاة الافتراضية وبعد قراءة مقال من سلسلة "لقد قمنا بتثبيت proxmox وكل شيء على ما يرام بشكل عام ، 6 سنوات من الجهوزية ليست فجوة واحدة". ولكن بعد تثبيت هذا الحل المعبأ أو ذاك ، يطرح السؤال ، كيف يمكنني إصلاحه هنا ، بحيث تكون المراقبة أكثر قابلية للفهم وهنا ، للتحكم في النسخ الاحتياطية…. وبعد ذلك يحين الوقت وتدرك أنك تريد شيئًا أكثر فاعلية ، أو تريد أن يصبح كل شيء واضحًا داخل نظامك ، وليس هذا الصندوق الأسود ، أو تريد استخدام شيء أكثر من برنامج Hypervisor ومجموعة من الأجهزة الافتراضية. في هذه المقالة ، سيكون هناك القليل من التفكير والممارسة بناءً على منصة Opennebula - لقد اخترتها. لا تتطلب الموارد والبنية ليست معقدة.
وهكذا ، كما نرى ، يعمل العديد من موفري السحابة على kvm ويقومون بإجراء اتصالات خارجية للتحكم في الأجهزة. من الواضح أن كبار المضيفين يكتبون اتصالاتهم للبنية التحتية السحابية ، مثل YANDEX على سبيل المثال. يستخدم شخص ما openstack ويجعل ارتباطًا على هذا الأساس - SELECTEL ، MAIL.RU. ولكن إذا كان لديك أجهزتك الخاصة وفريق عمل صغير من المتخصصين ، فعادة ما تختار شيئًا من الأجهزة الجاهزة - VMWARE ، HYPER-V ، هناك تراخيص مجانية وتراخيص مدفوعة ، ولكن الآن الأمر لا يتعلق بذلك. دعنا نتحدث عن المتحمسين - هؤلاء هم أولئك الذين لا يخشون تقديم شيء جديد وتجربته ، على الرغم من حقيقة أن الشركة أوضحت بوضوح "من سيخدم هذا بعدك؟" مخيف ". ولكن بعد كل شيء ، يمكنك أولاً تطبيق هذه الحلول على منصة اختبار ، وإذا أحبها الجميع ،ثم يمكن طرح مسألة التطوير والاستخدام في بيئات أكثر خطورة.
يوجد هنا أيضًا رابط للتقرير www.youtube.com/watch؟v=47Mht_uoX3A من مشارك نشط في تطوير هذه المنصة.
ربما في هذه المقالة ، سيكون هناك شيء غير ضروري وواضح بالفعل لأخصائي متمرس ، وفي بعض الحالات لن أصف كل شيء ، لأن مثل هذه الأوامر والأوصاف موجودة على الشبكة. هنا فقط تجربتي مع هذه المنصة. آمل أن يضيف المشاركون النشطون في التعليقات ما يمكن فعله بشكل أفضل وما الأخطاء التي ارتكبتها. كانت جميع الإجراءات في حامل منزلي يتكون من 3 أجهزة كمبيوتر بخصائص مختلفة. أيضًا ، لم أحدد على وجه التحديد كيفية عمل هذا البرنامج وكيفية تثبيته. لا ، فقط تجربة الإدارة والمشاكل التي واجهتها. ربما سيجدها شخص ما مفيدًا في الاختيار.
وهكذا ، فلنبدأ. بصفتي مسؤول النظام ، فإن النقاط التالية مهمة بالنسبة لي ، والتي بدونها لن أتمكن من استخدام هذا الحل.
1. تكرار التثبيت
هناك الكثير من التعليمات لتثبيت opennebula ، لذلك يجب ألا تكون هناك مشكلة. من إصدار إلى آخر ، تظهر ميزات جديدة قد لا تتمكن دائمًا من الكسب عند الانتقال من إصدار إلى إصدار.
2. المراقبة
سنراقب العقدة نفسها ، kvm و opennebula. الخير موجود بالفعل. هناك الكثير من الخيارات حول مراقبة مضيفي Linux ، نفس zabbix أو مصدر العقدة - من يحب ماذا - في الوقت الحالي أعرّفها بحيث يتم مراقبة مقاييس النظام (درجة الحرارة حيث يمكن قياسها ، اتساق مجموعة الأقراص) ، من خلال zabbix ، ولكن بالنسبة لـ التطبيقات من خلال المصدر إلى بروميثيوس. لمراقبة kvm ، على سبيل المثال ، يمكنك أخذ المشروع github.com/zhangjianweibj/prometheus-libvirt-exporter.git ووضع الإطلاق من خلال systemd ، فهو يعمل جيدًا ويعرض مقاييس kvm ، وهناك أيضًا لوحة تحكم جاهزة grafana.com/grafana/dashboards/12538 .
على سبيل المثال ، هذا ملفي:
/etc/systemd/system/libvirtd_exporter.service
[Unit]
Description=Node Exporter
[Service]
User=node_exporter
ExecStart=/usr/sbin/prometheus-libvirt-exporter --web.listen-address=":9101"
[Install]
WantedBy=multi-user.target
ولذا لدينا مصدر واحد ، نحتاج إلى مصدر ثانٍ لمراقبة Opennebula نفسه ، لقد استخدمت هذا github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter
يمكنك إضافة ما يلي إلى node_exporter منتظم لمراقبة النظام.
في ملف node_exporter ، قم بتغيير البداية بهذه الطريقة:
ExecStart=/usr/sbin/node_exporter --web.listen-address=":9102" --collector.textfile.directory=/var/lib/opennebula_exporter/textfile_collector
قم بإنشاء دليل mkdir -p / var / lib / opennebula_exporter
bash script المعروض أعلاه أولاً تحقق من العمل من خلال وحدة التحكم ، إذا كان يظهر ما هو مطلوب (إذا كان يعطي خطأ ، ثم ضع xmlstarlet) ، انسخه إلى /usr/local/bin/opennebula_exporter.sh
أضف إلى مهمة CZK لكل دقيقة:
*/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)
بدأت المقاييس في الظهور ، يمكنك التقاطها بروميثيوس وإنشاء الرسوم البيانية وإجراء التنبيهات. على سبيل المثال ، يمكنك رسم لوحة القيادة البسيطة هذه في grafan.
(يمكنك أن ترى أن هنا أنا overcommit وحدة المعالجة المركزية، ذاكرة الوصول العشوائي)
وبالنسبة لأولئك الذين يحبون وzabbiks الاستخدام، هناك github.com/OpenNebula/addon-zabbix
مراقبة كل شيء، والشيء الرئيسي هو عليه. بالطبع ، يمكنك ، بالإضافة إلى ذلك ، استخدام أدوات المراقبة المدمجة للأجهزة الافتراضية وتحميل البيانات إلى الفوترة ، وهنا لكل شخص رؤيته الخاصة ، حتى يصل إليها عن كثب.
لم أبدأ التسجيل بعد. الخيار الأسهل هو إضافة td-agent لتحليل المجلد / var / lib / one بالتعبيرات العادية. على سبيل المثال ، ملف sunstone.log مناسب لـ regexp nginx والملفات الأخرى التي تعرض محفوظات المكالمات إلى النظام الأساسي - ما هي الميزة الإضافية؟ حسنًا ، على سبيل المثال ، يمكننا تتبع عدد "الخطأ والخطأ" بوضوح وتتبع مكان وجود عطل وعلى أي مستوى بسرعة.
3. النسخ الاحتياطية
هناك أيضًا مشاريع مخدرة مدفوعة - على سبيل المثال sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon: OpenNebula_Backup. هنا يجب أن نفهم أن مجرد النسخ الاحتياطي لصورة الجهاز ، في هذه الحالة ، ليس هو نفسه على الإطلاق ، لأن أجهزتنا الافتراضية يجب أن تعمل بتكامل كامل (نفس سياق الملف ، الذي يصف إعدادات الشبكة ، واسم vm والإعدادات المخصصة لتطبيقاتك). لذلك ، هنا نقرر ماذا وكيف سنساند. في بعض الحالات ، من الأفضل عمل نسخ مما هو موجود في الجهاز الافتراضي نفسه. وربما تحتاج فقط إلى نسخ قرص واحد احتياطيًا من هذا الجهاز.
على سبيل المثال ، قررنا أن جميع الأجهزة تبدأ بالصور الثابتة ، لذلك بعد قراءة docs.opennebula.io/5.12/operation/vm_management/img_guide.html ،
فهذا يعني أنه يمكننا أولاً إلغاء تحميل الصورة من جهازنا الافتراضي:
onevm disk-saveas 74 3 prom.qcow2
Image ID: 77
,
oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
. , . , opennebula .
أيضًا في اتساع الشبكة ، وجدت تقريرًا مثيرًا للاهتمام وهناك أيضًا مشروع مفتوح كهذا ، ولكن هنا فقط لتخزين qcow2.
ولكن كما نعلم جميعًا ، يأتي وقت نريد فيه نسخًا احتياطيًا تزايديًا عاجلاً أم آجلاً ، ويكون الأمر أكثر صعوبة هنا وربما تقوم الإدارة بتخصيص الأموال لحل مدفوع ، أو الذهاب في الاتجاه الآخر وفهم أننا هنا نقوم فقط بنشر الموارد ، وإجراء التكرار على مستوى التطبيق و إضافة عدد من العقد الجديدة والأجهزة الافتراضية - نعم ، هنا ، أقول إن استخدام السحابة هو فقط لإطلاق مجموعات التطبيقات ، وتشغيل قاعدة البيانات على نظام أساسي آخر أو أخذ واحدة جاهزة من المورد ، إن أمكن.
4. سهولة الاستخدام
في هذه الفقرة سوف أصف المشاكل التي واجهتها. على سبيل المثال ، بالصور ، كما نعلم ، هناك ثبات - عندما يتم تثبيت هذه الصورة على vm ، تتم كتابة جميع البيانات على هذه الصورة. وإذا كانت غير ثابتة ، فسيتم نسخ الصورة إلى التخزين وتكتب البيانات إلى ما تم نسخه من الصورة الأصلية - هذه هي طريقة عمل قوالب القوالب. مرارًا وتكرارًا تسبب في مشاكل لنفسه لدرجة أنه نسي تحديدها باستمرار وتم نسخ صورة بحجم 200 غيغابايت ، والمشكلة هي أنه بالتأكيد لا يمكن إلغاء هذا الإجراء ، يجب عليك الذهاب إلى العقدة وتثبيت عملية "CP" الحالية.
أحد العوائق الرئيسية هو أنه لا يمكنك التراجع عن الإجراءات ببساطة باستخدام واجهة المستخدم الرسومية. بدلاً من ذلك ، تقوم بإلغائها وترى أنه لا شيء يحدث والبدء من جديد ، وإلغاء ، وفي الواقع ستكون هناك عمليتا cp بالفعل لنسخ الصورة.
ثم يتعلق الأمر بفهم سبب ترقيم كل مثيل جديد بمعرف جديد في opennebula ، على سبيل المثال ، في نفس proxmox أنشأ vm بمعرف 101 ، وحذفه ، ثم قمت بإنشاء معرف 101 مرة أخرى. في opennebula ، لن يحدث هذا ، سيتم إنشاء كل مثيل جديد بمعرف جديد و هذا له منطقه الخاص - على سبيل المثال ، مسح البيانات القديمة أو عمليات التثبيت غير الناجحة.
الشيء نفسه ينطبق على التخزين ، والأهم من ذلك كله ، أن هذه المنصة تهدف إلى التخزين المركزي. هناك إضافات لاستخدام المحلي ، ولكن في هذه الحالة ، ليس عن ذلك. أعتقد أنه في المستقبل سيكتب شخص ما مقالًا حول كيفية استخدام التخزين المحلي على العقد واستخدامه بنجاح في الإنتاج.
5. أقصى قدر من البساطة
بالطبع ، كلما تقدمت ، قل عدد الذين سيفهمونك.
في ظروف حامل - 3 عقد مع تخزين nfs - كل شيء يعمل بشكل جيد. ولكن إذا أجرينا تجارب لإيقاف الطاقة ، فعلى سبيل المثال عند بدء لقطة وإيقاف تشغيل طاقة العقدة ، فإننا نحفظ الإعدادات في قاعدة البيانات ، وهي لقطة ، لكنها في الحقيقة ليست كذلك (حسنًا ، نحن جميعًا نفهم أننا كتبنا في الأصل قاعدة البيانات حول هذا الإجراء في SQL ، لكن العملية نفسها لم تكن ناجحة). الإضافة هي أنه عند إنشاء لقطة ، يتم تكوين ملف منفصل ويكون هناك "أصل" ، لذلك ، في حالة حدوث مشاكل وحتى إذا لم يعمل من خلال واجهة المستخدم الرسومية ، يمكننا التقاط ملف qcow2 واسترداد docs.opennebula.io/5.8/operation/vm_management/vm_instances بشكل منفصل .لغة البرمجة
لسوء الحظ ، ليس كل شيء بهذه البساطة على الشبكات. حسنًا ، على الأقل هو أسهل مما هو عليه في Openstack ، لقد استخدمت vlan (802.1Q) فقط - إنه يعمل بشكل جيد ، ولكن إذا أجريت تغييرات في الإعدادات من شبكة القوالب ، فلن يتم تطبيق هذه الإعدادات على الأجهزة التي تعمل بالفعل ، أي أنك تحتاج إلى حذف وإضافة الشبكة الخريطة ، ثم يتم تطبيق الإعدادات الجديدة.
إذا كنت لا تزال ترغب في المقارنة مع Openstack ، فيمكننا أن نقول ذلك ، في opennebula لا يوجد تعريف واضح للتقنيات التي يجب استخدامها لتخزين البيانات وإدارة الشبكة والموارد - يقرر كل مسؤول بنفسه كيف يكون أكثر راحة.
6. الإضافات والتثبيتات الإضافية
بعد كل شيء ، كما نفهم أن النظام الأساسي السحابي يمكنه إدارة ليس فقط kvm ، ولكن أيضًا vmware esxi. لسوء الحظ ، لم يكن لدي تجمع مع Vcenter ، إذا حاول أي شخص الكتابة.
بدعم من موفري السحابة الآخرين docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS، AZURE .
حاولت أيضًا إلغاء تثبيت Vmware Cloud من المحدد ، لكن لم ينجح شيء - بشكل عام ، سجلت نتيجة لوجود العديد من العوامل ، ولا جدوى من الدعم الفني لمزود الاستضافة كتابة.
أيضًا ، يوجد الآن في الإصدار الجديد مفرقعة نارية - هذا هو إطلاق ميكروفم ، مثل ربط kvm فوق عامل الإرساء ، والذي يوفر المزيد من التنوع والأمان وزيادة الإنتاجية ، حيث لا توجد حاجة لإنفاق الموارد على محاكاة الأجهزة. أرى فقط ميزة بالنسبة إلى عامل الإرساء من حيث أنه لا يتطلب عددًا إضافيًا من العمليات ولا توجد مآخذ مشغولة عند استخدام هذه المحاكاة ، أي من الممكن تمامًا استخدامه كموازن تحميل (ولكن ربما يكون من المفيد كتابة مقال منفصل عنه ، حتى تنتهي من جميع الاختبارات على أكمل وجه).
7. خبرة إيجابية في الاستخدام وتصحيح الأخطاء
أردت مشاركة ملاحظاتي حول العمل ، وصفت جزءًا منه أعلاه ، أريد أن أكتب أكثر. في الواقع ، ربما لست الوحيد الذي اعتقد في البداية أن هذا ليس النظام الصحيح وعمومًا كل شيء عبارة عن عكازات هنا - كيف يتعاملون مع هذا؟ ولكن بعد ذلك يأتي الفهم وأن كل شيء منطقي تمامًا. بالطبع لا ترضي الجميع وبعض النقاط تتطلب تحسينات.
على سبيل المثال ، عملية بسيطة لنسخ صورة قرص من مخزن بيانات إلى آخر. في حالتي ، هناك عقدتان مع nfs ، أرسل الصورة - يمر النسخ عبر الواجهة الأمامية المفتوحة ، على الرغم من أننا اعتدنا جميعًا على حقيقة أنه يجب نسخ البيانات مباشرة بين المضيفين - في نفس البرنامج الافتراضي ، hyper-v اعتدنا على ذلك ، ولكن هنا بواسطة إلى آخر. إليك طريقة مختلفة وأيديولوجية مختلفة ، وفي الإصدار 5.12 تمت إزالة الزر "الانتقال إلى مخزن البيانات" - يتم نقل الجهاز نفسه فقط ، ولكن ليس التخزين. المقصود بالتخزين المركزي.
علاوة على ذلك ، هناك خطأ شائع لأسباب مختلفة "خطأ في نشر الجهاز الظاهري: تعذر إنشاء مجال من /var/lib/one//datastores/103/10/deployment.5" يوجد أدناه الجزء العلوي الذي تحتاج إلى إلقاء نظرة عليه.
- حقوق الصور للمستخدم oneadmin ؛
- حقوق المستخدم oneadmin لتشغيل libvirtd ؛
- datastore? , ;
- , frontend , vlan br0, — bridge0 — .
يقوم System datastore بتخزين البيانات الوصفية لجهاز vm الخاص بك ، إذا بدأت تشغيل vm مع صورة ثابتة ، فإن vm يحتاج إلى الوصول إلى التكوين الذي تم إنشاؤه في البداية على وحدة التخزين حيث أنشأت جهاز vm - وهذا مهم للغاية. لذلك ، عند نقل vm إلى مخزن بيانات آخر ، يجب إعادة فحص كل شيء.
8. التوثيق ، المجتمع. مزيد من التطوير
والباقي ، توثيق جيد ، مجتمع والأهم من ذلك أن يستمر المشروع في العيش في المستقبل.
هنا ، بشكل عام ، كل شيء موثق جيدًا وحتى وفقًا للمصدر الرسمي لن يكون من الصعب تحديد وإيجاد إجابات للأسئلة.
المجتمع نشط. ينشر العديد من الحلول الجاهزة التي يمكنك استخدامها في عمليات التثبيت الخاصة بك.
في الوقت الحالي ، تغيرت بعض السياسات في الشركة منذ 5.12.forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 سيكون من المثير للاهتمام معرفة كيفية تطور المشروع. في البداية ، أشرت على وجه التحديد إلى بعض البائعين الذين يستخدمون حلولهم وما تقدمه الصناعة. بالطبع ، لا توجد إجابة واضحة حول ما يجب استخدامه. ولكن بالنسبة للمؤسسات الصغيرة ، قد لا يكون الحفاظ على السحابة الخاصة الصغيرة مكلفًا كما يبدو. الشيء الرئيسي هو أن تعرف بالضبط ما تحتاجه.
نتيجة لذلك ، بغض النظر عن ما تختاره كنظام سحابي ، يجب ألا تتوقف عند منتج واحد. إذا كان لديك الوقت ، فإن الأمر يستحق البحث عن حلول أخرى مفتوحة النهاية.
هناك محادثة جيدة t.me/opennebula تساعد بنشاط ولا ترسل للبحث عن حل للمشكلة في Google. انضم إلينا.