سلام به همه. این مقاله برای کسانی نوشته شده است که هنوز بین انتخاب پلتفرم های مجازی سازی سرگردان هستند و پس از خواندن مقاله از سری "ما proxmox را نصب کردیم و در کل همه چیز خوب است، 6 سال آپ تایم بدون یک وقفه" نوشته شده است. اما پس از نصب یک یا دیگری راه حل خارج از جعبه، این سوال پیش می آید: چگونه می توانم این را در اینجا اصلاح کنم تا نظارت بیشتر قابل درک باشد، و در اینجا، برای کنترل پشتیبان گیری .... و بعد زمان می رسد و متوجه می شوید که چیزی کاربردی تر می خواهید یا می خواهید همه چیز در سیستم شما روشن شود و نه این جعبه سیاه یا می خواهید از چیزی بیشتر از یک هایپروایزر و یکسری ماشین های مجازی استفاده کنید. این مقاله حاوی برخی از افکار و تمرینات مبتنی بر پلت فرم Opennebula است - من آن را انتخاب کردم زیرا. نیازی به منابع ندارد و معماری آن چندان پیچیده نیست.
و بنابراین، همانطور که می بینیم، بسیاری از ارائه دهندگان ابر روی kvm کار می کنند و اتصالات خارجی را برای کنترل ماشین ها ایجاد می کنند. واضح است که هاست های بزرگ چارچوب های خود را برای زیرساخت ابری می نویسند، برای مثال همان YANDEX. شخصی از openstack استفاده می کند و بر این اساس اتصال برقرار می کند - SELECTEL، MAIL.RU. اما اگر سختافزار خود و تعداد کمی از متخصصان را دارید، معمولاً چیزی آماده را انتخاب میکنید - VMWARE، HYPER-V، مجوزهای رایگان و پولی وجود دارد، اما این چیزی نیست که اکنون در مورد آن صحبت میکنیم. بیایید در مورد علاقه مندان صحبت کنیم - اینها کسانی هستند که از ارائه و امتحان چیز جدیدی نمی ترسند، علیرغم این واقعیت که شرکت به وضوح اعلام کرده است، "چه کسی بعد از شما این خدمات را ارائه می دهد"، "آیا ما بعداً این را به تولید خواهیم رساند." ? ترسناک." اما میتوانید ابتدا این راهحلها را در یک میز آزمایش اعمال کنید و اگر همه آن را دوست داشتند، میتوانید سؤال توسعه بیشتر و استفاده در محیطهای جدیتر را مطرح کنید.
همچنین لینک گزارش در اینجا آمده است
شاید در این مقاله چیزی اضافی و از قبل برای یک متخصص با تجربه قابل درک باشد، و در برخی موارد من همه چیز را شرح نمی دهم زیرا دستورات و توضیحات مشابه در اینترنت موجود است. این فقط تجربه من با این پلتفرم است. امیدوارم شرکت کنندگان فعال در نظرات اضافه کنند که چه کارهایی را می توان بهتر انجام داد و چه اشتباهاتی را مرتکب شدم. تمام اقدامات در یک استند خانگی متشکل از 3 رایانه شخصی با ویژگی های مختلف انجام شد. همچنین، من به طور خاص به نحوه کار این نرم افزار و نحوه نصب آن اشاره نکردم. نه، فقط تجربه مدیریت و مشکلاتی که با آن برخورد کردم. شاید این برای کسی در انتخابش مفید باشد.
بنابراین، بیایید شروع کنیم. به عنوان یک مدیر سیستم، نکات زیر برای من مهم است که بدون آنها بعید است از این راه حل استفاده کنم.
1. تکرارپذیری نصب
دستورالعمل های زیادی برای نصب opennebula وجود دارد، نباید هیچ مشکلی وجود داشته باشد. از نسخه ای به نسخه دیگر، ویژگی های جدیدی ظاهر می شوند که همیشه هنگام انتقال از نسخه ای به نسخه دیگر کار نمی کنند.
2. نظارت بر
ما خود گره، kvm و opennebula را نظارت خواهیم کرد. خوشبختانه، از قبل آماده است. گزینه های زیادی در مورد نظارت بر هاست های لینوکس وجود دارد، همان Zabbix یا صادرکننده گره - هر کسی که دوست دارد چه بهتر - در حال حاضر آن را به عنوان معیارهای نظارتی سیستم (دمای جایی که می توان آن را اندازه گیری کرد، ثبات آرایه دیسک)، از طریق zabbix تعریف می کنم. ، و در مورد برنامه های کاربردی از طریق صادر کننده Prometheus. مثلا برای مانیتورینگ kvm میتونید پروژه رو بگیرید
مثلا فایل من اینه:
/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
و بنابراین ما 1 صادرکننده داریم، ما به یک دومی برای نظارت بر خود opennebula نیاز داریم، من از این استفاده کردم
قابل اضافه شدن به حالت عادی
در فایل 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 ارائه شده در بالا، ابتدا کار را از طریق کنسول بررسی می کنیم، اگر آنچه را که نیاز داریم را نشان می دهد (اگر خطا می دهد، xmlstarlet را نصب کنید)، آن را در /usr/local/bin/opennebula_exporter.sh کپی کنید.
برای هر دقیقه یک کار cron اضافه کنید:
*/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)
متریک ها ظاهر شدند، می توانید آنها را مانند یک پرومتئوس بگیرید و نمودار بسازید و هشدار ایجاد کنید. در Grafana می توانید مثلاً یک داشبورد ساده بکشید.
(روشن است که در اینجا cpu، ram overcommit می کنم)
برای کسانی که عاشق Zabbix هستند و از آنها استفاده می کنند، وجود دارد
تا آنجا که به نظارت مربوط می شود، نکته اصلی این است که وجود دارد. البته، علاوه بر این، میتوانید از ابزارهای نظارت ماشین مجازی داخلی استفاده کنید و دادهها را در صورتحساب آپلود کنید، در اینجا هر کسی دیدگاه خود را دارد، من هنوز کار دقیقتری روی این موضوع شروع نکردهام.
من واقعاً هنوز ثبت نام را شروع نکرده ام. ساده ترین گزینه اضافه کردن td-agent برای تجزیه پوشه /var/lib/one با عبارات منظم است. به عنوان مثال، فایل sunstone.log با nginx regexp و سایر فایلهایی که تاریخچه دسترسی به پلتفرم را نشان میدهند مطابقت دارد - مزیت این چیست؟ خوب، به عنوان مثال، ما می توانیم به صراحت تعداد "خطا، خطا" را ردیابی کنیم و به سرعت ردیابی کنیم که کجا و در چه سطحی نقص وجود دارد.
3. پشتیبان گیری
همچنین پروژه های تکمیل شده پرداخت شده وجود دارد - به عنوان مثال سپتامبر
به عنوان مثال، ما تعیین کردیم که همه ماشینها با تصاویر ثابت شروع میشوند، بنابراین، پس از خواندن
این بدان معنی است که ابتدا می توانیم تصویر را از vm خود آپلود کنیم:
onevm disk-saveas 74 3 prom.qcow2
Image ID: 77
Смотрим, под каким именем он сохранился
oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
И далее копируем куда нам необходимо. Конечно, так себе способ. Просто хотел показать, что используя инструменты opennebula можно строить подобные решения.
تو اینترنت هم پیدا کردم
اما همانطور که همه ما می دانیم، دیر یا زود زمانی فرا می رسد که می خواهید پشتیبان گیری افزایشی داشته باشید، اینجا دشوارتر است و شاید مدیریت پول را برای یک راه حل پولی اختصاص دهد، یا راه دیگری را برود و بفهمد که در اینجا فقط منابع را کاهش می دهیم. و تهیه نسخه پشتیبان در سطح برنامه و افزودن تعدادی گره جدید و ماشین های مجازی - بله، در اینجا می گویم که استفاده از ابر صرفاً برای راه اندازی کلاسترهای برنامه و راه اندازی پایگاه داده بر روی پلتفرم دیگر یا گرفتن یک پلتفرم آماده در صورت امکان از تامین کننده
4. سهولت استفاده
در این پاراگراف من مشکلاتی را که با آن مواجه شدم شرح خواهم داد. به عنوان مثال، با توجه به تصاویر، همانطور که می دانیم، پایدار وجود دارد - زمانی که این تصویر بر روی vm نصب می شود، تمام داده ها روی این تصویر نوشته می شود. و اگر پایدار نباشد، تصویر در فضای ذخیرهسازی کپی میشود و دادهها به آنچه از تصویر منبع کپی شده است نوشته میشود - الگوهای الگو اینگونه کار میکنند. من بارها و بارها با فراموش کردن مشخص کردن persistent برای خودم مشکل ایجاد کردم و تصویر 200 گیگابایتی کپی شد، مشکل این است که این رویه مطمئناً قابل لغو نیست، شما باید به گره بروید و روند "cp" فعلی را بکشید.
یکی از معایب مهم این است که نمی توانید به سادگی با استفاده از رابط کاربری، اقدامات را لغو کنید. یا بهتر بگوییم آنها را لغو می کنید و می بینید که هیچ اتفاقی نمی افتد و دوباره آنها را شروع می کنید، آنها را لغو می کنید و در واقع از قبل 2 پردازش cp وجود دارد که تصویر را کپی می کند.
و سپس می فهمیم که چرا opennebula هر نمونه جدید را با یک شناسه جدید شماره گذاری می کند، به عنوان مثال، در همان proxmox یک vm با id 101 ایجاد کرد، آن را حذف کرد، سپس دوباره آن را ایجاد کرد و id 101 را ایجاد کرد. در opennebula این اتفاق نمی افتد. هر نمونه جدید با یک شناسه جدید ایجاد می شود و این منطق خاص خود را دارد - به عنوان مثال، پاک کردن داده های قدیمی یا نصب ناموفق.
در مورد ذخیره سازی هم همینطور است؛ بیشتر از همه، این پلتفرم ذخیره سازی متمرکز را هدف قرار داده است. افزونه هایی برای استفاده از محلی وجود دارد، اما این چیزی نیست که در این مورد در مورد آن صحبت می کنیم. من فکر می کنم که در آینده کسی مقاله ای در مورد چگونگی استفاده از ذخیره سازی محلی در گره ها و استفاده موفقیت آمیز از آن در تولید خواهد نوشت.
5. حداکثر سادگی
البته، هر چه جلوتر بروید، کسانی که شما را درک خواهند کرد کمتر می شوند.
تحت شرایط استند من - 3 گره با ذخیره سازی nfs - همه چیز خوب کار می کند. اما اگر آزمایشهایی شامل قطع برق انجام دهیم، به عنوان مثال، هنگام اجرای یک عکس فوری و خاموش کردن برق گره، تنظیماتی را در پایگاه داده ذخیره میکنیم که یک عکس فوری وجود دارد، اما در واقع هیچیک وجود ندارد (خوب، همه ما میدانیم که ما در ابتدا پایگاه داده را در مورد این عمل در sql نوشت، اما خود عملیات موفقیت آمیز نبود). مزیت این است که هنگام ایجاد یک عکس فوری، یک فایل جداگانه تشکیل می شود و یک "والد" وجود دارد، بنابراین در صورت بروز مشکل و حتی اگر از طریق gui کار نکرد، می توانیم فایل qcow2 را برداریم و جداگانه آن را بازیابی کنیم.
در شبکه ها، متأسفانه، همه چیز به این سادگی نیست. خوب، حداقل ساده تر از openstack است، من فقط از vlan (802.1Q) استفاده کردم - بسیار خوب کار می کند، اما اگر از شبکه الگو تغییراتی در تنظیمات ایجاد کنید، این تنظیمات برای ماشین های در حال اجرا اعمال نمی شوند، یعنی. شما باید کارت شبکه را حذف و اضافه کنید، سپس تنظیمات جدید اعمال می شود.
اگر هنوز هم می خواهید آن را با openstack مقایسه کنید، می توانید این را بگویید: در opennebula تعریف روشنی از اینکه کدام فناوری برای ذخیره داده ها، مدیریت شبکه، منابع استفاده شود وجود ندارد - هر مدیر خودش تصمیم می گیرد چه چیزی برای او راحت تر است.
6. پلاگین ها و نصب های اضافی
پس از همه، همانطور که ما درک می کنیم، پلت فرم ابری می تواند نه تنها kvm، بلکه vmware esxi را نیز مدیریت کند. متاسفانه من با Vcenter استخر نداشتم، اگر کسی امتحان کرده لطفا بنویسد.
پشتیبانی از سایر ارائه دهندگان ابر بیان شده است
AWS، AZURE.
من همچنین سعی کردم Vmware Cloud را از Selectel وصل کنم، اما هیچ چیز کار نکرد - به طور کلی، مسدود شد زیرا عوامل زیادی وجود دارد و هیچ فایده ای برای نوشتن به پشتیبانی فنی ارائه دهنده میزبانی وجود ندارد.
همچنین، اکنون نسخه جدید دارای فشفشه است - این راه اندازی microvm است، نوعی مهار kvm بر روی داکر، که تطبیق پذیری، امنیت و بهره وری را افزایش می دهد زیرا نیازی به هدر دادن منابع برای تجهیزات شبیه سازی نیست. تنها مزیتی که نسبت به Docker می بینم این است که تعداد بیشتری از فرآیندها را اشغال نمی کند و هنگام استفاده از این شبیه سازی هیچ سوکت اشغالی وجود ندارد. استفاده از آن به عنوان متعادل کننده بار کاملاً ممکن است (اما احتمالاً ارزش نوشتن یک مقاله جداگانه در این مورد را دارد تا زمانی که همه آزمایش ها را به طور کامل انجام دهم).
7. تجربه مثبت استفاده و اشکال زدایی خطا
می خواستم مشاهداتم را در مورد کار به اشتراک بگذارم، برخی از آن را در بالا توضیح دادم، دوست دارم بیشتر بنویسم. در واقع، من احتمالاً تنها کسی نیستم که در ابتدا فکر می کنم این سیستم درست نیست و به طور کلی همه چیز اینجا یک عصا است - آنها حتی با این چگونه کار می کنند؟ اما پس از آن درک می شود که همه چیز کاملاً منطقی است. البته، شما نمی توانید همه را راضی نگه دارید و برخی از جنبه ها نیاز به بهبود دارند.
به عنوان مثال، یک عملیات ساده کپی کردن یک تصویر دیسک از یک دیتا استور به دیگری. در مورد من، 2 گره با nfs وجود دارد، من تصویر را ارسال می کنم - کپی کردن از طریق سحابی opennebula frontend اتفاق می افتد، اگرچه همه ما به این واقعیت عادت کرده ایم که داده ها باید مستقیماً بین هاست ها کپی شوند - در همان vmware، hyper-v ما هستیم. عادت به این، اما اینجا به دیگری. رویکرد متفاوت و ایدئولوژی متفاوتی وجود دارد، و در نسخه 5.12 آنها دکمه "مهاجرت به دیتا استور" را حذف کردند - فقط خود ماشین منتقل می شود، اما نه ذخیره سازی زیرا به معنی ذخیره سازی متمرکز
در مرحله بعد یک خطای محبوب با دلایل مختلف وجود دارد: "خطا در استقرار ماشین مجازی: نمی توان دامنه را از /var/lib/one//datastores/103/10/deployment ایجاد کرد." در زیر مهمترین چیزی که باید به آن نگاه کرد وجود دارد.
- حقوق تصویر برای کاربر oneadmin.
- مجوز برای کاربر oneadmin برای اجرای libvirtd.
- آیا دیتا استور به درستی نصب شده است؟ بروید و مسیر خود گره را بررسی کنید، شاید چیزی از بین رفته باشد.
- شبکه ای که به درستی پیکربندی نشده است، یا بهتر است بگوییم در frontend، در تنظیمات شبکه است که رابط اصلی برای vlan br0 است، اما در گره به عنوان bridge0 نوشته شده است - باید یکسان باشد.
System datastore متادیتا را برای vm شما ذخیره میکند، اگر vm را با یک تصویر ثابت اجرا میکنید، VM باید به تنظیمات اولیه ایجاد شده در فضای ذخیرهسازی جایی که vm را ایجاد کردهاید دسترسی داشته باشد - این بسیار مهم است. بنابراین، هنگام انتقال vm به دیتا استور دیگر، باید همه چیز را دوباره چک کنید.
8. اسناد، جامعه. پیشرفتهای بعدی
و بقیه، مستندات خوب، جامعه و نکته اصلی این است که پروژه در آینده به حیات خود ادامه می دهد.
به طور کلی، همه چیز کاملاً مستند است و حتی با استفاده از یک منبع رسمی نیز مشکلی برای نصب و یافتن پاسخ سوالات نخواهد بود.
انجمن، فعال راه حل های آماده بسیاری را منتشر می کند که می توانید در نصب خود از آنها استفاده کنید.
در حال حاضر، برخی از سیاست ها در شرکت از 5.12 تغییر کرده است
در نتیجه، صرف نظر از اینکه چه چیزی را به عنوان یک سیستم ابری انتخاب می کنید، نباید در یک محصول متوقف شوید. اگر وقت دارید، ارزش آن را دارد که به راه حل های بازتر دیگری نگاهی بیندازید.
چت خوبی هست
منبع: www.habr.com