servicio informático open stack-Nove

1. Servicio de informática Nove

  • El servicio de computación es uno de los servicios centrales de open stack, responsable de mantener y administrar los recursos de computación del entorno de la nube, se denomina en código nova en el proyecto de pila abierta.
  • Nova en sí no proporciona ninguna capacidad de virtualización, sino que proporciona servicios informáticos y utiliza diferentes controladores de virtualización para interactuar con el hipervisor subyacente (administrador de máquina virtual). Todas las instancias informáticas (servidores virtuales) son administradas por Nove para la programación del ciclo de vida (iniciar, suspender, detener, eliminar, etc.)
  • Nova necesita el soporte de otros servicios como keystone, look, neutron, cinder y swift, y puede integrarse con estos servicios para implementar discos encriptados e instancias de computación bare metal.

2. Arquitectura del sistema Nova

Inserte la descripción de la imagen aquí

  • Nova se compone de múltiples procesos de servidor, cada uno de los cuales realiza diferentes funciones.
  • DB: base de datos SQL para almacenamiento de datos
  • API: componentes de Nova que se utilizan para recibir solicitudes HTTP, convertir comandos y comunicarse con otros componentes a través de colas de mensajes o HTTP.
  • Programador: el programador nova que se utiliza para determinar qué nodo informático lleva la instancia informática.
  • Red: el componente de red nova que administra el reenvío de IP, puentes o redes de área local virtual.
  • Computación: el componente nova que administra la comunicación entre el administrador de la máquina virtual y la máquina virtual.
  • Conductor: Maneje solicitudes que requieran coordinación (construya una máquina virtual o ajuste el tamaño de una máquina virtual) o maneje la conversión de objetos.

Tres, introducción del componente Nova

1.API

  • API es la interfaz http para que los clientes accedan a nova. Está implementada por el servicio nova-api. El servicio nova-api recibe y responde a las solicitudes de API de computación de los usuarios finales. Como interfaz principal de los servicios externos de openstack, nova-api proporciona un punto final centralizado que puede consultar todas las apis.
  • Todas las solicitudes a nova son procesadas primero por nova-api. La API proporciona un servicio de llamadas estándar REST, que es conveniente para la integración con sistemas de terceros.
  • Los usuarios finales no enviarán solicitudes de API RESTful directamente, sino que utilizarán estas API a través de la línea de comandos de pila abierta, el tablero de instrumentos y otros componentes que deben intercambiarse con nova.
  • Siempre que las operaciones relacionadas con el ciclo de vida de la máquina virtual, nova-api pueda responder.
  • Nova-api realiza el siguiente procesamiento en la solicitud HTTP API recibida:
1.检查客户端传入的参数是否合法有效
2.调用nova其他服务来处理客户端HTTP请求
3.格式化nova其他子服务返回结果并返回给客户端
  • Nova-api es la única forma de acceder externamente y utilizar varios servicios proporcionados por Nova, y también es la capa intermedia entre el cliente y Nova.

2 programador

  • El planificador se puede traducir en un planificador, que es implementado por el servicio nova-planificador y resuelve principalmente el problema de cómo elegir en qué nodo informático iniciar una instancia. Puede aplicar una variedad de reglas. Si considera el uso de la memoria, la tasa de carga de la CPU, la arquitectura de la CPU (inte / amd) y otros factores, de acuerdo con un algoritmo determinado, determine en qué servidor informático se puede ejecutar la instancia de la máquina virtual. El servicio nova-Scheduler recibe una solicitud de una instancia de máquina virtual de la cola y crea una nueva instancia de máquina virtual leyendo el contenido de la base de datos y seleccionando el nodo informático más adecuado del grupo de recursos disponibles.
  • Al crear una instancia de máquina virtual, el usuario propondrá requisitos de recursos, como cuánta CPU, memoria y disco se necesitan. La pila abierta define estos requisitos en tipos de tipo, y los usuarios solo necesitan especificar qué tipo de instancia usar.

Tipo de planificador

  • Programador aleatorio (programador aleatorio): seleccione aleatoriamente entre todos los nodos que normalmente ejecutan el servicio nova-compute.
  • Programador de filtros (programador de filtros): seleccione el mejor nodo informático de acuerdo con las condiciones y pesos de filtro especificados. filtro también se llama filtro.
  • Programador de almacenamiento en caché: se puede considerar como un tipo especial de programador aleatorio. Sobre la base de la programación aleatoria, la información de recursos del host se almacena en caché en la memoria local y luego el último host se obtiene periódicamente de la base de datos a través de la tarea de temporización en segundo plano. Información de recursos .

