Opennebula. Notas cortas





Hola. Este artículo fue escrito para aquellos que todavía se apresuran entre la elección de plataformas de virtualización y después de leer un artículo de la serie "Instalamos proxmox y todo está bien en general, 6 años de tiempo de actividad no es una sola brecha". Pero después de instalar una u otra solución en caja, surge la pregunta, ¿cómo puedo solucionarlo aquí, para que el monitoreo sea más comprensible y aquí, para controlar las copias de seguridad…? Y luego llega el momento y entiendes que quieres algo más funcional, bueno, o quieres que todo quede claro dentro de tu sistema, y ​​no esta caja negra, o quieres usar algo más que un hipervisor y un montón de máquinas virtuales. En este artículo, habrá un poco de reflexión y práctica basada en la plataforma Opennebula, yo la elegí. no exigente en recursos y la arquitectura no es tan complicado.



Y así, como podemos ver, muchos proveedores de nube trabajan en kvm y hacen conexiones externas para controlar las máquinas. Está claro que los grandes hosters escriben sus conexiones para la infraestructura en la nube, el mismo YANDEX por ejemplo. Alguien usa openstack y hace un enlace sobre esta base: SELECTEL, MAIL.RU. Pero si tiene su propio hardware y un pequeño equipo de especialistas, generalmente elige algo entre los listos para usar: VMWARE, HYPER-V, hay licencias gratuitas y pagas, pero ahora esto no se trata de eso. Hablemos de entusiastas: estos son aquellos que no tienen miedo de ofrecer y probar algo nuevo, a pesar de que la empresa ha dejado en claro claramente: “¿Quién servirá esto después de usted?” “¿Luego lo implementaremos en producción? De miedo." Pero después de todo, primero puede aplicar estas soluciones en un banco de pruebas, y si a todos les gusta,entonces puede plantearse la cuestión de un mayor desarrollo y uso en entornos más serios.



También aquí hay un enlace al informe www.youtube.com/watch?v=47Mht_uoX3A de un participante activo en el desarrollo de esta plataforma.



Quizás en este artículo, algo será superfluo y ya estará claro para un especialista experimentado, y en algunos casos no describiré todo, ya que dichos comandos y descripciones están en la red. Esta es solo mi experiencia con esta plataforma. Espero que los participantes activos agreguen en los comentarios qué se podría hacer mejor y qué errores cometí. Todas las acciones se realizaron en un stand para el hogar, compuesto por 3 PC con diferentes características. Además, no especifiqué específicamente cómo funciona este software y cómo instalarlo. No, solo la experiencia de la administración y los problemas que encontré. Quizás a alguien le resulte útil elegir.



Entonces, comencemos. Como administrador del sistema, los siguientes puntos son importantes para mí, sin los cuales difícilmente utilizaré esta solución.



1. Repetibilidad de la instalación



Hay toneladas de instrucciones para instalar Opennebula, por lo que no debería haber ningún problema. De una versión a otra, aparecen nuevas funciones que no siempre se pueden obtener al pasar de una versión a otra.



2. Seguimiento



Monitorizaremos el nodo en sí, kvm y opennebula. Lo bueno ya está ahí. Hay muchas opciones para monitorear hosts linux, el mismo zabbix o exportador de nodos - a quien le guste qué - en el momento lo defino para que el monitoreo de las métricas del sistema (temperatura donde se puede medir, la consistencia de la matriz de discos), a través de zabbix, pero en cuanto a aplicaciones a través del exportador a prometheus. Para monitorear kvm, por ejemplo, puede tomar el proyecto github.com/zhangjianweibj/prometheus-libvirt-exporter.git y poner el lanzamiento a través de systemd, funciona bastante bien y muestra métricas de kvm, también hay un tablero listo para usar grafana.com/grafana/dashboards/12538 .



Por ejemplo, aquí está mi archivo:



/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


Y entonces tenemos 1 exportador, necesitamos un segundo para monitorear el opennebula en sí, utilicé este github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter



Puede agregar lo siguiente a un node_exporter regular para monitorear el sistema.



En el archivo de node_exporter, cambie el inicio de esta manera:



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


Cree un directorio mkdir -p / var / lib / opennebula_exporter



bash script presentado anteriormente, primero verifique el trabajo a través de la consola, si muestra lo que se necesita (si da un error, luego coloque xmlstarlet), cópielo en /usr/local/bin/opennebula_exporter.sh



Agregar a Tarea CZK por cada minuto:



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




Las métricas comenzaron a aparecer, puedes recogerlas con un prometheus y construir gráficos y hacer alertas. Por ejemplo, puede dibujar un tablero tan simple en grafan.







(puedes ver que aquí hice overcommit cpu, ram)



Para aquellos que aman y usan zabbiks, existe github.com/OpenNebula/addon-zabbix



