Una de las capacidades de Couchbase Server es la posibilidad de hacer actualizaciones en línea sin tiempo de inactividad. Esto se debe en parte a las características de auto-sharding y rebalanceo de Couchbase. En esta entrada del blog vamos a caminar a través de los enfoques recomendados para hacer una actualización continua. Si bien todos estos enfoques son posibles formas de actualización, se enumeran en orden de lo que se considera la mejor práctica. Se da preferencia a la facilidad de operación, manteniendo el cluster y la aplicación online y operativa, así como un rendimiento consistente mientras se realiza la actualización. Obviamente, algunos de estos puntos serán más fáciles de aplicar para algunas personas que para otras. Todas funcionarán.
Nota: Aunque estas instrucciones han sido probadas y funcionarán a un nivel funcional, como siempre deberías probar el enfoque seleccionado primero en tus propios entornos de prueba antes de proceder a actualizar tu cluster de producción. Una vez actualizado, asegúrate de ejecutar los procedimientos de prueba de humo de tu aplicación y base de datos existentes para confirmar que las características de Couchbase que utilizas continúan funcionando como lo necesitas y esperas. Esto debería aplicarse tanto al proceso de actualización como a la nueva funcionalidad proporcionada por Couchbase. Si tiene un contrato de soporte Enterprise con Couchbase y necesita asistencia general con la actualización, tiene problemas antes o durante, etc., por favor no dude en contactar con el Soporte de Couchbase y/o su Gestor de Cuenta. Si estás usando la Community Edition de Couchbase, existen las siguientes opciones foros comunitarios para obtener ayuda o no hay momento como el presente para obtener asistencia de primera clase y las prestaciones que la edición Enterprise aporta a sus sistemas de misión crítica. Además de no Al no tener acceso al equipo de soporte de Couchbase, la Community Edition se retrasará en las revisiones del código durante un periodo de tiempo (normalmente más de 3 meses), no contendrá ciertas características Enterprise y no tendrá acceso a las correcciones en caliente a medida que vayan saliendo.
Nota: En Couchbase Server 2.5 Enterprise Edition, se introdujo una característica llamada Rack/Zone Awareness (RZA). Su funcionalidad está más allá del alcance de este post, pero deberías conocerla y leer sobre ella si estás actualizando a 2.5 o superior, desde una versión anterior a 2.5. Para más detalles, consulte Conocimiento de estanterías/zonas en la documentación.
Nota: Si estás actualizando de Couchbase 1.8.1 a 2.x, hay algunas consideraciones técnicas únicas que debes revisar. Incluyendo, pero no limitado a, la introducción de la estructura de archivo de datos append-only para el almacenamiento basado en disco que aumenta el espacio de disco requerido a 2-3x de la cantidad de datos que desea almacenar, pero acelera enormemente las escrituras en disco. Todos los detalles están disponibles en el Recursos necesarios del manual de Couchbase para asegurarte de que tienes al menos los servidores configurados mínimos recomendados. Además, echa un vistazo a Perry's entrada de blog sobre el dimensionamiento de un clúster 2.0 para obtener más ayuda.
Enfoque recomendado #1, un reequilibrio completo de swaps:
Este enfoque utiliza un proceso denominado Reequilibrio de swaps para añadir exactamente el mismo número de nuevos servidores/instancias que el clúster existente y eliminar los antiguos. Esto será especialmente atractivo para las organizaciones que utilizan una nube pública o privada que pueden adquirir instancias de servidor con relativa facilidad o para los usuarios que realizan una renovación completa del hardware. Cada nuevo servidor/instancia debería tener las mismas o mejores especificaciones de hardware que los existentes, tener la seguridad del sistema operativo reforzada y la versión de actualización objetivo de Couchbase Server instalada. (Si estás aumentando la RAM y por lo tanto necesitas aumentar la cuota total de RAM de Couchbase, mira la sección de abajo detallando información sobre lo que necesitas mirar para ayudarte con este proceso). Este enfoque de actualización ofrece el mejor rendimiento y la transición más fácil de una versión existente a una nueva versión. Cuando el reequilibrio esté completo todo el cluster estará en la nueva versión y los nodos antiguos eliminados y listos para ser reciclados. Para más información, consulte Reequilibrio de swaps en el manual de Couchbase.
Pasos:
1) Adquiera un número idéntico de servidores/instancias nuevos que los que hay en su clúster actual.
2) Para cada nuevo servidor/instancia, refuerza el sistema operativo e instala la versión objetivo de Couchbase Server, además de cualquier hot fix.
3) Cree una copia de seguridad de los datos de su clúster utilizando la función herramienta cbbackupsegún su procedimiento habitual.
4) En uno de los nodos de la base de datos tendrá que construir una llamada a la línea de comandos utilizando el comando comando couchbase-cli. En el momento de redactar este documento, la interfaz web no permite cambiar todos los nodos existentes del clúster a la vez. A continuación se muestra un ejemplo del comando que debe ejecutar para añadir y eliminar cuatro nodos:
-c :8091
-servidor-add=:8091
-servidor-add=:8091
-servidor-add=:8091
-servidor-add=:8091
-servidor-eliminar=:8091
-servidor-eliminar=:8091
-servidor-eliminar=:8091
-servidor-eliminar=:8091
-u Administrador -p
Este comando se conectará al nodo de clúster existente especificado y comenzará el proceso de reequilibrio de intercambio en línea para añadir los cuatro nuevos nodos y eliminar los cuatro nodos existentes. Asegúrese de utilizar algo como screen para ejecutar este proceso, de modo que pueda desconectarse y volver a conectarse para ver el progreso. Un reequilibrio puede llevar un tiempo dependiendo del tamaño y la utilización de los recursos de su clúster (por ejemplo, E/S de disco, red, etc.). Además, un reequilibrio está pensado para ser un proceso en segundo plano y prioriza el tráfico a nivel de aplicación a costa de aumentar el tiempo de reequilibrio. Dicho esto, dependiendo del tamaño de su clúster, podría ver una pequeña caída en el rendimiento mientras se ejecuta el reequilibrio. Puede tardar una hora o más, dependiendo de varios factores. Normalmente la red y el disco serán los mayores cuellos de botella. Consulte la sección siguiente sobre la supervisión de un reequilibrio para poder ver lo que está pasando y confirmar que el proceso sigue avanzando. Además, permítanme aprovechar este momento para mencionar de nuevo que usted realmente quiere probar esto en un entorno de prueba en primer lugar y ver lo que va a pasar y los tiempos.
Nota: Por lo general, las nuevas características de la versión actualizada de Couchbase estarán disponibles para su uso una vez que el reequilibrio se haya completado. Aunque algunas características estarán disponibles inmediatamente.
5)Ahora vamos a limpiar las cadenas de conexión del cliente Couchbase. Aunque los servidores de aplicaciones en ejecución ya tienen el mapa del cluster actualizado, si reiniciaras esos servidores de aplicaciones, necesitarían obtener un nuevo mapa del cluster. Así que, en cada servidor de aplicaciones que tengas accediendo al cluster de Couchbase, edita la configuración de la cadena de conexión para eliminar por completo los antiguos hostnames/IPs de los nodos del cluster y asegúrate de que tienes al menos tres de los nodos activos.
Enfoque recomendado #2, un reequilibrio renovable de swaps:
Este proceso es una variación del #1. En lugar de reemplazar todos los servidores/instancias del clúster, añadirá uno o más (uno es bueno, más es mejor) nuevos servidores/instancias de especificaciones de hardware iguales o mejores al clúster y eliminará otros tantos del clúster al mismo tiempo utilizando el comando Reequilibrio de swaps proceso. A continuación, repita este proceso hasta que cada nodo se haya actualizado a la versión de destino.
Información técnica: Recuerda que si añades dos servidores, eliminas dos. De esta forma se minimizan los nodos implicados en el reequilibrio. En un reequilibrio de intercambio, un nodo sólo copiará sus vBuckets al nuevo nodo y sólo involucrará a los dos servidores que se intercambian. Si por el contrario, por ejemplo, se intercambian más servidores de los que se intercambian, entonces el clúster tiene que barajar los vBuckets de todos los nodos y se incrementa la carga en todos los nodos del clúster.
Pasos:
- Adquiere tantos servidores/instancias nuevos como desees. Si es la segunda vez que realizas estos pasos, puedes reutilizar los otros servidores/instancias que intercambiaste en pasos anteriores.
- Para cada instancia, refuerce el sistema operativo e instale la versión completa de Couchbase de destino, además de cualquier hot fix.
- Cree una copia de seguridad de los datos del clúster utilizando la función herramienta cbbackup según su procedimiento habitual.
- Abra la Consola Web de Couchbase, pestaña Nodos de Servidor, luego haga clic en el botón Añadir Servidor y siga el proceso para añadir cada nuevo servidor/instancia al cluster.
- Para cada servidor que acaba de añadir, haga clic en el botón Eliminar de un servidor existente.
- Haga clic en el botón Reequilibrar para iniciar el proceso de reequilibrio del clúster. El proceso de reequilibrio moverá automáticamente todos los datos de los nodos marcados para su eliminación a los nuevos nodos.
Repita estos pasos hasta que todos los nodos se hayan actualizado a la nueva versión.
Una vez completado, vamos a limpiar las cadenas de conexión del cliente Couchbase. Aunque los servidores de aplicaciones en ejecución ya tienen el mapa del cluster actualizado, si reiniciaras esos servidores de aplicaciones, necesitarían obtener un nuevo mapa del cluster. Así que, en cada servidor de aplicaciones que tengas accediendo al cluster de Couchbase, edita la configuración de la cadena de conexión para eliminar por completo los antiguos hostnames/IPs de los nodos del cluster y asegúrate de que tienes al menos tres de los nodos activos.
Todas las nuevas funciones deberían estar disponibles para su uso una vez que todos los nodos estén en la misma versión. Para obtener información general sobre el reequilibrio de swaps, consulte Reequilibrio de swaps.
Nota: Mientras que los ejemplos aquí usan la Consola Web de Couchbase, podrías usar la API REST o herramientas CLI para hacer esto.
Enfoque recomendado #3, Una verdadera actualización rodante:
Este proceso es un poco más complicado y lo digo sólo porque en realidad sólo se debe realizar si su clúster tiene el tamaño adecuado y puede soportar la pérdida temporal de un nodo por completo con poca o ninguna degradación del rendimiento mientras se actualiza. Si no está seguro de si su clúster tiene el tamaño adecuado, investigue un poco para averiguarlo con antelación y no en medio de su ventana de mantenimiento. La razón por la que usarías este proceso es si no tuvieras acceso a otros servidores/instancias y quisieras hacer la actualización in situ. Si tienes un contrato de soporte de Couchbase Enterprise y necesitas ayuda con este proceso, puedes contactar con soporte con cualquier pregunta durante la planificación de esta actualización.
Recuerde también que éste podría ser un buen momento para añadir capacidad de clúster (ya sea vertical u horizontalmente) en general y, en su lugar, aplicar las soluciones #1 o #2 recomendadas anteriormente.
Pasos:
- Cree una copia de seguridad de los datos del clúster utilizando la función herramienta cbbackup según su procedimiento habitual.
- En la interfaz web de administración, haga clic en el botón Eliminar para un solo nodo del clúster.
- Reequilibra el clúster entre los nodos restantes del clúster.
- Realice la actualización del servidor Couchbase en el servidor/instancia a la versión objetivo de Couchbase, además de cualquier hot fix.
- Haga clic en el botón Añadir servidor para volver a añadir el nodo actualizado al clúster.
- Haga clic en el botón Reequilibrar para iniciar el proceso de reequilibrio del clúster. El proceso de reequilibrio distribuirá los vBuckets por el clúster de forma uniforme.
Repita estos pasos hasta que todos los nodos se hayan actualizado a la nueva versión.
Tres elementos importantes durante el reequilibrio:
- Si estás actualizando de 1.8.1 a 2.x y el rebalanceo se detiene/falla o se pausa por cualquier razón, deberías esperar un mínimo de 5 minutos y luego reiniciarlo. La razón de esto es que las conexiones de red que Couchbase utiliza para el rebalanceo entre nodos no se apagan con gracia en una pausa o una parada no planificada por lo que pueden terminar viviendo por más tiempo si un rebalanceo se inicia inmediatamente después de uno fallido. Sin embargo, la conexión de red tiene un tiempo de espera de 5 minutos si no ve ninguna actividad, por lo que recomendamos esperar al menos 5 minutos antes de volver a intentar un reequilibrio. Pulsar el botón una y otra vez hará más mal que bien. Si está actualizando de 2.x a un nivel superior de 2.x (por ejemplo, de 2.0.1 a 2.5), esto no es aplicable y el reequilibrio puede reiniciarse inmediatamente.
- La caché del navegador se utiliza en parte para recordar qué nodos se eliminaron, por lo que antes de volver a hacer clic en reequilibrar es crucial que recuerde volver a eliminar los nodos que se van para que el clúster no piense que el próximo reequilibrio debe incluirlos de nuevo.
- Configuración del cliente - Tanto Moxi como los clientes Couchbase necesitan ser configurados para apuntar al menos a un nodo Couchbase que forme parte del cluster real. El nodo con el que estén configurados les permitirá recibir la topología del cluster. Cuando reequilibres nodos fuera del cluster, asegúrate de que los clientes están configurados con un nodo que forma parte del cluster original con una configuración de respaldo apuntando a uno de los nodos recién actualizados que se están añadiendo. De este modo, los clientes podrán seguir accediendo al clúster a medida que se eliminen y añadan nodos, incluso si se crean nuevos objetos cliente durante el reequilibrio.
Seguimiento del progreso del reequilibrio
Por supuesto, puede supervisar a través de la propia GUI de reequilibrio, pero puede que necesite una vista más detallada para determinar si se estanca. Necesitarás observar al menos las dos métricas siguientes en los nodos, la cola de escritura en disco y el recuento de vBucket activos. En Couchbase 2.x hay más métricas detalladas de rebalanceo en la pestaña del servidor. También ten en cuenta que durante un rebalanceo Couchbase mueve un bucket cada vez. Así que si tienes múltiples cubos y no ves actividad en la cola de escritura en disco o en los números de cubo, puede que estés mirando el cubo equivocado.
Cola de escritura en disco
La cola de escritura en disco debe ser inferior a 1 millón para cada nodo. Si supera este número, el nodo enviará un mensaje de cancelación a otros nodos cuando intenten enviarle vbuckets durante el proceso de reequilibrio. Esto es normal y lo único que hay que hacer es esperar a que la cola de escritura en disco se vacíe para que empiece a aceptar operaciones de reequilibrio de nuevo. La cuota para este se puede configurarPero hazlo sólo si sabes lo que haces.
Recuento de cubos activos
Este número debería estar cambiando en los nodos que se están añadiendo y eliminando. Si este número no cambia durante 10-20 minutos, es posible que el reequilibrio se haya estancado y sea necesario detenerlo y reiniciarlo.
???
Para obtener información más detallada, consulte Supervisión de un reequilibrio en la documentación de Couchbase.
Reequilibrio desde la línea de comandos
Hacer esto nos da un poco más de flexibilidad sobre el uso de la Consola Web, ya que podemos añadir nuevos nodos y eliminar los antiguos nodos en un reequilibrio. Utilizaremos el comando couchbase-cli para especificar qué nodos añadir y cuáles eliminar. Detalles completos para el comando CLI disponible aquí.
–server-remove=192.168.0.2
–server-add=192.168.0.4
-server-add-username=Administrador
-servidor-añadir-contraseña=
Asegúrese de utilizar algo como pantalla o nohup ya que el reequilibrio puede tardar un poco dependiendo del tamaño de tu cluster, replicas, XDCR, etc.
Actualizaciones del SDK cliente
Como nota al margen, ya que estamos en el tema de las actualizaciones, los SDKs de cliente de Couchbase se actualizan mensualmente con correcciones de errores y nuevas características añadidas todo el tiempo. Este sería un buen momento para ver cuáles de las librerías cliente que utilizas han sido actualizadas y ponerlas en la cola de actualización de tus aplicaciones. Vaya aquí para obtener información sobre las actualizaciones del SDK.
Mientras estamos en el tema de SDKs de cliente, este es también un buen momento para asegurarse de que tiene al menos 2-3 de sus nodos de clúster en la cadena de conexión de configuración de cliente Couchbase en cada uno de sus servidores de aplicaciones.
[...] Blog de la Semana: Couchbase Rolling Upgrades [...]
[...] Couchbase Server 1.8 reemplaza a Membase Server 1.7 como nuestra oferta de base de datos "insignia". Además del obvio cambio de marca, hemos realizado mejoras sustanciales en el proceso de reequilibrio del clúster y solucionado una serie de problemas persistentes en 1.7. Animamos a todos nuestros usuarios a pasar a la versión 1.8. Puedes consultar el post de Alex Ma sobre la actualización de Couchbase Server. [...]