Esta entrada del blog explicará cómo crear y escalar un clúster Couchbase utilizando la armadura completa de Docker - Docker Machine, Docker Swarm y Docker Compose. Esto es lo que haremos:
- Crear un clúster Docker Swarm de 3 nodos utilizando Docker Machine
- Ejecutar una instancia de Couchbase en dos nodos
- Crear un clúster
- Reequilibrar el clúster
- Escalar y reequilibrar de nuevo el clúster

Clúster Docker Swarm usando Consul
Cree un clúster Docker Swarm de tres nodos utilizando Docker Machine:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# Máquina Docker para Consul docker-máquina crear -d virtualbox cónsul-máquina # Inicio Cónsul docker $(docker-máquina config cónsul-máquina) ejecute -d --reiniciar=siempre -p "8500:8500" -h "cónsul" progrium/cónsul -servidor -arranque # Docker Swarm maestro docker-máquina crear -d virtualbox --enjambre --enjambre-maestro --enjambre-descubrimiento="consul://$(docker-machine ip consul-machine):8500" --motor-op="cluster-store=consul://$(docker-machine ip consul-machine):8500" --motor-op="cluster-advertise=eth1:2376" enjambre-maestro # Enjambre Docker nodo-01 docker-máquina crear -d virtualbox --enjambre --enjambre-descubrimiento="consul://$(docker-machine ip consul-machine):8500" --motor-op="cluster-store=consul://$(docker-machine ip consul-machine):8500" --motor-op="cluster-advertise=eth1:2376" enjambre-nodo-01 # Enjambre Docker nodo-02 docker-máquina crear -d virtualbox --virtualbox-disco-talla "5000" --enjambre --enjambre-descubrimiento="consul://$(docker-machine ip consul-machine):8500" --motor-op="cluster-store=consul://$(docker-machine ip consul-machine):8500" --motor-op="cluster-advertise=eth1:2376" enjambre-nodo-02 # Configurar para utilizar el clúster Docker Swarm evalúe "$(docker-machine env --swarm swarm-master)" |
Aprovisionar un clúster Swarm con Docker Machine proporcionan más detalles sobre por qué y qué se hace en este script. He aquí un resumen:
- Crear una máquina Docker y ejecutar Consul para el descubrimiento de servicios
- Cree tres máquinas Docker: una para el nodo maestro y dos para los nodos de trabajo. Cada máquina se configura para formar parte de un clúster Swarm utilizando
--swarm. También utiliza el descubrimiento de servicios Consul especificado mediante--swarm-discovery.
Nodos Couchbase en Docker Swarm
Crea dos instancias de Couchbase usando Docker Compose:
|
1 2 3 4 5 6 7 8 9 10 |
versión: "2" servicios: db: imagen: arungupta/couchbase modo_red: "anfitrión" puertos: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 |
arungupta/couchbase se utiliza aquí. Esta imagen se define en Imagen Docker de Couchbase. Utiliza el Imagen Docker oficial de Couchbase añada
lo configura como se ha explicado:
- Configura la memoria para índice y datos
- Configura el servidor Couchbase con el servicio de índices, datos y consultas.
- Establece las credenciales de nombre de usuario y contraseña
- Carga el
viaje-muestracubo
El archivo Compose utiliza host red. Esto equivale a utilizar --net=host en docker run CLI. Permite que el contenedor utilice la pila de red del host. También limita la ejecución de un único contenedor Couchbase en
una sola máquina Docker. Esto significa que nuestro cluster Couchbase puede escalar basado en el número de máquinas Docker - 3 en nuestro caso. El comando exacto para usar este archivo Compose es:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
docker-componer escala db=2 ADVERTENCIA: En "db" servicio especifica a puerto en el host. Si varios contenedores para este servicio son creado en a solo host, el puerto se choque. Creación de y Inicio couchbasedockerswarm_db_1 ... Creación de y Inicio couchbasedockerswarm_db_2 ... Tirando de db (arungupta/couchbase:última)... enjambre-nodo-02: Tirando de arungupta/couchbase:última... enjambre-maestro: Tirando de arungupta/couchbase:última... enjambre-nodo-01: Tirando de arungupta/couchbase:última... Tirando de db (arungupta/couchbase:última)... enjambre-nodo-02: Tirando de arungupta/couchbase:última... : descargado Creación de y Inicio couchbasedockerswarm_db_1 ... hecho Creación de y Inicio couchbasedockerswarm_db_2 ... hecho |
Hay tres nodos en el clúster Docker Swarm. El estrategia de programación por defecto es difundir por lo que los contenedores estarán repartidos en diferentes hosts. Esto es evidente
por docker ps:
|
1 2 3 4 |
docker ps CONTENEDOR ID IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES 4c8c149f4e34 arungupta/couchbase "/entrypoint.sh /opt/" 44 segundos hace Arriba 44 segundos enjambre-nodo-02/couchbasedockerswarm_db_1 d3b6a1dbddb5 arungupta/couchbase "/entrypoint.sh /opt/" 44 segundos hace Arriba 44 segundos enjambre-nodo-01/couchbasedockerswarm_db_2 |
Tenga en cuenta que un servidor Couchbase se ejecuta en nodo-enjambre-01 y otro en enjambre-nodo-02. Cada servidor está configurado con un nombre de usuario de administrador Administrador y contraseña contraseña. Descubra IP
dirección de la máquina Docker:
|
1 2 3 4 5 6 7 |
docker-máquina ls NOMBRE ACTIVO CONDUCTOR ESTADO URL SWARM DOCKER ERRORES cónsul-máquina - virtualbox Ejecutar tcp://192.168.99.106:2376 v1.11.1 por defecto - virtualbox Ejecutar tcp://192.168.99.100:2376 v1.11.0 enjambre-maestro * (enjambre) virtualbox Ejecutar tcp://192.168.99.107:2376 swarm-master (maestro) v1.11.1 enjambre-nodo-01 - virtualbox Ejecutar tcp://192.168.99.108:2376 swarm-master v1.11.1 enjambre-nodo-02 - virtualbox Ejecutar tcp://192.168.99.109:2376 swarm-master v1.11.1 |
Si tiene jq instalado entonces la dirección IP se puede encontrar convenientemente como:
|
1 2 |
docker-máquina inspeccionar enjambre-nodo-01 | jq ".Driver.IPAddress" "192.168.99.108" |
Clúster Couchbase en Docker Swarm
Todos los nodos del servidor Couchbase son iguales. Esto permite al cluster de Couchbase escalar horizontalmente para satisfacer las crecientes demandas de tu aplicación. Se pueden añadir nodos Couchbase independientes a un cluster invocando el comando servidor-add comando CLI. Normalmente, este proceso consta de dos pasos. El primer paso es añadir uno o más nodos. El segundo paso reequilibra el cluster donde los datos en los nodos existentes se reequilibran a través del cluster actualizado. En nuestro caso, un único Couchbase
se está ejecutando en cada máquina Docker. Vamos a elegir la dirección IP de cualquier nodo Couchbase, y añadir la dirección IP del otro nodo:
|
1 2 3 4 5 6 7 8 9 10 |
docker ejecute -it arungupta/couchbase couchbase-cli servidor-añada --grupo=`docker-máquina inspeccionar enjambre-nodo-01 | jq -r ".Driver.IPAddress"`:8091 --usuario Administrador --contraseña contraseña --servidor-añada=`docker-máquina inspeccionar enjambre-nodo-02 | jq -r ".Driver.IPAddress"` --servidor-añada-nombre de usuario=Administrador --servidor-añada-contraseña=contraseña ÉXITO: servidor-añada 192.168.99.109:8091 |
Couchbase Web Console para ambos nodos mostrará una salida similar:


