Cuando se trata de escalar una base de datos, suele ser una tarea que la gente quiere evitar. En el caso de las bases de datos relacionales, que suelen tener un tamaño vertical, los administradores tendrían que desconectar la base de datos y añadir nuevo hardware a los servidores. En este escenario, cualquier escalado que se produzca es una operación unidireccional, lo que significa que probablemente nunca se quitará hardware y se reducirá la escala. En el caso de las bases de datos NoSQL, que suelen ser bases de datos distribuidas, el hardware suele eliminarse de la ecuación, pero a veces a costa de la simplicidad de la configuración. Tomemos MongoDB, por ejemplo, que tiene varios nodos diferentes que incluyen maestro, esclavo, réplica y shard.

Aquí es donde Servidor Couchbase entra.

Couchbase Server es una base de datos NoSQL distribuida que fue diseñada para poder escalarse fácilmente. Debido a la arquitectura peer-to-peer de nodo único, los clústeres se pueden escalar hacia arriba o hacia abajo para satisfacer la demanda con sólo unos clics del ratón. Si la interfaz de usuario no se adapta a tus necesidades, también puedes utilizar las API y las herramientas CLI disponibles.

Vamos a ver exactamente lo fácil que puede ser escalar un clúster cuando se utiliza Couchbase como la base de datos de elección en su organización.

En este ejemplo, vamos a explorar el escalado de clústeres mediante Docker. En producción, podrías estar utilizando cualquier número de soluciones para alojar tus nodos. Independientemente del escenario, los pasos para escalar para satisfacer una demanda creciente o decreciente serán los mismos.

Creación de nodos de servidor Couchbase con Docker

Asumiendo que ya tienes Docker instalado, querrás ejecutar los siguientes comandos desde la CLI de Docker:

Los comandos anteriores crearán cuatro contenedores Couchbase utilizando la imagen Docker oficial que se encuentra en Centro Docker. Cada contenedor tendrá un nombre diferente y un puerto host diferente. Couchbase Server usa muchos puertos, pero sólo necesitamos mapear el puerto del administrador porque es el único al que accederemos desde la máquina anfitriona. Los otros puertos pueden ser accedidos por los contenedores dentro de la red de contenedores.

Con los nodos disponibles, podemos crear un clúster y ampliarlo.

Escalado de Couchbase Server para una demanda creciente

En este momento no tenemos un cluster Couchbase configurado. Desde un navegador web, navega a http://localhost:7091.

Couchbase Server Create or Join

Dado que se trata de un nuevo nodo, vamos a configurar un nuevo clúster. Sigue los pocos pasos del asistente de configuración hasta que llegues al panel de control administrativo de Couchbase. Enhorabuena, ¡tienes un cluster Couchbase de un solo nodo!

Cree un Cubo, añádale algunos documentos y continúe.

Avancemos al futuro y supongamos que su negocio está en auge. El clúster de un solo nodo ya no es suficiente y necesitas más potencia. Desde el navegador web, navegue a http://localhost:8091, que es uno de sus nodos actualmente no utilizados. En lugar de crear un nuevo clúster, vamos a unirnos a un clúster existente.

Couchbase Join Cluster

Se le pedirá un host de un nodo existente en el clúster. Como estamos usando Docker, asegúrate de obtener la IP correcta del contenedor y no la IP del host. Después de elegir unirse al clúster, puede comprobar los servidores dentro de su clúster.

Couchbase Server List

En este momento debería haber dos servidores en su cluster. La unión del clúster existente y su ampliación no se completan hasta que se reequilibra el clúster. Al reequilibrar el clúster, los datos se reparten de forma que ningún nodo tenga que soportar una carga excesiva. El clúster permanece disponible durante el reequilibrio sin tiempo de inactividad.

Supongamos que la demanda de tu aplicación está fuera de control y necesitas añadir otro nodo al cluster. Vamos a hacer algo un poco diferente esta vez. Desde el navegador web, navega a http://localhost:9091, que actualmente es un nodo no utilizado. En lugar de unirnos al clúster, vamos a crear un nuevo clúster. Una vez configurado el clúster, toma nota de la IP del contenedor.

Couchbase Server Add Node

Vuelve a la lista de servidores del cluster original y elige añadir un nuevo servidor. El nuevo clúster que acabas de crear se borrará y se añadirá a nuestro clúster original. Recuerde que no ha terminado de escalar su clúster hasta que realice un reequilibrio.

Couchbase Server Rebalance

A medida que su clúster y sus necesidades de datos crecen, el reequilibrio puede tardar un poco. Recuerda que el clúster permanece en línea durante este tiempo, lo que es conveniente para las operaciones.

Escalado de Couchbase Server para una demanda decreciente

Así que ha tenido un buen año, pero digamos que la demanda de sus servidores ha disminuido. Suele pasar, pero cuando pasa, probablemente no quieras estar pagando por esos recursos que no estás usando. Por suerte para nosotros, escalar Couchbase hacia abajo es tan fácil como escalarlo hacia arriba.

Vuelve a la lista de servidores de tu cluster.

Couchbase Remove Node

Elija un servidor de la lista del que desee deshacerse. Sin embargo, hay algunas cosas que debes tener en cuenta antes de empezar a eliminar nodos de tu clúster:

  • Asegúrese de que su clúster puede soportar realmente la carga sin los recursos que tenía antes.
  • Comprender la diferencia entre una situación de eliminación y una de conmutación por error.

En lo que respecta a la conmutación por error o la eliminación, ten en cuenta que la conmutación por error suele ser para el mantenimiento del nodo. En otras palabras, lo que se pretende es recuperar el nodo, no deshacerse de él para siempre. Eliminar un nodo no significa simplemente eliminarlo del clúster. Tendrá que hacer un reequilibrio para finalizar la eliminación de modo que los datos no se destruyan. Una vez completado el reequilibrio, tendrás un clúster más pequeño.

Conclusión

Acabas de ver lo fácil que es escalar Couchbase hacia arriba o hacia abajo para satisfacer la demanda de tus aplicaciones. Si bien es posible en la mayoría de las otras soluciones de bases de datos, ya sea relacional o NoSQL, no se comparan cuando se trata del factor de conveniencia que Couchbase ofertas. Con sólo unos clics del ratón, se pueden añadir o eliminar nodos de cualquier clúster.

Para obtener más información sobre el uso de Couchbase, consulte la página Portal para desarrolladores de Couchbase.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

Dejar una respuesta