Docker Swarm y Service Mode para crear Couchbase Cluster explicaba cómo crear un clúster de Couchbase utilizando Docker. Utilizó el concepto de un servicio "maestro" y otro "trabajador" para simplificar y automatizar la creación del cluster. A continuación, se creó el clúster homogéneo como se muestra en el siguiente diagrama de arquitectura:
Para más información y antecedentes, consulte el Cluster Couchbase usando Docker blog.
Docker 1.13 se publicó la semana pasada. Una nueva función de esta versión permite desplegar una aplicación multicontenedor definida mediante Docker Compose en varios hosts habilitado utilizando el modo Enjambre. Idealmente, nos gustaría tener un único Docker Compose que permite arrancar el servicio "maestro" y arrancar/escalar el servicio "trabajador". Pero el servicio "maestro", y lo que es más importante, el contenedor dentro del servicio, tiene que estar completamente en marcha antes de que se pueda iniciar el servicio "trabajador". Esto se debe a que los contenedores del servicio "trabajador" se registran con el contenedor del servicio "maestro" para crear el clúster. Esto normalmente requiere un poco de trabajo manual como se define en Control del orden de inicio en Compose. Así que volveremos a esa versión más adelante.
Este blog proporcionará una actualización rápida de los pasos del original utilizando Docker 1.13. Lea este blog para una rápida cómo y la blog original para saber por qué.
Crear red:
1 2 3 |
docker red crear -d superponer couchbase |
Compruebe la red creada mediante docker network ls
mando:
1 2 3 4 5 6 7 |
RED ID NOMBRE CONDUCTOR ALCANCE 20a28d56f140 puente puente local 5maq7fyqdemx couchbase superponer enjambre cd14345ec130 docker_gwbridge puente local 46a19cdead82 host host local p1kbq62oxmn9 entrada superponer enjambre 1b64333f45ec ninguno null local |
Cree el servicio "maestro" de Couchbase:
1 2 3 4 5 6 7 |
docker servicio crear --nombre couchbase-maestro --réplicas 1 -p 8091:8091 --red couchbase -e TIPO=MAESTRO arungupta/couchbase |
Compruebe el servicio creado mediante docker service ls
mando:
1 2 |
ID NOMBRE MODO RÉPLICAS IMAGEN v5m0owjs4qo3 couchbase-maestro replicado 1/1 arungupta/couchbase:última |
Crear el servicio "worker" de Couchbase:
1 2 3 4 5 6 7 8 |
docker servicio crear --nombre couchbase-trabajador --réplicas 1 --red couchbase -e TIPO=TRABAJADOR -e AMO_DEL_CAMA=couchbase-maestro.couchbase -e AUTO_REBALANCE=falso arungupta/couchbase |
Compruebe de nuevo el servicio creado utilizando docker service ls
mando:
1 2 3 |
ID NOMBRE MODO RÉPLICAS IMAGEN v5m0owjs4qo3 couchbase-maestro replicado 1/1 arungupta/couchbase:última zqqqk76cu1jw couchbase-trabajador replicado 1/1 arungupta/couchbase:última |
Compruebe los registros del servicio de trabajadores utilizando el comando recién introducido docker service logs couchbase-worker
comando. Este comando, introducido recientemente en Docker 1.13, extrae los registros de todos los contenedores del servicio y los transmite a la consola. No hay necesidad de rastrear qué contenedores se están ejecutando en qué hosts.
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
couchbase-trabajador.1.3x52hro26166@moby | ++ configure -m couchbase-trabajador.1.3x52hro26166@moby | ++ dormir 15 couchbase-trabajador.1.3x52hro26166@moby | ++ /punto de entrada.sh couchbase-servidor couchbase-trabajador.1.3x52hro26166@moby | Inicio Couchbase Servidor -- Web INTERFAZ DE USUARIO disponible en http://:8091 y registros disponibles en /opt/couchbase/var/lib/couchbase/logs couchbase-trabajador.1.3x52hro26166@moby | ++ rizo -v -X POST http://127.0.0.1:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300 couchbase-trabajador.1.3x52hro26166@moby | Nota: Innecesario utilice de -X o --solicitar, POST es ya deducido. couchbase-trabajador.1.3x52hro26166@moby | * Prueba 127.0.0.1... couchbase-trabajador.1.3x52hro26166@moby | % Total % Recibido % Xferd Media Velocidad Tiempo Tiempo Tiempo Actual couchbase-trabajador.1.3x52hro26166@moby | Dload Cargar Total Gastado Izquierda Velocidad 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Conectado a 127.0.0.1 (127.0.0.1) puerto 8091 (#0) couchbase-trabajador.1.3x52hro26166@moby | > POST /piscinas/por defecto HTTP/1.1 couchbase-trabajador.1.3x52hro26166@moby | > Anfitrión: 127.0.0.1:8091 couchbase-trabajador.1.3x52hro26166@moby | > Usuario-Agente: rizo/7.49.1-DEV couchbase-trabajador.1.3x52hro26166@moby | > Acepte: */* couchbase-worker.1.3x52hro26166@moby | > Content-Length: 36 couchbase-worker.1.3x52hro26166@moby | > Content-Type: application/x-www-form-urlencoded couchbase-worker.1.3x52hro26166@moby | > couchbase-worker.1.3x52hro26166@moby } [36 bytes de datos] couchbase-worker.1.3x52hro26166@moby | * subida completamente enviada: 36 de 36 bytes couchbase-worker.1.3x52hro26166@moby | < HTTP/1.1 200 OK couchbase-worker.1.3x52hro26166@moby | < Servidor: Couchbase Server couchbase-worker.1.3x52hro26166@moby | < Pragma: no-cache couchbase-worker.1.3x52hro26166@moby | < Fecha: Sun, 22 Jan 2017 22:01:15 GMT couchbase-worker.1.3x52hro26166@moby | < Content-Length: 0 couchbase-worker.1.3x52hro26166@moby | < Cache-Control: no-cache couchbase-worker.1.3x52hro26166@moby | < 100 36 0 0 100 36 0 13057 --:--:-- --:--:-- --:--:-- 18000 couchbase-worker.1.3x52hro26166@moby | * Connection #0 to host 127.0.0.1 left intact couchbase-worker.1.3x52hro26166@moby | ++ curl -v http://127.0.0.1:8091/node/controller/setupServices -d services=kv%2Cn1ql%2Cindex couchbase-worker.1.3x52hro26166@moby | * Trying 127.0.0.1... couchbase-worker.1.3x52hro26166@moby | % Total % Received % Xferd Average Speed Time Time Time Current couchbase-worker.1.3x52hro26166@moby | Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0) couchbase-worker.1.3x52hro26166@moby | > POST /node/controller/setupServices HTTP/1.1 couchbase-worker.1.3x52hro26166@moby | > Host: 127.0.0.1:8091 couchbase-worker.1.3x52hro26166@moby | > User-Agent: curl/7.49.1-DEV couchbase-worker.1.3x52hro26166@moby | > Accept: */* couchbase-trabajador.1.3x52hro26166@moby | > Contenido-Longitud: 26 couchbase-trabajador.1.3x52hro26166@moby | > Contenido-Tipo: aplicación/x-www-formulario-urlencoded couchbase-trabajador.1.3x52hro26166@moby | > couchbase-trabajador.1.3x52hro26166@moby | } [26 bytes datos] couchbase-trabajador.1.3x52hro26166@moby | * cargar completamente enviado fuera de: 26 fuera de 26 bytes couchbase-trabajador.1.3x52hro26166@moby | < HTTP/1.1 200 OK couchbase-trabajador.1.3x52hro26166@moby | < Servidor: Couchbase Servidor couchbase-trabajador.1.3x52hro26166@moby | < Pragma: no-caché couchbase-trabajador.1.3x52hro26166@moby | < Fecha: Sol, 22 Jan 2017 22:01:15 GMT couchbase-trabajador.1.3x52hro26166@moby | < Contenido-Longitud: 0 couchbase-trabajador.1.3x52hro26166@moby | < Caché-Controlar: no-caché couchbase-trabajador.1.3x52hro26166@moby | < 100 26 0 0 100 26 0 13171 --:--:-- --:--:-- --:--:-- 26000 couchbase-trabajador.1.3x52hro26166@moby | * Conexión #0 to host 127.0.0.1 left intact couchbase-worker.1.3x52hro26166@moby | ++ curl -v http://127.0.0.1:8091/settings/web -d port=8091 -d username=Administrator -d password=password couchbase-worker.1.3x52hro26166@moby | * Trying 127.0.0.1... couchbase-worker.1.3x52hro26166@moby | % Total % Received % Xferd Average Speed Time Time Time Current couchbase-worker.1.3x52hro26166@moby | Dload Upload Total Gastado Velocidad Izquierda 0 0 0 0 0 0 0 0 --:--:--:--:--:--:--:-- 0* Conectado a 127.0.0.1 (127.0.0.1) puerto 8091 (#0) couchbase-worker.1.3x52hro26166@moby | > POST /settings/web HTTP/1.1 couchbase-trabajador.1.3x52hro26166@moby | > Anfitrión: 127.0.0.1:8091 couchbase-trabajador.1.3x52hro26166@moby | > Usuario-Agente: rizo/7.49.1-DEV couchbase-trabajador.1.3x52hro26166@moby | > Acepte: */* couchbase-trabajador.1.3x52hro26166@moby | > Contenido-Longitud: 50 couchbase-trabajador.1.3x52hro26166@moby | > Contenido-Tipo: aplicación/x-www-formulario-urlencoded couchbase-trabajador.1.3x52hro26166@moby | > couchbase-trabajador.1.3x52hro26166@moby | } [50 bytes datos] couchbase-trabajador.1.3x52hro26166@moby | * cargar completamente enviado fuera de: 50 fuera de 50 bytes couchbase-trabajador.1.3x52hro26166@moby | < HTTP/1.1 200 OK couchbase-trabajador.1.3x52hro26166@moby | < Servidor: Couchbase Servidor couchbase-trabajador.1.3x52hro26166@moby | < Pragma: no-caché couchbase-trabajador.1.3x52hro26166@moby | < Fecha: Sol, 22 Jan 2017 22:01:15 GMT couchbase-trabajador.1.3x52hro26166@moby | < Contenido-Tipo: aplicación/json couchbase-trabajador.1.3x52hro26166@moby | < Contenido-Longitud: 39 couchbase-trabajador.1.3x52hro26166@moby | < Caché-Controlar: no-caché couchbase-trabajador.1.3x52hro26166@moby | < couchbase-trabajador.1.3x52hro26166@moby | { [39 bytes datos] 100 89 100 39 100 50 3423 4389 --:--:-- --:--:-- --:--:-- 4545 couchbase-trabajador.1.3x52hro26166@moby | * Conexión #0 al host 127.0.0.1 intacto couchbase-trabajador.1.3x52hro26166@moby | ++ rizo -i -u Administrador:contraseña -X POST http://127.0.0.1:8091/settings/indexes -d storageMode=memory_optimized couchbase-trabajador.1.3x52hro26166@moby | % Total % Recibido % Xferd Media Velocidad Tiempo Tiempo Tiempo Actual couchbase-trabajador.1.3x52hro26166@moby | Dload Cargar Total Gastado Izquierda Velocidad 100 180 100 152 100 28 13264 2443 --:--:-- --:--:-- --:--:-- 13818 couchbase-trabajador.1.3x52hro26166@moby | {"newBaseUri":"http://127.0.0.1:8091/"}HTTP/1.1 200 OK couchbase-trabajador.1.3x52hro26166@moby | Servidor: Couchbase Servidor couchbase-trabajador.1.3x52hro26166@moby | Pragma: no-caché couchbase-trabajador.1.3x52hro26166@moby | Fecha: Sol, 22 Jan 2017 22:01:15 GMT couchbase-trabajador.1.3x52hro26166@moby | Contenido-Tipo: aplicación/json couchbase-trabajador.1.3x52hro26166@moby | Contenido-Longitud: 152 couchbase-trabajador.1.3x52hro26166@moby | Caché-Controlar: no-caché couchbase-trabajador.1.3x52hro26166@moby | couchbase-trabajador.1.3x52hro26166@moby | ++ echo Tipo: TRABAJADOR' couchbase-trabajador.1.3x52hro26166@moby | ++ '[' TRABAJADOR = TRABAJADOR ']' couchbase-trabajador.1.3x52hro26166@moby | ++ echo 'Durmiendo...' couchbase-trabajador.1.3x52hro26166@moby | ++ dormir 15 couchbase-trabajador.1.3x52hro26166@moby | {"storageMode":"memoria_optimizada","indexerThreads":0,"memorySnapshotInterval":200,"stableSnapshotInterval":5000,"maxRollbackPoints":5,"logLevel":"info"}Tipo: TRABAJADOR couchbase-trabajador.1.3x52hro26166@moby | Para dormir ... couchbase-trabajador.1.3x52hro26166@moby | +++ nombre de host -I couchbase-trabajador.1.3x52hro26166@moby | +++ corte -d ' ' -f1 couchbase-trabajador.1.3x52hro26166@moby | ++ IP=10.0.0.5 couchbase-trabajador.1.3x52hro26166@moby | ++ echo IP: ' 10.0.0.5 couchbase-trabajador.1.3x52hro26166@moby | ++ echo Auto Rebalance: false couchbase-trabajador.1.3x52hro26166@moby | IP: 10.0.0.5 couchbase-trabajador.1.3x52hro26166@moby | ++ '[' falso = verdadero ']' couchbase-trabajador.1.3x52hro26166@moby | ++ couchbase-cli servidor-añada --grupo=couchbase-maestro.couchbase:8091 --usuario=Administrador --contraseña=contraseña --servidor-añada=10.0.0.5 --servidor-añada-nombre de usuario=Administrador --servidor-añada-contraseña=contraseña couchbase-trabajador.1.3x52hro26166@moby | Auto Reequilibrar: falso couchbase-trabajador.1.3x52hro26166@moby | Advertencia: Añadir servidor de grupo-gestionar es obsoleto couchbase-trabajador.1.3x52hro26166@moby | Servidor 10.0.0.5:8091 añadido couchbase-trabajador.1.3x52hro26166@moby | ++ fg 1 couchbase-trabajador.1.3x52hro26166@moby | /punto de entrada.sh couchbase-servidor |
Los registros completos muestran cómo se creó el servicio "trabajador" y se unió al clúster creado originalmente por "maestro".
Escala el clúster escalando el servicio Docker:
1 |
docker servicio escala couchbase-trabajador=2 |
Compruebe de nuevo el servicio mediante docker service ls
mando:
1 2 3 |
ID NOMBRE MODO RÉPLICAS IMAGEN v5m0owjs4qo3 couchbase-maestro replicado 1/1 arungupta/couchbase:última zqqqk76cu1jw couchbase-trabajador replicado 2/2 arungupta/couchbase:última |
Ahora tienes un cluster Couchbase de tres nodos. Antes de reequilibrio del clústervamos a comprobar rápidamente lo que hace Consola web de Couchbase espectáculos.
Se puede acceder a la consola web de Couchbase en http://localhost:8091 y muestra un único nodo Couchbase con datos, índice y servicio de consulta. Este nodo se creó utilizando el servicio "master". Dos nodos adicionales creados utilizando el servicio "worker" se muestran en Pendiente de reequilibrio
ficha:
Haga clic en Reequilibrar para reequilibrar
el clúster y ver el clúster totalmente reequilibrado:
¿Quieres empezar a usar Couchbase? Mira en Kits de inicio de Couchbase.
¿Quieres saber más sobre cómo ejecutar Couchbase en contenedores?
[...] también puede considerar ejecutar Couchbase Cluster usando Docker o leer más sobre Despliegue de servicios Docker para [...]