Filtrar el proceso de programación del planificador

  • Se divide principalmente en dos etapas:
    1. Seleccione el nodo de computación que cumpla con las condiciones a través del filtro especificado. Por ejemplo, la tasa de uso de memoria es menor al 50%, y se pueden usar múltiples filtros para filtrar a su vez.
    2. Ordene la lista de hosts filtrados por cálculo de peso y seleccione el nodo informático óptimo para crear una instancia de máquina virtual.
预选:选择出符合条件的并进行打分
优选:以分数*权重的方式得出最后的总分排序,最后择优选择

Programador y base de datos DB

  • El componente del programador determina en qué nodo informático se implementa la instancia de la máquina virtual y programa. Antes de programar, primero obtendrá información de recursos del host de la base de datos como base;
  • Después de eso, se puede seleccionar la programación de nodo más adecuada a través de filtros y pesos, o se puede programar directamente el nodo designado;
  • La herramienta libvirt del nodo informático es responsable de recopilar los recursos virtualizados de la máquina host, volver a contar los recursos según las instancias creadas y actualizar la información del recurso en la base de datos. Todo el proceso de actualización de la información del recurso se realiza periódicamente , no en tiempo real;
  • Entonces, hay un problema. Cuando se acaba de crear una instancia y luego debe crearse nuevamente, la base de datos no tendrá tiempo para actualizar el último estado del host en el futuro, entonces la información basada en el programador es incorrecta y Es posible que los recursos del nodo seleccionado no sean suficientes y provoquen un error en la programación.
  • Esto también es un defecto del programador de caché, que no puede obtener información en tiempo real sobre los recursos de host alquilados. Cuando se completa la programación, podemos devolver directamente la información del recurso a la base de datos, actualizar el estado de la base de datos y resolver este problema.

Inserte la descripción de la imagen aquí

filtrar

  • Cuando el filtro necesita realizar una operación de programación, hará que el filtro juzgue el nodo informático y devuelva True o Flase.
  • La opción schedule_available_filters se utiliza para configurar los filtros disponibles. De forma predeterminada, todos los filtros propios de Nova se pueden utilizar para filtrar.
Scheduler_avaliable_filters = nova.scheduler.filters.all_filters
  • También hay una opción Scheduler_default_filters para especificar que el servicio nova-Scheduler realmente usa filtros, el valor predeterminado es el siguiente
Scheduler_default_filters = RetryFilters,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter

RetryFilter (filtro de nuevo juicio)

  • La función principal es filtrar los nodos que se han programado anteriormente. Por ejemplo, A, B y C han pasado el filtrado y A tiene el mayor peso y está seleccionado para realizar la operación. Por alguna razón, la operación falla en A. Nove-filter volverá a ejecutar la operación de filtrado, luego A será directamente excluido por Retry-Filter para evitar fallas nuevamente.

AvailabilityZoneFilter (filtro de zona de disponibilidad)

  • Para mejorar la tolerancia a desastres y proporcionar servicios de aislamiento, los nodos informáticos se pueden dividir en diferentes áreas disponibles. Openstack tiene un área disponible denominada nove de forma predeterminada, y todos los nodos informáticos se colocan inicialmente en el área nove. Los usuarios pueden crear un área disponible propia según sus necesidades. Al crear una instancia, debe especificar en qué zona de disponibilidad se implementará la instancia. Cuando el programador Nove realiza operaciones de filtrado, utilizará AvailabilityZoneFilter para filtrar los nodos informáticos que no pertenecen a la zona de disponibilidad especificada.

RamFilter (filtro de memoria)

  • Programe la creación de máquinas virtuales en función de la memoria disponible para filtrar los nodos informáticos que no pueden cumplir con los requisitos de memoria del tipo de instancia. Sin embargo, para mejorar la utilización de los recursos del sistema, Openstack permite que la memoria disponible del nodo informático excede el tamaño real de la memoria, y el grado de exceso es a través de nova Controlado por el parámetro ram_allocation en el archivo de configuración .con, el valor predeterminado es 1.5.
vi /etc/nova/nova.conf
Ram allocation ratio=1.5

DisFilter (programador de disco duro)

  • Programe la creación de máquinas virtuales en función del espacio en disco y filtre los nodos informáticos que no pueden cumplir con el tipo de requisitos de disco. Los discos también pueden tener un tamaño excesivo, y el valor de tamaño excesivo se puede controlar mediante el parámetro disk_allication_ratio en nova.conf. El valor predeterminado es 1.0
