Opennebula. Krótkie notatki

Opennebula. Krótkie notatki

Cześć wszystkim. Artykuł ten został napisany dla tych, którzy nadal wahają się między wyborem platform wirtualizacji, a po przeczytaniu artykułu z serii „Zainstalowaliśmy Proxmox i wszystko działa świetnie, 6 lat uptime bez przerwy”. Ale po zainstalowaniu jednego lub drugiego rozwiązania pudełkowego, pojawia się pytanie, jak tu coś poprawić i tam, aby monitoring był bardziej zrozumiały, a tutaj, aby kontrolować kopie zapasowe…. A potem przychodzi czas i zdajesz sobie sprawę, że chcesz czegoś bardziej funkcjonalnego, lub chcesz, aby wewnątrz twojego systemu wszystko było jasne, a nie ten czarny pudełko, lub chcesz używać czegoś więcej niż hipernadzorca i mnóstwo maszyn wirtualnych. W tym artykule postaram się przedstawić kilka przemyśleń i praktykę opartą na platformie OpenNebula – wybrałem ją, ponieważ nie jest wymagająca pod względem zasobów, a sama architektura nie jest zbyt skomplikowana.

Widzimy, że wielu dostawców chmur korzysta z KVM i tworzy zewnętrzne interfejsy do zarządzania maszynami. Wyraźnie widać, że duże hosty piszą własne interfejsy do infrastruktury chmurowej, na przykład YANDEX. Niektórzy korzystają z OpenStack i budują interfejs na tej podstawie — SELECTEL, MAIL.RU. Ale jeśli masz swój własny sprzęt i mały zespół specjalistów, zazwyczaj wybiera się coś z gotowych rozwiązań — VMWARE, HYPER-V, są dostępne licencje darmowe i płatne, ale teraz nie o tym. Porozmawiajmy o entuzjastach — to ci, którzy nie boją się proponować i próbować czegoś nowego, mimo że w firmie wyraźnie dają do zrozumienia „Kto to będzie nadzorował po Tobie”, „Czy to my będziemy to później wdrażać? Strach.” Ale przecież można na początku zastosować te rozwiązania w warunkach testowego środowiska, a jeśli wszystkim się spodoba, to można poruszyć kwestię dalszego rozwoju i wykorzystania w poważniejszych środowiskach.

Oto również link do prezentacji www.youtube.com/watch?v=47Mht_uoX3A od aktywnego uczestnika rozwoju tej platformy.

W tej artykule mogą być rzeczy, które są zbędne i już jasne dla doświadczonego specjalisty, a w niektórych przypadkach nie będę opisywał wszystkiego, ponieważ podobne komendy i opisy są dostępne w sieci. Tutaj dzielę się tylko swoim doświadczeniem w pracy z tą platformą. Mam nadzieję, że aktywni uczestnicy uzupełnią w komentarzach, co można poprawić i jakie popełniłem błędy. Wszystkie działania miały miejsce w warunkach domowego środowiska składającego się z 3 komputerów o różnych parametrach. Specjalnie nie opisałem, jak działa oprogramowanie i jak je zainstalować. Przekazuję tylko swoje doświadczenie w administracji i problemy, z jakimi się spotkałem. Może to się przydać komuś przy wyborze.

Zaczynajmy. Dla mnie, jako administratora systemów, istotne są następujące punkty, bez których raczej nie będę korzystał z tego rozwiązania.

1. Powtarzalność instalacji

Istnieje wiele instrukcji dotyczących instalacji opennebuli, nie powinno być problemów. Z wersji na wersję pojawiają się nowe funkcje, które nie zawsze będą działać przy przejściu z wersji na wersję.

2. Monitorowanie

Będziemy monitorować samą nodę, KVM i opennebulę. Na szczęście są już dostępne gotowe rozwiązania. Istnieje wiele opcji do monitorowania hostów linuxowych, takich jak Zabbix czy Node Exporter — każdy wybiera to, co mu bardziej odpowiada — obecnie określam, że monitorowanie metryk systemowych (temperatura tam, gdzie może być mierzona, konsystencja macierzy dyskowej) realizuję przez Zabbix, a co dotyczy aplikacji, to przez eksportera do Prometeusza. Przykładowo do monitorowania KVM można wykorzystać projekt github.com/zhangjianweibj/prometheus-libvirt-exporter.git i skonfigurować uruchamianie przez systemd, działa to całkiem dobrze i pokazuje metryki KVM, jest też gotowy dashboard. grafana.com/grafana/dashboards/12538.