Esto muestra que los dos nodos forman ahora un cluster, y necesita ser reequilibrado.
Reequilibrio del clúster Couchbase
Ahora, vamos a reequilibrar el clúster:
|
1 2 3 |
docker ejecute -it arungupta/couchbase couchbase-cli reequilibrar --grupo=`docker-máquina inspeccionar enjambre-nodo-01 | jq -r ".Driver.IPAddress"`:8091 --usuario Administrador --contraseña contraseña INFO: reequilibrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÉXITO: reequilibrado grupo |
Couchbase Web Console se actualizará para mostrar que el reequilibrio está ocurriendo:

Y finalmente verás un clúster reequilibrado:
Escalar y reequilibrar el clúster Couchbase
Escalar el clúster Couchbase:
|
1 2 3 |
docker-componer escala db=3 ADVERTENCIA: En "db" servicio especifica a puerto en el host. Si varios contenedores para este servicio son creado en a solo host, el puerto se choque. Creación de y Inicio couchbasedockerswarm_db_3 ... hecho |
Compruebe que el contenedor se está ejecutando en una máquina Docker diferente:
|
1 2 3 4 5 |
docker ps CONTENEDOR ID IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES 02f94e2bbd3e arungupta/couchbase "/entrypoint.sh /opt/" 9 segundos hace Arriba 8 segundos enjambre-maestro/couchbasedockerswarm_db_3 4c8c149f4e34 arungupta/couchbase "/entrypoint.sh /opt/" Acerca de un hora hace Arriba Acerca de un hora enjambre-nodo-02/couchbasedockerswarm_db_1 d3b6a1dbddb5 arungupta/couchbase "/entrypoint.sh /opt/" Acerca de un hora hace Arriba Acerca de un hora enjambre-nodo-01/couchbasedockerswarm_db_2 |
Como se mencionó anteriormente, escalar un cluster de Couchbase es un proceso de dos pasos. Esto es así porque normalmente añadirás múltiples servidores y luego reequilibrarás el cluster. Sin embargo, en casos donde solo necesitas añadir un solo nodo Couchbase y luego rebalancear,
se puede utilizar el comando de reequilibrio para conseguirlo. En nuestro caso, esto se hace como se muestra:
|
1 2 3 4 |
docker ejecute -it arungupta/couchbase couchbase-cli reequilibrar --grupo=`docker-máquina inspeccionar enjambre-nodo-01 | jq -r ".Driver.IPAddress"`:8091 --usuario Administrador --contraseña contraseña --servidor-añada=`docker-máquina inspeccionar enjambre-maestro | jq -r ".Driver.IPAddress"` --servidor-añada-nombre de usuario=Administrador --servidor-añada-contraseña=contraseña ÉXITO: servidor-añada 192.168.99.107:8091 INFO: reequilibrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÉXITO: reequilibrado grupo |
El clúster reequilibrado tiene ahora este aspecto:

Este blog muestra cómo se puede crear y escalar fácilmente un clúster Couchbase utilizando Docker Swarm, Machine y Compose. ¡Que lo disfrutes! Lectura adicional ...