vi /etc/nova/nova.conf
disk_allocation_ratio=1.0

CoreFilter (filtro de núcleo)

  • Programe la creación de máquinas virtuales en función de los núcleos de CPU disponibles y filtre los nodos informáticos que no pueden cumplir con los requisitos de vCPU del tipo de instancia. La vCPU también puede tener una suscripción excesiva. El valor de la suscripción excesiva se controla mediante la modificación del parámetro cpu_ allocation_ratio en nova.conf. El valor predeterminado es 16.
Vi /etc/nova/nova. conf
cpu_allocation_ ratio=16.0

ComputeFilter (filtro de cálculo)

  • Se garantiza que solo los nodos informáticos cuyo servicio Nova-compute funciona normalmente pueden ser programados por nova-planificador, que es un filtro obligatorio.

ComputeCapablilityFilter (Filtro de capacidad de cómputo)

  • Filtra según las características de los nodos informáticos, como x86_64 y diferentes nodos de la arquitectura ARM.

ImagePropertiesFilter (Filtro de propiedades de imagen)

  • Filtre los nodos de computación coincidentes en función de los atributos del espejo seleccionado. Especifique sus atributos a través de metadatos. Si desea que la imagen solo se ejecute en el hipervisor KVM, puede especificarla mediante el atributo Tipo de hipervisor.

El programador de filtros filtrará en el orden de la lista.

  • ServerGroupAntiAffinityFilter (filtro de antiafinidad del grupo de servidores) requiere que las instancias se distribuyan a diferentes nodos tanto como sea posible. Por ejemplo, hay 3 instancias s1, s2, s3 y 3 nodos de computación A, B y C. Las operaciones específicas son las siguientes:
创建一个anti-affinit策略的服务器组
openstack server group create-policy anti-affinity group-1  

Pesos

  • Al filtrar los nodos informáticos, se filtran varios filtros en secuencia, en lugar de en paralelo, lo que equivale a preseleccionar uno por uno, evitando inspecciones repetidas de todos los elementos de filtro en el mismo nodo. Los nodos filtrados se ordenan calculando pesos.
  • Todos los pesos se encuentran en el directorio nova / planificador / pesos. El valor predeterminado actual es RAMweighter. El peso se calcula de acuerdo con la memoria libre del nodo de computación. Cuanta más memoria hay, mayor es el peso, y los nodos de computación están ordenados según la memoria libre.

Resumen del componente del programador

  • Posicionamiento: decida en qué nodo de cálculo se creará la instancia
  • Proceso de programación:
    hay varios programadores y filtros trabajando juntos. Un filtro primero selecciona los nodos que cumplen con los requisitos. Luego, los nodos se califican y se clasifican por peso (generalmente en función de la memoria libre), y finalmente se determina un nodo.
  • Subfunciones:
    filtrado aproximado (recursos básicos), como CPU, memoria, disco,
    filtrado refinado, como atributos de duplicación, ajuste del rendimiento del servicio,
    filtrado avanzado, filtrado de afinidad / antiafinidad
  • Después del filtrado, se puede realizar una programación aleatoria y se realizará un nuevo cribado, es decir, el mecanismo de taint, que filtra los nodos restantes y elimina los nodos previamente fallidos.

3.Componentes de computación

Nova-compute se ejecuta en los nodos informáticos y es responsable de administrar las instancias en los nodos. Por lo general, un host ejecuta un servicio de cálculo de Nova, y el host disponible en el que se implementa una instancia depende del algoritmo de programación. Las operaciones de OpenStack en la instancia se envían finalmente a Nova-compute para su finalización.

Nova-compute se puede dividir en dos categorías, una es dirigir a openstack para que informe el estado de los nodos informáticos y la otra es implementar la gestión del ciclo de vida de la instancia.

  • Informar periódicamente el estado
    del nodo de cómputo a OpenStack De vez en cuando, nova-compute informará el uso actual de recursos del nodo de cómputo y el estado del servicio nova-compute. nova-compute obtiene esta información a través del controlador del hipervisor.
  • Realice la gestión del ciclo de vida de las instancias de máquinas virtuales.
    Las operaciones más importantes de OpenStack en instancias de máquinas virtuales se implementan a través de nova-compute. Incluyendo crear, cerrar, reiniciar, suspender, reanudar, abortar, cambiar el tamaño de la migración, instantánea.
    Tomemos la creación de instancias como ejemplo para ilustrar el proceso de implementación de nova-compute.
    (1) Prepare recursos para la instancia.
    (2) Cree un archivo espejo de la instancia.
    (3) Cree el archivo de definición XML de la instancia.
    (4) Cree una red virtual e inicie la máquina virtual.