Na przykład, oto mój plik:

/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

Mamy zatem 1 eksportera, potrzebujemy drugiego do monitorowania samej opennebuli, wykorzystałem taki github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter

Można to dodać do zwykłego node_exporter do monitorowania systemu następującego.

W pliku node_exporter zmieniamy start w następujący sposób:

ExecStart=/usr/sbin/node_exporter --web.listen-address=":9102" --collector.textfile.directory=/var/lib/opennebula_exporter/textfile_collector

Tworzymy katalog mkdir -p /var/lib/opennebula_exporter

Skrypt bash przedstawiony powyżej najpierw testujemy w konsoli, jeśli pokazuje to, co potrzeba (jeśli zgłasza błąd, instalujemy xmlstarlet), kopiujemy go do /usr/local/bin/opennebula_exporter.sh

Dodajemy zadanie do crona co minutę:

*\/1 * * * * (\/usr\/local\/bin\/opennebula_exporter.sh > \/var\/lib\/opennebula_exporter\/textfile_collector\/opennebula.prom)

Metry zaczęły się pojawiać, można je zbierać Prometheusem, tworzyć wykresy i ustawiać alerty. W Grafanie można na przykład narysować tak prosty pulpit.

Opennebula. Krótkie notatki

(widać, że tutaj wykonałem overcommit dla CPU, RAM)

Dla tych, którzy lubią i używają Zabbixa, jest github.com\/OpenNebula\/addon-zabbix

Jeśli chodzi o monitorowanie, to wszystko. Najważniejsze, że jest. Oczywiście można też korzystać z wbudowanych narzędzi do monitorowania maszyn wirtualnych i przesyłać dane do billingów, każda osoba ma swoje zdanie, a na tę chwilę jeszcze się tym nie zająłem.

Co do logowania, na razie nie miałem specjalnie czasu. Najprostszą opcją jest dodanie td-agenta do parsowania katalogu \/var\/lib\/one z wyrażeniami regularnymi. Na przykład plik sunstone.log pasuje do regexp nginx i innych plików, które pokazują historię interakcji z platformą – jaki jest w tym plus? Możemy jednoznacznie śledzić liczbę „Error, error” i szybciej znaleźć, gdzie i na jakim poziomie występuje usterka.

3. Kopie zapasowe

Są również płatne, dopracowane projekty – na przykład sep wiki.sepsoftware.com\/wiki\/index.php\/4_4_3_Tigon:OpenNebula_Backup. Musimy zrozumieć, że po prostu tworzenie kopii obrazu maszyny to w tym wypadku nie to, bo nasze maszyny wirtualne muszą działać z pełną integracją (ten sam plik kontekstowy, w którym opisane są ustawienia sieci, nazwa vm i dostosowane ustawienia dla twoich aplikacji). Dlatego decydujemy, co i jak będziemy backupować. W niektórych przypadkach lepiej jest robić kopie tego, co znajduje się w samej vm. I możliwe, że trzeba zbackupować tylko jeden dysk tej maszyny.

Na przykład zdecydowaliśmy, że wszystkie maszyny uruchamiają się z persistent images, więc przeczytaliśmy docs.opennebula.io\/5.12\/operation\/vm_management\/img_guide.html

więc najpierw możemy z naszej vm wyeksportować obraz:

onevm disk-saveas 74 3 prom.qcow2
ID obrazu: 77

Patrzymy, pod jaką nazwą został zapisany

oneimage show 77
\/var\/lib\/one\/\/datastores\/100\/f9503161fe180658125a9b32433bf6e8
   
A następnie kopiujemy tam, gdzie jest to potrzebne. Oczywiście, to średni sposób. Chciałem tylko pokazać, że korzystając z narzędzi OpenNebula, można budować takie rozwiązania.

Znalazłem również w sieci interesujący wykład i jest jeszcze taki otwarty projekt, ale tu tylko pod magazyn qcow2.

Jak wszyscy wiemy, prędzej czy później nadchodzi moment, gdy chcemy mieć kopie zapasowe przyrostowe. Sprawa się komplikuje i być może zarząd przeznaczy fundusze na płatne rozwiązanie, lub przyjmiemy inny kierunek, rozumiejąc, że tutaj tylko zużywamy zasoby, a rezerwacje powinny być realizowane na poziomie aplikacji poprzez zwiększanie liczby nowych węzłów i maszyn wirtualnych — tak, mówię, że warto korzystać z chmury głównie do uruchamiania klastrów aplikacji, a bazy danych uruchamiać na innej platformie lub korzystać z gotowych rozwiązań od dostawcy, jeśli jest taka możliwość.

