nebulosa aperta. Brevi note

nebulosa aperta. Brevi note

Ciao a tutti. Questo articolo è stato scritto per coloro che sono ancora indecisi tra la scelta delle piattaforme di virtualizzazione e dopo aver letto l'articolo della serie "Abbiamo installato proxmox e in generale va tutto bene, 6 anni di operatività senza una sola interruzione". Ma dopo aver installato l'una o l'altra soluzione pronta all'uso, sorge la domanda: come posso correggere questo qui, in modo che il monitoraggio sia più comprensibile, e qui, per controllare i backup…. E poi arriva il momento e ti rendi conto che vuoi qualcosa di più funzionale, o vuoi che tutto all'interno del tuo sistema diventi chiaro, e non questa scatola nera, o vuoi usare qualcosa di più di un hypervisor e un mucchio di macchine virtuali. Questo articolo conterrà alcuni pensieri e pratiche basati sulla piattaforma Opennebula: l'ho scelto perché. non è impegnativo in termini di risorse e l'architettura non è così complessa.

E così, come vediamo, molti fornitori di servizi cloud lavorano su KVM e stabiliscono connessioni esterne per controllare le macchine. È chiaro che i grandi hoster scrivono i propri framework per l'infrastruttura cloud, ad esempio lo stesso YANDEX. Qualcuno usa OpenStack e stabilisce una connessione su questa base: SELECTEL, MAIL.RU. Ma se hai il tuo hardware e un piccolo staff di specialisti, di solito scegli qualcosa di già pronto: VMWARE, HYPER-V, ci sono licenze gratuite e a pagamento, ma non è di questo che stiamo parlando ora. Parliamo di appassionati: sono coloro che non hanno paura di offrire e provare qualcosa di nuovo, nonostante il fatto che l'azienda abbia chiaramente chiarito: "Chi si occuperà di questo dopo di te?", "Lo metteremo in produzione più tardi?" ? Allarmante." Ma puoi prima applicare queste soluzioni su un banco di prova e, se a tutti piace, puoi sollevare la questione dell'ulteriore sviluppo e utilizzo in ambienti più seri.

Anche qui c'è il link al rapporto www.youtube.com/watch?v=47Mht_uoX3A da un partecipante attivo allo sviluppo di questa piattaforma.

Forse in questo articolo qualcosa sarà superfluo e già comprensibile a uno specialista esperto, e in alcuni casi non descriverò tutto perché comandi e descrizioni simili sono disponibili su Internet. Questa è solo la mia esperienza con questa piattaforma. Spero che i partecipanti attivi aggiungano nei commenti cosa si potrebbe fare meglio e quali errori ho commesso. Tutte le azioni si sono svolte in uno stand domestico composto da 3 PC con caratteristiche diverse. Inoltre, non ho specificatamente indicato come funziona questo software e come installarlo. No, solo l'esperienza amministrativa e i problemi che ho riscontrato. Forse questo sarà utile a qualcuno nella sua scelta.

Quindi iniziamo. In qualità di amministratore di sistema, per me sono importanti i seguenti punti, senza i quali difficilmente utilizzerei questa soluzione.

1. Ripetibilità dell'installazione

Ci sono molte istruzioni per l'installazione di opennebula, non dovrebbero esserci problemi. Di versione in versione compaiono nuove funzionalità che non sempre funzioneranno quando si passa da una versione all'altra.

2. Monitoraggio

Monitoreremo il nodo stesso, kvm e opennebula. Per fortuna è già pronto. Ci sono molte opzioni per il monitoraggio degli host Linux, lo stesso Zabbix o l'esportatore di nodi - a chi piace di più - al momento lo definisco come monitoraggio delle metriche del sistema (temperatura dove può essere misurata, coerenza dell'array di dischi), tramite zabbix , e per quanto riguarda le domande tramite l'esportatore Prometheus. Per il monitoraggio KVM, ad esempio, puoi prendere il progetto github.com/zhangjianweibj/prometheus-libvirt-exporter.git e impostalo per l'esecuzione tramite systemd, funziona abbastanza bene e mostra le metriche kvm, c'è anche una dashboard già pronta grafana.com/grafana/dashboards/12538.

Ad esempio, ecco il mio file:

/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

E quindi abbiamo 1 esportatore, ne abbiamo bisogno di un secondo per monitorare Opennebula stessa, ho usato questo github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter

Può essere aggiunto al normale nodo_esportatore per monitorare il sistema quanto segue.

Nel file node_exporter cambiamo l'inizio in questo modo:

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

Crea una directory mkdir -p /var/lib/opennebula_exporter

bash presentato sopra, prima controlliamo il lavoro tramite la console, se mostra ciò di cui abbiamo bisogno (se dà un errore, installa xmlstarlet), copialo in /usr/local/bin/opennebula_exporter.sh

Aggiungi un'attività cron per ogni minuto:

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

Cominciarono ad apparire le metriche, puoi prenderle come un prometeo e costruire grafici e creare avvisi. In Grafana puoi disegnare, ad esempio, una dashboard così semplice.

nebulosa aperta. Brevi note

(è chiaro che qui overcommit CPU, ram)

Per chi ama e usa Zabbix, c'è github.com/OpenNebula/addon-zabbix

Per quanto riguarda il monitoraggio, l’importante è che ci sia. Naturalmente, puoi inoltre utilizzare gli strumenti integrati di monitoraggio della macchina virtuale e caricare i dati nella fatturazione, qui ognuno ha la propria visione, non ho ancora iniziato a lavorarci più da vicino.

Non ho ancora iniziato a registrare. L'opzione più semplice è aggiungere td-agent per analizzare la directory /var/lib/one con le espressioni regolari. Ad esempio, il file sunstone.log corrisponde all'regexp nginx e ad altri file che mostrano la cronologia degli accessi alla piattaforma: qual è il vantaggio di questo? Ebbene, ad esempio, possiamo tracciare esplicitamente il numero di “Errore, errore” e tracciare rapidamente dove e a quale livello si verifica un malfunzionamento.

3. Backup

Ci sono anche progetti completati pagati, ad esempio sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon:OpenNebula_Backup. Qui dobbiamo capire che il semplice backup dell'immagine di una macchina non è affatto la stessa cosa in questo caso, perché le nostre macchine virtuali devono funzionare con piena integrazione (lo stesso file di contesto che descrive le impostazioni di rete, il nome della macchina virtuale e le impostazioni personalizzate per le vostre applicazioni) . Pertanto, qui decidiamo cosa e come eseguire il backup. In alcuni casi è meglio fare delle copie di quanto presente nella VM stessa. E forse hai solo bisogno di eseguire il backup di un disco da una determinata macchina.

Ad esempio, abbiamo stabilito che tutte le macchine si avviano con immagini persistenti, quindi, dopo la lettura docs.opennebula.io/5.12/Operation/vm_management/img_guide.html

Ciò significa che prima possiamo caricare l'immagine dalla nostra VM:

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

Смотрим, под каким именем он сохранился

oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
   
И далее копируем куда нам необходимо. Конечно, так себе способ. Просто хотел показать, что используя инструменты opennebula можно строить подобные решения.

Ho trovato anche su Internet relazione interessante e c'è di più un progetto così aperto, ma è disponibile solo spazio di archiviazione per qcow2.

Ma come tutti sappiamo, prima o poi arriva il momento in cui vuoi backup incrementali, qui è più difficile e forse la direzione stanzierà soldi per una soluzione a pagamento, oppure andrà dall'altra parte e capirà che qui stiamo solo tagliando risorse, ed eseguire backup a livello di applicazione e aggiungere una serie di nuovi nodi e macchine virtuali - sì, qui, sto dicendo che utilizzare il cloud esclusivamente per avviare cluster di applicazioni e avviare il database su un'altra piattaforma o prenderne una già pronta dal fornitore, se possibile.

4. Facilità d'uso

In questo paragrafo descriverò i problemi che ho riscontrato. Ad esempio, secondo le immagini, come sappiamo, esiste una persistente: quando questa immagine viene montata su una macchina virtuale, tutti i dati vengono scritti su questa immagine. E se non persistente, l'immagine viene copiata nell'archivio e i dati vengono scritti in ciò che è stato copiato dall'immagine di origine: ecco come funzionano i modelli di modello. Mi sono più volte causato problemi dimenticandomi di specificare persistent e l'immagine da 200 GB è stata copiata, il problema è che questa procedura non si può certo annullare, bisogna andare sul nodo e killare il processo “cp” attuale.

Uno degli svantaggi importanti è che non è possibile annullare le azioni semplicemente utilizzando la GUI. O meglio, li cancellerai e vedrai che non succede nulla e li ricomincerai, li cancellerai e infatti ci saranno già 2 processi cp che copiano l'immagine.

E poi si tratta di capire perché opennebula numera ogni nuova istanza con un nuovo id, ad esempio, nello stesso proxmox ha creato una VM con id 101, l'ha cancellata, poi la crei di nuovo e con id 101. In opennebula questo non accadrà, ogni nuova istanza verrà creata con un nuovo ID e questo ha una sua logica, ad esempio cancellando vecchi dati o installazioni non riuscite.

Lo stesso vale per lo storage; soprattutto, questa piattaforma è finalizzata allo storage centralizzato. Esistono componenti aggiuntivi per l'utilizzo in locale, ma non è di questo che stiamo parlando in questo caso. Penso che in futuro qualcuno scriverà un articolo su come è riuscito a utilizzare l'archiviazione locale sui nodi e ad utilizzarla con successo in produzione.

5. Massima semplicità

Naturalmente, più vai avanti, meno diventeranno coloro che ti capiranno.

Nelle condizioni del mio stand - 3 nodi con memoria nfs - tutto funziona bene. Ma se conduciamo esperimenti che comportano un'interruzione di corrente, ad esempio, quando eseguiamo uno snapshot e spegniamo l'alimentazione del nodo, salviamo le impostazioni nel database secondo cui esiste uno snapshot, ma in realtà non ce n'è (beh, capiamo tutti che noi inizialmente ha scritto il database su questa azione in sql , ma l'operazione stessa non ha avuto successo). Il vantaggio è che quando si crea uno snapshot si forma un file separato e c'è un “genitore”, quindi in caso di problemi e anche se non funziona tramite gui, possiamo prendere il file qcow2 e ripristinarlo separatamente docs.opennebula.io/5.8/Operation/vm_management/vm_instances.html

Sulle reti, purtroppo, non tutto è così semplice. Beh, almeno è più semplice che in OpenStack, ho usato solo vlan (802.1Q): funziona abbastanza bene, ma se apporti modifiche alle impostazioni dalla rete del modello, queste impostazioni non verranno applicate alle macchine già in esecuzione, ad es. è necessario eliminare e aggiungere una scheda di rete, quindi verranno applicate le nuove impostazioni.

Se vuoi confrontarlo anche con openstack, allora puoi dire questo: in opennebula non esiste una definizione chiara di quali tecnologie utilizzare per archiviare dati, gestire la rete, risorse: ogni amministratore decide da solo cosa è più conveniente per lui.

6. Plugin e installazioni aggiuntivi

Dopotutto, per come lo intendiamo noi, la piattaforma cloud può gestire non solo kvm, ma anche vmware esxi. Purtroppo non avevo una piscina con Vcenter, se qualcuno ha provato scriva.

Viene dichiarato il supporto per altri fornitori di servizi cloud docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZZURRO.

Ho anche provato a connettere Vmware Cloud da Selectel, ma non ha funzionato: in generale è stato bloccato perché ci sono molti fattori e non ha senso scrivere al supporto tecnico del provider di hosting.

Inoltre, ora la nuova versione ha il petardo: si tratta del lancio di microvm, un tipo di cablaggio kvm su docker, che offre ancora più versatilità, sicurezza e maggiore produttività perché non è necessario sprecare risorse nell'emulazione delle apparecchiature. L'unico vantaggio che vedo rispetto a Docker è che non occupa un numero aggiuntivo di processi e non ci sono socket occupati quando si utilizza questa emulazione, ad es. È del tutto possibile usarlo come bilanciatore del carico (ma probabilmente vale la pena scrivere un articolo separato su questo argomento finché non avrò eseguito tutti i test).

7. Esperienza positiva di utilizzo e debugging degli errori

Volevo condividere le mie osservazioni sull'opera, ne ho descritte alcune sopra, vorrei scrivere di più. In effetti, probabilmente non sono l'unico a pensare all'inizio che questo non sia il sistema giusto e in generale qui tutto è una stampella: come funzionano con questo? Ma poi arriva la comprensione che tutto è abbastanza logico. Certo, non si può accontentare tutti e alcuni aspetti necessitano di miglioramenti.

Ad esempio, una semplice operazione di copia di un'immagine disco da un archivio dati a un altro. Nel mio caso, ci sono 2 nodi con nfs, invio l'immagine - la copia avviene tramite il frontend opennebula, anche se siamo tutti abituati al fatto che i dati dovrebbero essere copiati direttamente tra host - nello stesso vmware, hyper-v siamo abituato a questo, ma qui a un altro. C'è un approccio diverso e un'ideologia diversa e nella versione 5.12 è stato rimosso il pulsante "migra al datastore": viene trasferita solo la macchina stessa, ma non lo spazio di archiviazione perché significa deposito centralizzato.

Il prossimo è un errore popolare con vari motivi: "Errore durante la distribuzione della macchina virtuale: impossibile creare il dominio da /var/lib/one//datastores/103/10/deployment.5" Di seguito è riportata la cosa principale da guardare.

  • Diritti di immagine per l'utente oneadmin;
  • Autorizzazioni per l'utente oneadmin per eseguire libvirtd;
  • Il datastore è montato correttamente? Andate a controllare il percorso sul nodo stesso, forse è caduto qualcosa;
  • Rete configurata in modo errato, o meglio sul frontend è nelle impostazioni di rete che l'interfaccia principale per vlan è br0, ma sul nodo è scritta come bridge0 - deve essere la stessa.

Il datastore di sistema memorizza i metadati per la tua macchina virtuale, se esegui la macchina virtuale con un'immagine persistente, la macchina virtuale deve avere accesso alla configurazione creata inizialmente sullo spazio di archiviazione in cui hai creato la macchina virtuale: questo è molto importante. Pertanto, quando si trasferisce una macchina virtuale in un altro archivio dati, è necessario ricontrollare tutto.

8. Documentazione, comunità. Ulteriori sviluppi

E il resto, buona documentazione, comunità e, soprattutto, che il progetto continui a vivere nel futuro.

In generale, tutto è abbastanza ben documentato e anche utilizzando una fonte ufficiale non sarà un problema installarlo e trovare risposte alle domande.

Comunità, attiva. Pubblica molte soluzioni già pronte che puoi utilizzare nelle tue installazioni.

Al momento, alcune politiche dell'azienda sono cambiate dal 5.12 forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 Sarà interessante vedere come si svilupperà il progetto. All'inizio ho indicato specificamente alcuni dei fornitori che utilizzano le loro soluzioni e ciò che offre il settore. Naturalmente non c’è una risposta chiara su cosa usare. Ma per le organizzazioni più piccole, mantenere il proprio piccolo cloud privato potrebbe non essere così costoso come sembra. La cosa principale è sapere esattamente di cosa hai bisogno.

Di conseguenza, indipendentemente da ciò che scegli come sistema cloud, non dovresti fermarti a un solo prodotto. Se hai tempo, vale la pena dare un'occhiata ad altre soluzioni più aperte.

C'è una bella chiacchierata t.me/opennebula Aiutano attivamente e non ti mandano a cercare una soluzione al problema su Google. Unisciti a noi.

Fonte: habr.com

Aggiungi un commento