4.componentes de coordinación de conductores

  • Proporcione una capa de seguridad para el acceso a la base de datos. Nova-conductor actúa como intermediario para la interacción entre el nova- de cómputo servicio y la base de datos , evitando el acceso directo por parte del cálculo. Las Conexiones de servicios nova de cómputo a la base de datos. El componente de cómputo se encuentra en un tercero e interactúa con el fuera de la arquitectura. Esto puede evitar algunas operaciones no autorizadas y dividir la presión para la base de datos .
  • Todas las operaciones de Nova-compute para acceder a la base de datos se cambian a nova-conductor. Nova-conductor actúa como un agente para las operaciones de la base de datos y nova-conductor se despliega en el nodo de control.
  • Nova-conductor ayuda a mejorar el rendimiento del acceso a la base de datos . Nova-compute puede crear múltiples subprocesos para usar la llamada a procedimiento remoto (RPC) para acceder a nova-conductor.
  • En un entorno de implementación de opentack a gran escala, los administradores pueden aumentar el número de conductores nova para hacer frente al creciente número de nodos informáticos que acceden a la base de datos.

5.API de colocación

  • En el pasado , la gestión de los recursos se realizaba en su totalidad mediante nodos informáticos. Al calcular el uso de recursos, simplemente sumamos las condiciones de los recursos de todos los nodos informáticos. Sin embargo, hay recursos externos en el sistema y estos recursos los proporcionan sistemas externos. . Como los recursos de almacenamiento proporcionados por ceph, nfs, etc.
    Frente a una variedad de proveedores de recursos, los administradores necesitan una interfaz de administración unificada y simple para contar el uso de recursos en el sistema . Esta interfaz es la API de ubicación .
  • PlacementAPI es implementado por el servicio nova-location-api, que tiene como objetivo rastrear y registrar el directorio y el uso de recursos de los proveedores de recursos. Los tipos de recursos consumidos se rastrean por categoría. Como clase de nodo informático, clase de grupo de almacenamiento compartido, clase de dirección IP, etc.

Cuarto, el proceso de creación de instancias de la máquina virtual

1. Acceso de usuario a la consola

Hay muchas formas de acceder a la consola de la máquina virtual.

  • Daemon Nova-novncproxy: acceda a la instancia en ejecución a través de la conexión vnc para proporcionar un proxy, compatible con el cliente novnc del navegador . (más comúnmente utilizado)
  • Daemon Nova-spicehtml5proxy: proporciona un proxy para acceder a la instancia en ejecución a través de la conexión spice y admite clientes basados ​​en el navegador html5.
  • Demonio Nova-xvpvncproxy: acceda a la instancia en ejecución a través de la conexión vnc para proporcionar un proxy, soporte para el cliente java dedicado openstack.
  • Daemon Nova-consoleauth: responsable de proporcionar autenticación de token de usuario para acceder a la consola de la máquina virtual . Este servicio debe utilizarse junto con el agente de consola, es decir, los tres métodos de agente anteriores.

2. Si no puede conectarse a la instancia interna a través de la consola / URL:

causa

1、实验场景中,虚拟机资源不足
2、实验场景中,镜像问题(公共镜像,作为测试用的镜像)
3、生产环境中,路由配置问题,路由网关配置到了其他实例地址,内部有多个实例项目。

Solución

  • Primero, el usuario (usuario final de openstack u otro programa) ejecuta el comando proporcionado por el cliente nova para crear una máquina virtual.
  • El servicio nova-api escucha la solicitud http del cliente, convierte la solicitud en un mensaje AMQP y la carga en la cola de mensajes.
  • Llame al servicio de conductor a través de la cola de mensajes
  • Una vez que el servicio conductor recibe la solicitud de instanciación de la máquina virtual de la cola de mensajes, prepara
  • El conductor le dice al servicio del planificador que seleccione un nodo informático adecuado para crear una máquina virtual a través de la cola de mensajes, en ese momento el planificador leerá el contenido de la base de datos.
  • Una vez que el servicio conductor obtiene la información del nodo informático del servicio nova-schedule, notifica al servicio informático a través de la cola de mensajes para crear una máquina virtual.