Monitoreando todo, lo principal es eso. Eso sí, puedes, además, utilizar las herramientas de monitorización integradas para máquinas virtuales y subir datos a facturación, aquí cada uno tiene su propia visión, hasta que se acercó más a ella.



Todavía no he comenzado a registrar. La opción más sencilla es agregar td-agent para analizar el directorio / var / lib / one con expresiones regulares. Por ejemplo, el archivo sunstone.log es adecuado para regexp nginx y otros archivos que muestran el historial de llamadas a la plataforma. ¿Cuál es la ventaja? Bueno, por ejemplo, podemos rastrear explícitamente el número de "Error, error" y rastrear rápidamente dónde y en qué nivel hay un mal funcionamiento.



3. Copias de seguridad



También hay proyectos dopados de pago, por ejemplo, sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon: OpenNebula_Backup. Aquí debemos entender que simplemente hacer una copia de seguridad de la imagen de la máquina, en este caso, no es en absoluto lo mismo, porque nuestras máquinas virtuales deben funcionar con una integración completa (el mismo contexto de archivo, que describe la configuración de red, el nombre de la máquina virtual y la configuración personalizada para sus aplicaciones). Por lo tanto, aquí decidimos qué y cómo respaldaremos. En algunos casos, es mejor hacer copias de lo que está en la propia máquina virtual. Y tal vez solo necesite hacer una copia de seguridad de un disco de esta máquina.



Por ejemplo, decidimos que todas las máquinas se inician con imágenes persistentes, por lo tanto, después de leer docs.opennebula.io/5.12/operation/vm_management/img_guide.html,



significa que primero podemos descargar la imagen de nuestra máquina virtual :



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

,     

oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
   
     . ,   .   ,    opennebula    .




También en la inmensidad de la red encontré un informe interesante y también hay un proyecto abierto , pero aquí solo para el almacenamiento qcow2.



Pero como todos sabemos, tarde o temprano llega un momento en el que queremos copias de seguridad incrementales, aquí es más difícil y tal vez la administración asigne dinero para una solución paga, o vaya al otro lado y entienda que aquí solo estamos cortando recursos y haciendo redundancia a nivel de aplicación y agregar una serie de nuevos nodos y máquinas virtuales: sí, aquí, digo que usar la nube es simplemente para lanzar clústeres de aplicaciones y ejecutar la base de datos en otra plataforma o tomar una ya preparada del proveedor, si es posible.



4. Facilidad de uso



En este párrafo, describiré los problemas que encontré. Por ejemplo, por imágenes, como sabemos, es persistente: cuando esta imagen se monta en vm, todos los datos se escriben en esta imagen. Y si no es persistente, la imagen se copia en el almacenamiento y los datos se escriben en lo que se copió de la imagen original; así es como funcionan las plantillas de plantilla. En repetidas ocasiones se hacía problemas a sí mismo que se olvidó de especificar persistente y se copió la imagen de 200 GB, el problema es que seguro que este procedimiento no se puede cancelar, hay que ir al nodo y clavar el proceso "cp" actual.



Uno de los inconvenientes importantes es que no se pueden deshacer acciones simplemente usando la interfaz gráfica de usuario. Más bien, los cancelas y ves que no pasa nada y comienzas de nuevo, cancelas y de hecho ya habrá 2 procesos cp que copien la imagen.



Y luego se trata de entender por qué opennebula cada nueva instancia está numerada con una nueva identificación, por ejemplo, en el mismo proxmox creó una máquina virtual con la identificación 101, la eliminó, luego crea nuevamente la identificación 101. En opennebula, esto no sucederá, cada nueva instancia será creada con una nueva identificación esto tiene su propia lógica, por ejemplo, borrar datos antiguos o instalaciones fallidas.



Lo mismo ocurre con el almacenamiento, sobre todo esta plataforma está dirigida al almacenamiento centralizado. Hay complementos para usar local, pero en este caso, no se trata de eso. Creo que en el futuro alguien escribirá un artículo sobre cómo fue posible usar el almacenamiento local en los nodos y usarlo con éxito en producción.



5. Máxima simplicidad



Por supuesto, cuanto más se vaya, menos personas lo entenderán.



En las condiciones de mi stand, 3 nodos con almacenamiento nfs, todo funciona bien. Pero si realizamos experimentos para apagar la energía, entonces, por ejemplo, al iniciar una instantánea y apagar la energía del nodo, guardamos la configuración en la base de datos, que es una instantánea, pero de hecho no lo es (bueno, todos entendemos que originalmente escribimos la base de datos sobre esta acción en sql , pero la operación en sí no tuvo éxito). La ventaja es que al crear una instantánea, se forma un archivo separado y hay un "padre", por lo tanto, en caso de problemas e incluso si no funciona a través de la interfaz gráfica de usuario, podemos recoger el archivo qcow2 y recuperar por separado docs.opennebula.io/5.8/operation/vm_management/vm_instances .html