4. Wygoda użytkowania

W tym punkcie opiszę problemy, z którymi się spotkałem. Na przykład, jeśli chodzi o obrazy, jak wiemy, istnieją persistent — podczas montowania tego obrazu do VM, wszystkie dane są zapisywane w tym obrazie. A jeśli non-persistent, to obraz jest kopiowany na magazyn, a dane są zapisywane w tym, co zostało skopiowane z oryginalnego obrazu — tak działają szablony. Wiele razy robiłem sobie problemy zapominając wskazać persistent, przez co 200 GB obrazu zostało skopiowane; problem polega na tym, że tego procesu z pewnością nie można anulować, trzeba iść do węzła i zabić bieżący proces „cp”.

Jednym z ważnych minusów jest to, że nie można anulować działań po prostu korzystając z GUI. A właściwie ty je anulujesz, a widzisz, że nic się nie dzieje i znowu uruchamiasz, anulujesz i w rzeczywistości już będą dwa procesy cp, które kopiują obraz.

I tutaj pojmuje się, dlaczego opennebula każdą nową instancję numeruje nowym ID. Na przykład, w proxmoxie stworzono VM z ID 101, usunięto ją, a następnie tworzysz ją ponownie i ID 101. W opennebula tak nie będzie, każda nowa instancja będzie tworzona z nowym ID i w tym jest pewna logika — na przykład, oczyszczenie starych danych lub nieudanych instalacji.

To samo dotyczy magazynów, ta platforma jest w największym stopniu nastawiona na centralne magazyny. Są dodatki do wykorzystania lokalnego, ale w tym przypadku nie o to chodzi. Myślę, że w przyszłości ktoś napisze artykuł o tym, jak udało się używać lokalnych magazynów na węzłach i skutecznie je wykorzystywać w produkcji.

5. Maksymalna prostota

Oczywiście, im dalej idziesz, tym mniej zostaje tych, którzy będą cię rozumieć.

W moim środowisku – 3 węzły z magazynem nfs – wszystko działa prawidłowo. Jednak podczas eksperymentów z wyłączeniem zasilania, na przykład podczas uruchamiania zrzutu i odłączenia zasilania węzła, zachowują się ustawienia w bazie danych dotyczące zrzutu, który de facto nie istnieje (wiemy wszyscy, że początkowo zapisano w bazie SQL tę operację, ale sama akcja nie powiodła się). Dodatkowo, przy tworzeniu zrzutu generowany jest osobny plik i istnieje „rodzic”, więc w przypadku problemów, nawet jeśli GUI nie działa, możemy wziąć plik qcow2 i przywrócić go oddzielnie. docs.opennebula.io/5.8/operation/vm_management/vm_instances.html

Jeśli chodzi o sieci, to niestety nie wszystko jest takie proste. Chociaż przynajmniej łatwiej niż w OpenStack, używałem tylko VLAN (802.1Q) – działa całkiem dobrze, ale jeśli w szablonie sieci zostaną wprowadzone zmiany w ustawieniach, te zmiany nie zastosują się do już działających maszyn, tzn. należy usunąć i dodać kartę sieciową, wówczas nowe ustawienia mogą być zastosowane.

Jeśli jeszcze chcesz porównać z OpenStack, to można powiedzieć, że w OpenNebula nie ma ścisłego określenia, jakie technologie używać do przechowywania danych, zarządzania siecią i zasobami – każdy administrator decyduje sam, co mu pasuje.

6. Dodatkowe wtyczki i instalacje

Jak rozumiemy, platforma chmurowa może zarządzać nie tylko KVM, ale również VMware ESXi. Niestety nie miałem dostępu do VCenter, jeśli ktoś próbował, proszę napisać.

W wsparciu stwierdzono, że inne dostawcy chmur są wspierani docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZURE.

Próbowałem również podłączyć VMware Cloud od Selectela, ale nic z tego nie wyszło – generalnie dałem spokój, ponieważ było zbyt wiele czynników, a pisanie do wsparcia technicznego dostawcy hostingu nie miało sensu.

