Acerca del mantenimiento de ZooKeeper

Edge para la nube privada v. 4.17.01

Los conjuntos de ZooKeeper están diseñados para seguir funcionando, sin pérdida de datos, a pesar de la pérdida de uno o más nodos de ZooKeeper. Esta capacidad de recuperación se puede usar de manera eficaz para realizar el mantenimiento de los nodos de ZooKeeper sin tiempo de inactividad del sistema.

Información acerca de ZooKeeper y Edge

En Edge, los nodos de ZooKeeper contienen datos de configuración sobre la ubicación y la configuración de los diversos componentes de Edge, y notifican a los diferentes componentes los cambios de configuración. Todas las topologías de Edge compatibles para un sistema de producción especifican que se deben usar al menos tres nodos de ZooKeeper.

Usa las propiedades ZK_HOSTS y ZK_CLIENT_HOSTS en el archivo de configuración de Edge para especificar los nodos de ZooKeeper. Por ejemplo:

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

Donde:

  • ZK_HOSTS: Especifica las direcciones IP de los nodos de ZooKeeper. Las direcciones IP deben estar enumeradas en el mismo orden en todos los nodos de ZooKeeper.

    En un entorno de varios centros de datos, muestra una lista de todos los nodos de ZooKeeper de todos los centros de datos.
  • ZK_CLIENT_HOSTS: Especifica las direcciones IP de los nodos de ZooKeeper que utiliza únicamente este centro de datos. La IP deben estar enumeradas en el mismo orden en todos los nodos de ZooKeeper del centro de datos.

    En una única instalación de centro de datos, estos son los mismos nodos especificados por ZK_HOSTS. En una de varios centros de datos, el archivo de configuración perimetral de cada centro de datos debe enumerar solo los Nodos de ZooKeeper para ese centro de datos

De forma predeterminada, todos los nodos de ZooKeeper se designan como nodos voter. Eso significa que los nodos participan en la elección del líder de ZooKeeper. Puedes incluir el el modificador “:observer” con ZK_HOSTS para indicar que la nota es un nodo observador y no un votante. Un nodo observador no participa en la elección del líder.

Por lo general, especificas el modificador “:observer” cuando creas varios centros de datos de Edge o cuando un solo centro de datos tiene una gran cantidad de nodos de ZooKeeper. Por ejemplo, en una instalación de Edge de 12 hosts con dos centros de datos, ZooKeeper en el nodo 9 del centro de datos 2 es el observador:

A continuación, debes usar los siguientes parámetros de configuración en el archivo de configuración del Centro de datos 1:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

Y para el centro de datos

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

Acerca de los líderes, los seguidores votantes y observadores

En una instalación de ZooKeeper de varios nodos, uno de ellos se designa como el líder. Todos los demás nodos de ZooKeeper se designan como seguidores. Si bien las lecturas pueden ocurrir desde cualquier En el nodo de ZooKeeper, todas las solicitudes de escritura se reenvían al líder. Por ejemplo, se agrega un nuevo procesador de mensajes a Edge. Esa información se escribe al líder de ZooKeeper. Luego, todos los seguidores replican los datos.

En el momento de la instalación de Edge, designas cada nodo de ZooKeeper como votante o observador. El todos los nodos de ZooKeeper votantes eligen el líder. El único requisito para la elección de un es que debe haber un quórum disponible de nodos votantes de ZooKeeper en funcionamiento. Un quórum significa que más de la mitad de todos los nodos de ZooKeeper de votantes, en todos los centros de datos, son funcionales.

Si no hay un quórum de nodos de votación disponibles, no se puede elegir a ningún líder. En esta situación, Zookeeper no puede entregar solicitudes. Eso significa que no puedes realizar una solicitud a la administración perimetral Servidor, procesa las solicitudes a la API de Management o accede a la IU de Edge hasta que se restablezca el quórum.

Por ejemplo, en una sola instalación de centro de datos, sucede lo siguiente:

  • Instalaste tres nodos de ZooKeeper.
  • Todos los nodos de ZooKeeper son votantes
  • El quórum consta de dos nodos votantes en funcionamiento
  • Si solo hay un nodo de voto disponible, el conjunto de ZooKeeper no puede funcionar.

En una instalación con dos centros de datos:

  • Instalaste tres nodos de ZooKeeper por centro de datos, lo que da un total de seis nodos.
  • El centro de datos 1 tiene tres nodos de voto.
  • El centro de datos 2 tiene dos nodos de voto y un nodo de observador.
  • El quórum se basa en los cinco votantes de ambos centros de datos y, por lo tanto, son tres nodos de votantes en funcionamiento.
  • Si solo hay dos nodos de votantes o menos disponibles, el conjunto de ZooKeeper no puede funcionar.

Agrega nodos como votantes o observadores

Es posible que los requisitos del sistema requieran que agregues nodos de ZooKeeper adicionales a tu Edge. instalación. Documentación sobre cómo agregar nodos de ZooKeeper se describe cómo agregar nodos adicionales de ZooKeeper a Edge. Cuando agregues nodos de ZooKeeper, debes tener en cuenta el tipo de nodos que agregarás: votantes o observadores.

Asegúrate de tener suficientes nodos de votantes para que, si uno o más nodos de votantes están inactivos, el conjunto de ZooKeeper aún pueda funcionar, lo que significa que aún hay un quórum de nodos de votantes disponibles. Si agregas nodos votantes, aumentas el tamaño del quórum y, por lo tanto, puedes tolerar que más nodos votantes dejen de funcionar.

