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
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
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
Può essere aggiunto al normale
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.
(è chiaro che qui overcommit CPU, ram)
Per chi ama e usa Zabbix, c'è
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
Ad esempio, abbiamo stabilito che tutte le macchine si avviano con immagini persistenti, quindi, dopo la lettura
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
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
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
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
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
Fonte: habr.com