Obecna wersja posiada także Firecracker – to uruchamianie microVM, coś w rodzaju KVM jako opakowanie nad Dockerem, co daje jeszcze większą uniwersalność, bezpieczeństwo oraz wzrost wydajności, ponieważ nie trzeba marnować zasobów na emulację sprzętu. Widzę tylko zalety w stosunku do Dockera, ponieważ nie zajmuje dodatkowej liczby procesów i nie ma zajętych gniazd przy użyciu tej emulacji, więc można ją spokojnie stosować jako balancer obciążenia (ale może warto napisać o tym osobny artykuł, dopóki nie przeprowadziłem wszystkich testów w pełni).

7. Pozytywne doświadczenia z użyciem i debugowanie błędów

Chciałem podzielić się swoimi spostrzeżeniami na temat pracy, część opisałem powyżej, chciałbym napisać więcej. Rzeczywiście, prawdopodobnie nie jestem jedyną osobą, która na początku myśli, że to nie ta system i w ogóle wszystko tu jest na odwal; jak z tym się w ogóle pracuje? Ale potem przychodzi zrozumienie i okazuje się, że wszystko ma sens. Oczywiście nie wszystkim można dogodzić, a niektóre kwestie wymagają dopracowania.

Na przykład, prosta operacja kopiowania obrazu dysku z jednego datastore na inny. W moim przypadku są 2 węzły z NFS, wysyłam obraz — kopiowanie odbywa się przez frontend OpenNebuli, chociaż wszyscy przyzwyczailiśmy się do tego, że dane powinny być kopiowane bezpośrednio między hostami — w VMware, Hyper-V przywykliśmy do tego, ale tutaj jest inaczej. Tutaj jest inne podejście i inna ideologia, a w wersji 5.12 usunięto przycisk „migrate to datastore” — przenoszona jest tylko maszyna, a nie przechowalnia, ponieważ zakłada się scentralizowane przechowywanie.

Dalej popularny błąd z różnymi przyczynami „Error deploying virtual machine: Could not create domain from /var/lib/one//datastores/103/10/deployment.5”. Poniżej będzie lista rzeczy, które należy sprawdzić.

  • Uprawnienia do obrazu dla użytkownika oneadmin;
  • Uprawnienia dla użytkownika oneadmin do uruchamiania libvirtd;
  • Czy datastore jest prawidłowo zamontowany? Idź i sprawdź ścieżkę na samym węźle, możliwe, że coś przestało działać;
  • Nieprawidłowo skonfigurowana sieć, a właściwie na frontendzie w ustawieniach sieci jest zaznaczone, że jako główny interfejs dla VLAN ustawione jest br0, a na węźle jest zapisane — bridge0 — musi być to samo.

System datastore przechowuje metadane dla twojej VM, jeśli uruchamiasz VM z obrazem persystentnym, to VM musi mieć dostęp do pierwotnie stworzonej konfiguracji na tym przechowywaniu, gdzie tworzyłeś VM — to jest bardzo ważne. Dlatego przy przenoszeniu VM na inny datastore trzeba wszystko dokładnie sprawdzić.

8. Dokumentacja, społeczność. Dalszy rozwój

I reszta, dobra dokumentacja, społeczność i przede wszystkim, aby projekt w przyszłości dalej żył.

Tutaj w ogóle, wszystko jest dość dobrze udokumentowane i nawet w oficjalnym źródle nie będzie trudno zainstalować i znaleźć odpowiedzi na pytania.

Społeczność, aktywna. Publikuje wiele gotowych rozwiązań, które możesz wykorzystać w swoich instalacjach.

Na ten moment w wersji 5.12 zmieniły się niektóre polityki w firmie. forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 Interesujące będzie dowiedzieć się, jak projekt będzie się rozwijał. Na początku wymieniłem kilku dostawców, którzy stosują swoje rozwiązania oraz to, co oferuje branża. Oczywiście nie ma jednoznacznej odpowiedzi, co powinieneś wybrać. Jednak dla małych organizacji utrzymanie swojego małego prywatnego chmury może nie być tak drogie, jak się wydaje. Najważniejsze, aby dokładnie wiedzieć, że tego potrzebujesz.

Podsumowując, niezależnie od tego, co wybierzesz jako system chmurowy, nie należy ograniczać się do jednego produktu. Jeśli masz czas, warto zwrócić uwagę na inne, bardziej otwarte rozwiązania.

Jest dobry czat t.me/opennebula aktywnie pomagają i nie każą szukać rozwiązania problemu w Google. Dołączajcie.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster