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:
1 2 3 4 |
docker ejecute -d -p 7091:8091 --nombre couchbase1 couchbase/servidor docker ejecute -d -p 8091:8091 --nombre couchbase2 couchbase/servidor docker ejecute -d -p 9091:8091 --nombre couchbase3 couchbase/servidor docker ejecute -d -p 10091:8091 --nombre couchbase4 couchbase/servidor |
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.
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.
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.
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.
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.
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.
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.