Cinco, arquitectura de implementación de Nova

1. Implementación de la arquitectura clásica

Inserte la descripción de la imagen aquí

2. Implementación de la arquitectura de equilibrio de carga

Inserte la descripción de la imagen aquí

1.资源压力大,集群服务器压力(数据库)
2.运维管理人员,管理的复杂性提高,故障排除的复杂程度提高(不方便管理)

Seis, la arquitectura celular de Nova

Inserte la descripción de la imagen aquí

1. Razones para utilizar esta arquitectura

  • Con el fin de resolver el problema de los cuellos de botella en la base de datos y los servicios de cola de mensajes cuando la escala del clúster nova de openstack aumenta. Nova introdujo el concepto Cell para mejorar la expansión horizontal y las capacidades de implementación distribuidas y a gran escala sin aumentar la complejidad de la base de datos y el middleware de mensajes.
  • Conceptos básicos:
    1. Mejorar el cuello de botella de la base de datos y aliviar la presión sobre la base de datos
    2. Mejorar el cuello de botella de la cola de mensajes y aliviar la presión
    en la cola de mensajes 3. Reducir la presión sobre el conductor

2. El concepto de célula

  • La celda se puede convertir en unidad. Para admitir implementaciones a mayor escala, openstack divide el gran clúster nova en unidades pequeñas, cada unidad tiene su propia cola de mensajes y base de datos, lo que puede resolver el problema de cuello de botella causado por el aumento de escala. En Cell, Keystone, Neutron, Cinder, Glance y otros recursos se comparten.

3.Base de datos de arquitectura celular

  • Base de datos nova-api: almacena información global. Estas tablas de datos globales se migran desde la base de datos nova, incluida la información del modelo de instancia, el grupo de instancias y la información de cuotas.
  • nova-cell0 data ku: cuando falla la programación de la instancia, la información de la instancia no pertenece a ninguna celda, por lo que se almacena en la base de datos de la celda0.

Despliegue de celda única

Inserte la descripción de la imagen aquí

Implementación de varias celdas

Inserte la descripción de la imagen aquí
La arquitectura de la implementación de varias celdas se puede ver desde una perspectiva jerárquica:

  • Para hacer frente a la expansión del tamaño del clúster, la base de datos y la cola de mensajes se expandieron para lograr la expansión de la escala nova. Al dividir varias unidades de celda pequeña, varias unidades procesan servicios al mismo tiempo, y cada unidad de celda tiene su propia base de datos y cola de mensajes. Para gestionar estas pequeñas unidades se necesita un superconductor de componentes de gestión centralizada, el conductor principal gestiona la unidad celular y al mismo tiempo completa su propio trabajo.
  • Cuadro amarillo: es la división de la cola de mensajes . Dividido en la cola de mensajes de la API y la cola de mensajes en la unidad celular. En la cola de mensajes de la API hay solicitudes externas a Nova y solicitudes de comunicación entre los subservicios internos de Nova como el portador de la comunicación entre ellos. La cola de mensajes de celda contiene solicitudes de servicio que la unidad de celda necesita procesar.
  • Cuadro rojo: Es la división del conductor . El superconductor se utiliza para administrar centralmente la unidad celular. También es responsable de notificar al nova-planificador para programar el nodo de computación. Si la programación falla, se escribe directamente en cell0. Si tiene éxito, controla a qué unidad de celda se envía la tarea para su procesamiento. Escribe todos los datos en la base de datos. El conductor en la celda, después de recibir la solicitud de la celda para crear una instancia a través de la cola de mensajes, notificará a nova-compute para crear una instancia para procesamiento y coordinación específicos.
  • Caja verde: es la división de la base de datos . La base de datos de la API almacena datos de interacción global y estadísticas de recursos totales. La base de datos cell0 almacena la información sobre la falla en la creación de la instancia, y cell1 / 2 almacena la información sobre la creación exitosa de la instancia de las unidades respectivas, correspondiente a los datos de solicitud procesados.
  • Nova-api: cada solicitud para crear una instancia tiene un número. El resultado de la creación exitosa se almacenará en la base de datos de la celda. Nova-api recuperará el resultado final de la solicitud de la base de datos de la celda de acuerdo con el número y lo devolverá después de formatear. Para el usuario.

Supongo que te gusta

Origin blog.csdn.net/weixin_45647891/article/details/114262567
Recomendado
Clasificación