Sin embargo, agregar nodos de votantes adicionales puede afectar negativamente el rendimiento de las operaciones de escritura, ya que estas requieren que el quórum esté de acuerdo con el líder. El tiempo que se tarda en determinar el líder se basa en la cantidad de nodos de votantes, que aumenta a medida que agregas más nodos de votantes. Por lo tanto, no es conveniente que todos los nodos sean votantes.

En lugar de agregar nodos de voto, puedes agregar nodos de observador. Agregar nodos de observador aumenta el rendimiento general de lectura del sistema sin aumentar la sobrecarga de elegir un líder, ya que los nodos de observador no votan ni afectan el tamaño del quórum. Por lo tanto, si falla un nodo de observador, no se ve afectada la capacidad del conjunto para elegir un líder. Sin embargo, perder nodos de observadores puede provocar una degradación en el rendimiento de lectura del conjunto de ZooKeeper, ya que hay menos nodos disponibles para atender las solicitudes de datos.

En un solo centro de datos, Apigee recomienda que no tengas más de cinco votantes, independientemente de la cantidad de nodos de observador. En dos centros de datos, Apigee recomienda que no tengas más de nueve votantes (cinco en un centro de datos y cuatro en el otro). Luego, puedes agregar tantas observador, según sea necesario para los requisitos del sistema.

Consideraciones de mantenimiento

El mantenimiento de ZooKeeper puede realizarse en un ensamble completamente funcional sin tiempo de inactividad si se se realiza en un solo nodo a la vez. Asegúrate de que solo un nodo de ZooKeeper esté inactivo en en cualquier momento, puede asegurarse de que siempre haya un quórum de nodos votantes disponible para elegir un de la empresa.

Mantenimiento en varios centros de datos

Cuando trabaje con varios centros de datos, recuerde que el ensamble de ZooKeeper no para distinguir los centros de datos. Los ensamblados de ZooKeeper ven todos los nodos de ZooKeeper en todos los centros de datos como un conjunto.

La ubicación de los nodos votantes en un centro de datos determinado no es un factor cuando ZooKeeper realiza para los cálculos de quórum. Los nodos individuales pueden pasar por los centros de datos, pero siempre que haya preservado en todo el ensamble, ZooKeeper seguirá funcionando.

Implicaciones del mantenimiento

En varias ocasiones, deberás quitar un nodo de ZooKeeper por mantenimiento, ya sea un nodo de votante o un nodo de observador. Por ejemplo, es posible que debas actualizar la versión de Edge en el nodo es posible que la máquina que aloja ZooKeeper falle o que el nodo deje de estar disponible para algún otro por ejemplo, un error de red.

Si el nodo que se cae es un nodo de observador, es posible que se produzca una ligera degradación en el rendimiento del conjunto de ZooKeeper hasta que se restablezca el nodo. Si el nodo es un nodo de votación, puede afectar la viabilidad del conjunto de ZooKeeper debido a la pérdida de un nodo que participa en el proceso de elección del líder. Independientemente del motivo por el que pasa el nodo votante es importante mantener un quórum de nodos votantes disponibles.

Procedimiento de mantenimiento

Debes considerar realizar cualquier procedimiento de mantenimiento solo después de asegurarte de que un ZooKeeper de que el ensamble sea funcional. Esto supone que los nodos de observador son funcionales y que hay suficientes nodos de votantes disponibles durante el mantenimiento para retener un quórum.

Cuando se cumplen estas condiciones, un ensamble de ZooKeeper de tamaño arbitrario puede tolerar la de un nodo en cualquier momento sin pérdida de datos ni un impacto significativo en el rendimiento. Esta significa que tienes la libertad de realizar el mantenimiento de cualquier nodo del ensamble, siempre y cuando esté en uno por nodo a la vez.

Como parte del mantenimiento, usa el siguiente procedimiento para determinar el tipo de Nodo de ZooKeeper (líder, observador o votante):

  1. Si no está instalado en el nodo ZooKeeper, instala nc:
    > sudo yum install nc
  2. Ejecuta el siguiente comando nc en el nodo:
    > echo stat | nc localhost 2181

    En el que 2181 es el puerto de ZooKeeper. Deberías ver un resultado como el siguiente:
    Versión de Zookeeper: 3.4.5-1392090, compilada el 30/9/2012 a las 17:52 GMT
    Clientes: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latencia mínima/promedio/máxima: 0/0/0
    Recibida: 1
    Enviada: 0
    Conexiones: 1
    Pendiente: 0
    Zxid: 0xc00000044
    Modo: seguidor
    Cantidad de nodos: 653


    En la línea Mode del resultado de los nodos, deberías ver observer, leader o follower (es decir, un votante que no es el líder), según la configuración del nodo.

    Nota: En una instalación independiente de Edge con un solo nodo de ZooKeeper, el modo se establece en standalone.
  3. Repite los pasos 1 y 2 en cada nodo de ZooKeeper.

Resumen

La mejor manera de realizar el mantenimiento en un ensamble de ZooKeeper es hacerlo un nodo por nodo tiempo. Recordatorio:

  • Debes mantener un quórum de nodos votantes durante el mantenimiento para garantizar que ZooKeeper que el ensamble sea funcional.
  • Eliminar un nodo observador no afecta el quórum ni la capacidad de elegir un líder.
  • El quórum se calcula en todos los nodos de ZooKeeper de todos los centros de datos.
  • Continúa con el mantenimiento del siguiente servidor después de que el servidor anterior esté en funcionamiento
  • Usa el comando nc para inspeccionar el nodo ZooKeeper