Desafortunadamente, no todo es tan simple en las redes. Bueno, al menos es más fácil que en openstack, usé solo vlan (802.1Q); funciona bien, pero si realiza cambios en la configuración de la red de plantilla, esta configuración no se aplicará en las máquinas que ya están en ejecución, es decir, debe eliminar y agregar la red map, luego se aplica la nueva configuración.



Si aún desea comparar con openstack, entonces podemos decirlo, en opennebula no hay una definición clara de qué tecnologías usar para almacenar datos, administrar una red, recursos; cada administrador decide por sí mismo cómo se siente más cómodo.



6. Complementos e instalaciones adicionales



Después de todo, según entendemos, la plataforma en la nube puede administrar no solo kvm, sino también vmware esxi. Desafortunadamente, no tenía un grupo con Vcenter, si alguien intentó escribir.



Compatible con otros proveedores de nube docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html

AWS, AZURE .



También intenté atornillar Vmware Cloud desde el selector, pero nada funcionó; en general, puntué porque hay muchos factores y no tiene sentido escribir al soporte técnico del proveedor de alojamiento.



Además, ahora en la nueva versión hay un petardo: este es el lanzamiento de microvm, como el enlace kvm sobre docker, que brinda aún más versatilidad, seguridad y mayor rendimiento, ya que no hay necesidad de gastar recursos en emular hardware. Solo veo una ventaja en relación con la ventana acoplable en que no toma una cantidad adicional de procesos y no hay sockets ocupados cuando se usa esta emulación, es decir es muy posible usarlo como un equilibrador de carga (pero probablemente valga la pena escribir un artículo aparte al respecto, hasta que haya completado todas las pruebas al máximo).



7. Experiencia positiva de uso y depuración de errores



Quería compartir mis observaciones sobre el trabajo, describí una parte arriba, quiero escribir más. De hecho, probablemente no soy el único que al principio piensa que este no es el sistema correcto y, en general, aquí todo son muletas. ¿Cómo funcionan en general con esto? Pero luego llega la comprensión y que todo es bastante lógico. Por supuesto que no para agradar a todos y algunos puntos requieren mejoras.



Por ejemplo, una operación simple para copiar una imagen de disco de un almacén de datos a otro. En mi caso, hay 2 nodos con nfs, envío la imagen - la copia pasa por el frontend opennebula, aunque todos estamos acostumbrados al hecho de que los datos deben copiarse directamente entre hosts - en el mismo vmware, hyper-v estamos acostumbrados a esto, pero aquí por a otro. Aquí hay un enfoque diferente y una ideología diferente, y en la versión 5.12 se eliminó el botón "migrar al almacén de datos"; solo se transfiere la máquina en sí, pero no el almacenamiento. significa almacenamiento centralizado.



Luego hay un error popular con varias razones "Error al implementar la máquina virtual: No se pudo crear el dominio desde /var/lib/one//datastores/103/10/deployment.5" A continuación se muestra la parte superior que debe mirar.



  • Derechos de imagen para el usuario de oneadmin;
  • Derechos del usuario oneadmin para ejecutar libvirtd;
  • datastore? , ;
  • , frontend , vlan br0, — bridge0 — .


El almacén de datos del sistema almacena metadatos para su máquina virtual, si inicia la máquina virtual con una imagen persistente, entonces la máquina virtual debe tener acceso a la configuración creada originalmente en el almacenamiento donde creó la máquina virtual; esto es muy importante. Por lo tanto, al transferir VM a otro almacén de datos, se debe volver a verificar todo.



8. Documentación, comunidad. Más desarrollo



Y el resto, buena documentación, comunidad y lo más importante que el proyecto siga vivo en el futuro.



Aquí, en general, todo está bastante bien documentado e incluso según la fuente oficial no será difícil establecer y encontrar respuestas a preguntas.



Comunidad activa. Publica muchas soluciones listas para usar que puede utilizar en sus instalaciones.



Por el momento, algunas políticas de la empresa han cambiado desde el 5.12.forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 será interesante saber cómo se desarrollará el proyecto. Al principio, señalé específicamente algunos de los proveedores que utilizan sus soluciones y lo que ofrece la industria. Por supuesto, no hay una respuesta clara sobre qué usar. Pero para las organizaciones pequeñas, mantener su pequeña nube privada puede no ser tan caro como parece. Lo principal es saber exactamente qué lo necesitas.



Como resultado, no importa lo que elija como sistema en la nube, no debe detenerse en un solo producto. Si tiene tiempo, vale la pena buscar otras soluciones de código abierto.



Hay un buen chat t.me/opennebula que ayuda activamente y no envía a buscar una solución al problema en Google. Únete a nosotros.



All Articles