Acerca del mantenimiento de ZooKeeper

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 resiliencia puede usarse de manera eficaz para realizar mantenimiento en 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 acerca de la ubicación y los distintos componentes de Edge y les notifica sobre los cambios de configuración. Todo Las topologías de Edge compatibles para un sistema de producción usan al menos tres ZooKeeper nodos.

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

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

Aquí:

  • ZK_HOSTS especifica las direcciones IP de los nodos de ZooKeeper. Las direcciones IP deben aparecer en el mismo orden en todos los nodos de ZooKeeper.

    En un entorno de varios centros de datos, enumera todos los nodos de ZooKeeper de todos los centros de datos.

  • ZK_CLIENT_HOSTS especifica las direcciones IP de los nodos de ZooKeeper que usa esto. Centro de datos únicamente. Las direcciones IP deben estar enumeradas en el mismo orden en todos los nodos de ZooKeeper en el centro de datos.

    En una única instalación de centro de datos, estos son los mismos nodos especificados por ZK_HOSTS. En una multicentro de datos, el archivo de configuración perimetral de cada centro de datos debe enumerar solo los 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 indica que Es un nodo de observador y no de votante. Un nodo observador no participa en la elección del líder.

Por lo general, debes especificar el modificador :observer cuando creas varios datos perimetrales o cuando un único centro de datos tiene una gran cantidad de nodos de ZooKeeper. Por ejemplo, en una La instalación perimetral de 12 hosts con dos centros de datos, ZooKeeper en el nodo 9 del centro de datos 2 es 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 2:

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

Las siguientes secciones contienen más detalles sobre el líder, el votante y observadores y describe las consideraciones para agregar nodos de votante y observador.

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

En una instalación de ZooKeeper de varios nodos, uno de los nodos se designa como 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, si se agrega un mensaje Se agregó el procesador a Edge. Esa información se escribe al líder de ZooKeeper. Todos los seguidores y, luego, replicar los datos.

En el momento de la instalación de Edge, debes designar cada nodo de ZooKeeper como observador o votante. 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. R quórum significa que más de la mitad de todos los nodos de ZooKeeper que votan, en todos los centros de datos, se y cómo funcionan.

Si no hay un quórum de nodos votantes disponible, no se puede elegir un líder. En este caso, 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 votante disponible, el ensamble de ZooKeeper no podrá 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 votantes
  • El centro de datos 2 tiene dos nodos votantes y un nodo observador
  • El quórum se basa en los cinco votantes de ambos centros de datos y, por lo tanto, tres nodos votantes en funcionamiento
  • Si solo hay dos nodos votantes disponibles, entonces el ensamble de ZooKeeper no puede función

Consideraciones para agregar nodos como votantes o observadores

Es posible que los requisitos del sistema requieran que se agreguen nodos de ZooKeeper adicionales a Edge. instalación. Documentación sobre cómo agregar nodos de ZooKeeper se describe cómo agregar nodos adicionales de ZooKeeper a Edge. Al agregar nodos de ZooKeeper, debes debe tener en cuenta el tipo de nodos que se agregarán: observador o votante.

Debe asegurarse de tener suficientes nodos votantes. Así, si uno o más nodos votantes están inactivos, el ensamble de ZooKeeper puede seguir funcionando, lo que significa que sigue existiendo un quórum de nodos 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 votantes adicionales puede afectar negativamente el rendimiento de escritura debido a que las operaciones requieren que el quórum llegue a un acuerdo con respecto al líder. El tiempo que lleva determinar la líder se basa en la cantidad de nodos votantes, que aumenta a medida que se agregan más nodos votantes. Por lo tanto, no es conveniente que todos los nodos sean votantes.

En lugar de agregar nodos votantes, puedes agregar nodos observadores. Agregar nodos observadores aumenta el rendimiento general de la lectura del sistema sin aumentar la sobrecarga de elegir a un líder porque observadores no votan y no afectan el tamaño del quórum. Por lo tanto, si un nodo observador no afecta la capacidad del conjunto para elegir a un líder. Sin embargo, perder observador pueden provocar una degradación en el rendimiento de lectura del ensamble ZooKeeper porque menos nodos disponibles para atender las solicitudes de datos.

En un único centro de datos, Apigee recomienda que no haya más de cinco votantes, independientemente de de la cantidad de nodos observadores. En dos centros de datos, Apigee recomienda que no haya 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.

Quita un nodo de Zookeeper

Existen muchos motivos por los que podrías querer eliminar un nodo de Zookeeper: por ejemplo, un nodo tiene o se agregó a un entorno equivocado.

En esta sección, se describe cómo eliminar un nodo de Zookeeper cuando está inactivo y no y accesible.

Para quitar un nodo de Zookeeper, haz lo siguiente:

  1. Edita tu archivo de configuración silencioso y elimina la dirección IP del nodo de Zookeeper que que quieres quitar.
  2. Vuelve a ejecutar el comando setup para que Zookeeper vuelva a configurar el ZooKeeper restante nodos:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Reinicia todos los nodos de Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Vuelve a configurar el nodo del servidor de administración:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Vuelve a configurar todos los routers:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. Vuelve a configurar todos los Message Processor:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. Reconfigura todos los nodos de Qpid:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. Vuelve a configurar todos los nodos de Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

Consideraciones de mantenimiento

Puedes realizar el mantenimiento de ZooKeeper en un ensamble completamente funcional sin tiempo de inactividad si realizarla 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 durante 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 visualizan todos los nodos de ZooKeeper en todos los centros de datos como un ensamble.

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 sigue funcionando.

Implicaciones del mantenimiento

En varias ocasiones, tendrás que eliminar un nodo de ZooKeeper por mantenimiento, ya sea un votante o un nodo 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 observador, puede esperar una leve degradación en el rendimiento del ensamble de ZooKeeper hasta que se restablezca el nodo. Si el nodo es un votante nodo, puede afectar la viabilidad del ensamble de ZooKeeper debido a la pérdida de un nodo que participa en el proceso de elección de 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

Realizar procedimientos de mantenimiento solo después de asegurar que un ZooKeeper el ensamble sea funcional. Esto supone que los nodos observadores son funcionales y que hay suficientes nodos 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 de ZooKeeper, instala nc:
    sudo yum install nc
  2. Ejecuta el siguiente comando nc en el nodo, donde 2181 es el puerto de ZooKeeper:
    echo stat | nc localhost 2181

    Deberías ver un resultado en el formulario:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

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

  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 conjunto siga funcionando.
  • Eliminar un nodo observador no afecta el quórum ni la capacidad de elegir a un líder.
  • El quórum se calcula en todos los nodos de ZooKeeper en todos los centros de datos.
  • Continúa con el mantenimiento del siguiente servidor después de que esté en funcionamiento el servidor anterior.
  • Usa el comando nc para inspeccionar el nodo de ZooKeeper.