Couchbase en Amazon Marketplace mostró cómo configurar un único nodo Couchbase usando la Consola EC2. Pero normalmente se aprovisionan estos nodos en masa, y más comúnmente
crear un clúster de ellos. Los clústeres de Couchbase son homogéneos, escalan horizontalmente y, por tanto, garantizan que la base de datos no se convierta en un cuello de botella para tu aplicación de alto rendimiento.
En este blog se muestra cómo crear, escalar y reequilibrar un clúster de Couchbase mediante la interfaz de línea de comandos (CLI) de AWS.
Instalar AWS CLI
Instalar la CLI de AWS proporcionar detalles completos, pero esto es lo que funcionó en mi máquina:
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 |
herramientas > pip instale awscli Recopilación awscli Descargar awscli-1.10.27-py2.py3-ninguno-cualquier.whl (937kB) 100% |"""""""""""""""""""""""""""""""| 937kB 561kB/s Recopilación rsa<=3.3.0,>=3.1.2 (de awscli) Descargar rsa-3.3-py2.py3-ninguno-cualquier.whl (44kB) 100% |"""""""""""""""""""""""""""""""| 45kB 7,7MB/s Recopilación s3transfer==0.0.1 (de awscli) Descargar s3transfer-0.0.1-py2.py3-ninguno-cualquier.whl Recopilación colorama<=0.3.3,>=0.2.5 (de awscli) Descargar colorama-0.3.3.tar.gz Recopilación botocore==1.4.18 (de awscli) Descargar botocore-1.4.18-py2.py3-ninguno-cualquier.whl (2,3 MB) 100% |"""""""""""""""""""""""""""""""| 2,3 MB 221kB/s Recopilación docutils>=0.10 (de awscli) Descargar docutils-0.12.tar.gz (1,6 MB) 100% |"""""""""""""""""""""""""""""""| 1,6 MB 328kB/s Recopilación pyasn1>=0.1.3 (de rsa<=3.3.0,>=3.1.2->awscli) Utilizando en caché pyasn1-0.1.9-py2.py3-ninguno-cualquier.whl Recopilación futuros<4.0.0,>=2.2.0 (de s3transfer==0.0.1->awscli) Utilizando en caché futuros-3.0.5-py2-ninguno-cualquier.whl Recopilación jmespath<1.0.0,>=0.7.1 (de botocore==1.4.18->awscli) Descargar jmespath-0.9.0-py2.py3-ninguno-cualquier.whl Recopilación python-dateutil<3.0.0,>=2.1 (de botocore==1.4.18->awscli) Descargar python_dateutil-2.5.3-py2.py3-ninguno-cualquier.whl (201kB) 100% |"""""""""""""""""""""""""""""""| 204kB 2,4 MB/s Recopilación seis>=1.5 (de python-dateutil<3.0.0,>=2.1->botocore==1.4.18->awscli) Utilizando en caché seis-1.10.0-py2.py3-ninguno-cualquier.whl Edificio ruedas para recogida paquetes: colorama, docutils Ejecutar configuración.py bdist_wheel para colorama ... hecho Almacenado en directorio: /Usuarios/arungupta/Biblioteca/Cachés/pip/ruedas/21/c5/cf/63fb92293f3ad402644ccaf882903cacdb8fe87c80b62c84df Ejecutar configuración.py bdist_wheel para docutils ... hecho Almacenado en directorio: /Usuarios/arungupta/Biblioteca/Cachés/pip/ruedas/db/de/bd/b99b1e12d321fbc950766c58894c6576b1a73ae3131b29a151 Con éxito construido colorama docutils Instalación de recogida paquetes: pyasn1, rsa, futuros, jmespath, seis, python-dateutil, docutils, botocore, s3transfer, colorama, awscli Con éxito instalado awscli-1.10.27 botocore-1.4.18 colorama-0.3.3 docutils-0.12 futuros-3.0.5 jmespath-0.9.0 pyasn1-0.1.9 python-dateutil-2.5.3 rsa-3.3 s3transfer-0.0.1 seis-1.10.0 |
Configure la CLI:
1 2 3 4 5 |
aws configure AWS Acceda a Clave ID [****************Q5FQ]: SU ACCESO CLAVE ID AWS Secreto Acceda a Clave [****************thBR]: SU SECRETO ACCESO CLAVE Por defecto región nombre [us-oeste-1]: Por defecto salida formato [Ninguno]: |
Introduzca su identificador de clave de acceso y su clave de acceso secreta. Puede obtenerlas como se explica en Obtención del identificador y la clave secreta de acceso.
Crear grupo de seguridad de AWS
Si antes aprovisionó un servidor mediante Amazon 1-click entonces un grupo de seguridad con el nombre Couchbase Server Community Edition-4-0-0-AutogenByAWSMP-
es
creado para usted. Este grupo de seguridad tiene todos los puertos autorizados requeridos para crear un cluster Couchbase y puede ser usado para crear la instancia. Alternativamente, puedes crear un nuevo grupo de seguridad y autorizar explícitamente los puertos.
Crear un grupo de seguridad:
1 2 3 4 |
aws ec2 crear-seguridad-grupo --grupo-nombre mi-couchbase-sg --descripción "Mi grupo de seguridad Couchbase" { "GroupId": "sg-c9bb19ad" } |
Autorizar puertos en el grupo de seguridad:
1 2 3 4 |
aws ec2 autorice-seguridad-grupo-entrada --grupo-nombre mi-couchbase-sg --puerto 8091-8093 --protocolo tcp --cidr 0.0.0.0/0 aws ec2 autorice-seguridad-grupo-entrada --grupo-nombre mi-couchbase-sg --puerto 11209-11211 --protocolo tcp --cidr 0.0.0.0/0 aws ec2 autorice-seguridad-grupo-entrada --grupo-nombre mi-couchbase-sg --puerto 21100-21299 --protocolo tcp --cidr 0.0.0.0/0 aws ec2 autorice-seguridad-grupo-entrada --grupo-nombre mi-couchbase-sg --puerto 4369 --protocolo tcp --cidr 0.0.0.0/0 |
Crear un par de claves de AWS
Más información sobre la creación par de llaves. Crea un par de claves:
1 |
aws ec2 crear-clave-par --clave-nombre mi-couchbase-clave > mi-couchbase-clave.pem |
Anote el nombre de la clave, ya que se utilizará más adelante.
Crear nodos Couchbase en Amazon
Crear dos instancias utilizando el grupo de seguridad recién creado como:
1 |
aws ec2 ejecute-instancias --imagen-id ami-db95ffbb --cuente 2 --instancia-tipo m3.grande --clave-nombre mi-couchbase-clave --seguridad-grupos mi-couchbase-sg |
Tenga en cuenta que el número de instancias se especifica mediante --cuenta 2
. El ID de la AMI se puede obtener utilizando la consola de EC2: https://us-west-1.console.aws.amazon.com/ec2/v2/home?region=us-west-1#Images:visibility=public-images;search=couchbase;sort=desc:name.
O crear dos instancias utilizando el grupo de seguridad pre-creado como:
1 |
aws ec2 ejecute-instancias --imagen-id ami-db95ffbb --cuente 2 --instancia-tipo m3.grande --clave-nombre mi-couchbase-clave --seguridad-grupos "Couchbase Server Community Edition-4-0-0-AutogenByAWSMP-" |
Esto mostrará la salida como:
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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
{ "OwnerId": "598307997273", "ReservationId": "r-cb952179", "Grupos": [], "Instancias": [ { "Monitorización": { "Estado": "desactivado" }, "PublicDnsName": "", "RootDeviceType": "ebs", "Estado": { "Código": 0, "Nombre": "pendiente" }, "EbsOptimized": falso, "Hora de lanzamiento": "2016-05-16T16:11:59.000Z", "PrivateIpAddress" (Dirección IP privada): "172.31.15.200", "CódigosProducto": [], "VpcId": "vpc-c561f9a0", "StateTransitionReason": "", "InstanceId": "i-90199025", "ImageId": "ami-db95ffbb", "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "NombreClave": "mi-clave-sofa", "Grupos de seguridad": [ { "NombreGrupo": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "ClientToken": "", "SubnetId": "subred-625bd23b", "Tipo de instancia": "m3.large", "InterfacesDeRed": [ { "Estado": "en uso", "MacDirección": "06:b1:52:a6:87:f7", "SourceDestCheck": verdadero, "VpcId": "vpc-c561f9a0", "Descripción": "", "IdInterfazRed": "eni-86ac6fdb", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "Primaria": verdadero, "PrivateIpAddress" (Dirección IP privada): "172.31.15.200" } ], "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "Adjunto": { "Estado": "adjuntando", "DeviceIndex": 0, "DeleteOnTermination: verdadero, "AttachmentId": "eni-attach-530b7293", "AttachTime": "2016-05-16T16:11:59.000Z" }, "Grupos": [ { "NombreGrupo": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "SubnetId": "subred-625bd23b", "OwnerId": "598307997273", "PrivateIpAddress" (Dirección IP privada): "172.31.15.200" } ], "SourceDestCheck": verdadero, "Colocación": { "Arrendamiento": "por defecto", "NombreGrupo": "", "Zona de disponibilidad": "us-oeste-1c" }, "Hipervisor": "xen", "BlockDeviceMappings": [], "Arquitectura": "x86_64", "EstadoRazón": { "Mensaje": "pendiente", "Código": "pendiente" }, "RootDeviceName": "/dev/xvda", "Tipo de virtualización": "hvm", "AmiLaunchIndex": 0 }, { "Monitorización": { "Estado": "desactivado" }, "PublicDnsName": "", "RootDeviceType": "ebs", "Estado": { "Código": 0, "Nombre": "pendiente" }, "EbsOptimized": falso, "Hora de lanzamiento": "2016-05-16T16:11:59.000Z", "PrivateIpAddress" (Dirección IP privada): "172.31.15.201", "CódigosProducto": [], "VpcId": "vpc-c561f9a0", "StateTransitionReason": "", "InstanceId": "i-93199026", "ImageId": "ami-db95ffbb", "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "NombreClave": "mi-clave-sofa", "Grupos de seguridad": [ { "NombreGrupo": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "ClientToken": "", "SubnetId": "subred-625bd23b", "Tipo de instancia": "m3.large", "InterfacesDeRed": [ { "Estado": "en uso", "MacDirección": "06:83:e8:06:2a:f1", "SourceDestCheck": verdadero, "VpcId": "vpc-c561f9a0", "Descripción": "", "IdInterfazRed": "eni-81ac6fdc", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "Primaria": verdadero, "PrivateIpAddress" (Dirección IP privada): "172.31.15.201" } ], "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "Adjunto": { "Estado": "adjuntando", "DeviceIndex": 0, "DeleteOnTermination: verdadero, "AttachmentId": "eni-attach-680b72a8", "AttachTime": "2016-05-16T16:11:59.000Z" }, "Grupos": [ { "NombreGrupo": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "SubnetId": "subred-625bd23b", "OwnerId": "598307997273", "PrivateIpAddress" (Dirección IP privada): "172.31.15.201" } ], "SourceDestCheck": verdadero, "Colocación": { "Arrendamiento": "por defecto", "NombreGrupo": "", "Zona de disponibilidad": "us-oeste-1c" }, "Hipervisor": "xen", "BlockDeviceMappings": [], "Arquitectura": "x86_64", "EstadoRazón": { "Mensaje": "pendiente", "Código": "pendiente" }, "RootDeviceName": "/dev/xvda", "Tipo de virtualización": "hvm", "AmiLaunchIndex": 1 } ] } |
El estado de las instancias puede comprobarse como:
1 |
aws ec2 describa-instancia-estado --instancia-ids `aws ec2 describa-instancias --consulta Reservations[*].Instances[*].[InstanceId]' --filtros Nombre=instancia-estado-nombre,Valores=corriendo --salida texto` |
Y muestra la salida como:
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 |
{ "InstanceStatuses": [ { "InstanceId": "i-90199025", "InstanceState": { "Código": 16, "Nombre": "corriendo" }, "Zona de disponibilidad": "us-oeste-1c", "Estado del sistema": { "Estado": "inicializando", "Detalles": [ { "Estado": "inicializando", "Nombre": "accesibilidad" } ] }, "InstanceStatus": { "Estado": "inicializando", "Detalles": [ { "Estado": "inicializando", "Nombre": "accesibilidad" } ] } }, { "InstanceId": "i-93199026", "InstanceState": { "Código": 16, "Nombre": "corriendo" }, "Zona de disponibilidad": "us-oeste-1c", "Estado del sistema": { "Estado": "inicializando", "Detalles": [ { "Estado": "inicializando", "Nombre": "accesibilidad" } ] }, "InstanceStatus": { "Estado": "inicializando", "Detalles": [ { "Estado": "inicializando", "Nombre": "accesibilidad" } ] } } ] } |
Aquí el estado se muestra como inicializando
. Las instancias tardan unos minutos en aprovisionarse. Las instancias que han superado todas las comprobaciones pueden verificarse como:
1 |
aws ec2 describa-instancia-estado --filtros Nombre=instancia-estado.accesibilidad,Valores=aprobado --instancia-ids `aws ec2 describa-instancias --consulta Reservations[*].Instances[*].[InstanceId]' --filtros Nombre=instancia-estado-nombre,Valores=corriendo --salida texto` |
Al principio, muestra el resultado como:
1 2 3 |
{ "InstanceStatuses": [] } |
Pero una vez que todas las instancias pasan la comprobación, entonces los resultados se ven así:
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 |
{ "InstanceStatuses": [ { "InstanceId": "i-90199025", "InstanceState": { "Código": 16, "Nombre": "corriendo" }, "Zona de disponibilidad": "us-oeste-1c", "Estado del sistema": { "Estado": "ok", "Detalles": [ { "Estado": "aprobado", "Nombre": "accesibilidad" } ] }, "InstanceStatus": { "Estado": "ok", "Detalles": [ { "Estado": "aprobado", "Nombre": "accesibilidad" } ] } }, { "InstanceId": "i-93199026", "InstanceState": { "Código": 16, "Nombre": "corriendo" }, "Zona de disponibilidad": "us-oeste-1c", "Estado del sistema": { "Estado": "ok", "Detalles": [ { "Estado": "aprobado", "Nombre": "accesibilidad" } ] }, "InstanceStatus": { "Estado": "ok", "Detalles": [ { "Estado": "aprobado", "Nombre": "accesibilidad" } ] } } ] } |
Aquí el estado se muestra como aprobado
.
Configurar nodos Couchbase
Cada nodo Couchbase necesita ser aprovisionado con los siguientes detalles:
- Memoria
- Servicios (índice, datos y consulta)
- Credenciales de autenticación (nombre de usuario:
Administrador
contraseña:contraseña
) - Cargas
viaje-muestra
cubo
Esto puede hacerse utilizando el script:
1 2 3 4 5 6 7 |
para ip en "$@" do rizo -v -X POST http://$ip:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300 rizo -v http://$ip:8091/node/controller/setupServices -d services=kv%2Cn1ql%2Cindex rizo -v http://$ip:8091/settings/web -d port=8091 -d username=Administrador -d password=contraseña rizo -v -u Administrador:contraseña -X POST http://$ip:8091/sampleBuckets/install -d '["viaje-muestra"]' hecho |
Está disponible en: https://github.com/arun-gupta/couchbase-amazon/blob/master/configure-instance.sh. Se puede invocar como:
1 |
./configure-instancia.sh `aws ec2 describa-instancias --consulta Reservations[*].Instances[*].[PublicDnsName]' --filtros Nombre=instancia-estado-nombre,Valores=corriendo --salida texto` |
Y muestra la salida como:
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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
* Prueba 52.53.171.49... * Conectado a ec2-52-53-171-49.us-oeste-1.compute.amazonaws.com (52.53.171.49) puerto 8091 (#0) > POST /piscinas/por defecto HTTP/1.1 > Anfitrión: ec2-52-53-171-49.us-oeste-1.compute.amazonaws.com:8091 > Usuario-Agente: rizo/7.43.0 > Acepte: */* > Content-Length: 36 > Content-Type: application/x-www-form-urlencoded > * subida completamente enviada: 36 de 36 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Server < Pragma: no-cache < Fecha: Lun, 16 de mayo de 2016 16:18:47 GMT < Content-Length: 0 < Cache-Control: no-cache POST /node/controller/setupServices HTTP/1.1 > Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091 > User-Agent: curl/7.43.0 > Aceptar: */* > Contenido-Longitud: 26 > Contenido-Tipo: aplicación/x-www-formulario-urlencoded > * cargar completamente enviado fuera de: 26 fuera de 26 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Servidor < Pragma: no-caché < Fecha: Lun, 16 Mayo 2016 16:18:47 GMT < Contenido-Longitud: 0 < Caché-Controlar: no-caché < * Conexión #0 al host ec2-52-53-171-49.us-west-1.compute.amazonaws.com intacto * Probando 52.53.171.49... * Conectado a ec2-52-53-171-49.us-west-1.compute.amazonaws.com (52.53.171.49) puerto 8091 (#0) > POST /settings/web HTTP/1.1 > Anfitrión: ec2-52-53-171-49.us-oeste-1.compute.amazonaws.com:8091 > Usuario-Agente: rizo/7.43.0 > Acepte: */* > Content-Length: 50 > Content-Type: application/x-www-form-urlencoded > * subida completamente enviada: 50 de 50 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Server < Pragma: no-cache < Fecha: Lun, 16 de mayo de 2016 16:18:47 GMT < Content-Type: application/json < Contenido-Longitud: 78 < Cache-Control: no-cache POST /sampleBuckets/install HTTP/1.1 > Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091 > Autorización: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA== > User-Agent: curl/7.43.0 > Aceptar: */* > Contenido-Longitud: 17 > Contenido-Tipo: aplicación/x-www-formulario-urlencoded > * cargar completamente enviado fuera de: 17 fuera de 17 bytes < HTTP/1.1 202 Aceptado < Servidor: Couchbase Servidor < Pragma: no-caché < Fecha: Lun, 16 Mayo 2016 16:18:47 GMT < Contenido-Tipo: aplicación/json < Contenido-Longitud: 2 < Caché-Controlar: no-caché < * Conexión #0 al host ec2-52-53-171-49.us-west-1.compute.amazonaws.com intacto []* Probando 52.53.239.100... * Conectado a ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) puerto 8091 (#0) > POST /pools/default HTTP/1.1 > Anfitrión: ec2-52-53-239-100.us-oeste-1.compute.amazonaws.com:8091 > Usuario-Agente: rizo/7.43.0 > Acepte: */* > Content-Length: 36 > Content-Type: application/x-www-form-urlencoded > * subida completamente enviada: 36 de 36 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Server < Pragma: no-cache < Fecha: Lun, 16 de mayo de 2016 16:18:48 GMT < Content-Length: 0 < Cache-Control: no-cache POST /node/controller/setupServices HTTP/1.1 > Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091 > User-Agent: curl/7.43.0 > Aceptar: */* > Contenido-Longitud: 26 > Contenido-Tipo: aplicación/x-www-formulario-urlencoded > * cargar completamente enviado fuera de: 26 fuera de 26 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Servidor < Pragma: no-caché < Fecha: Lun, 16 Mayo 2016 16:18:48 GMT < Contenido-Longitud: 0 < Caché-Controlar: no-caché < * Conexión #0 al host ec2-52-53-239-100.us-west-1.compute.amazonaws.com intacto * Probando 52.53.239.100... * Conectado a ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) puerto 8091 (#0) > POST /settings/web HTTP/1.1 > Anfitrión: ec2-52-53-239-100.us-oeste-1.compute.amazonaws.com:8091 > Usuario-Agente: rizo/7.43.0 > Acepte: */* > Content-Length: 50 > Content-Type: application/x-www-form-urlencoded > * subida completamente enviada: 50 de 50 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Server < Pragma: no-cache < Fecha: Lun, 16 de mayo de 2016 16:18:48 GMT < Content-Type: application/json < Content-Length: 79 < Cache-Control: no-cache POST /sampleBuckets/install HTTP/1.1 > Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091 > Autorización: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA== > User-Agent: curl/7.43.0 > Aceptar: */* > Contenido-Longitud: 17 > Contenido-Tipo: aplicación/x-www-formulario-urlencoded > * cargar completamente enviado fuera de: 17 fuera de 17 bytes < HTTP/1.1 202 Aceptado < Servidor: Couchbase Servidor < Pragma: no-caché < Fecha: Lun, 16 Mayo 2016 16:18:48 GMT < Contenido-Tipo: aplicación/json < Contenido-Longitud: 2 < Caché-Controlar: no-caché < * Conexión #0 al host ec2-52-53-239-100.us-west-1.compute.amazonaws.com intacto [] |
Esto es invocar API REST de Couchbase para configurar cada nodo Couchbase. Ahora que cada nodo Couchbase está configurado, vamos a acceder a ellos. Buscar public
Dirección IP de las instancias:
1 |
aws ec2 describa-instancias --consulta Reservations[*].Instances[*].[PublicDnsName]' --filtros Nombre=instancia-estado-nombre,Valores=corriendo --salida texto |
Muestra la salida como:
1 2 |
ec2-52-53-171-49.us-oeste-1.compute.amazonaws.com ec2-52-53-239-100.us-oeste-1.compute.amazonaws.com |
Elige una de las direcciones IP y accede a ella en :8091 para ver la salida:
Cada Couchbase
está configurado con el nombre de usuario Administrator y la contraseña Password. Al introducir las credenciales se muestra la consola web de Couchbase:
Haga clic en
Nodos Servidor para ver que sólo hay un nodo en el cluster:
Crear y reequilibrar el clúster de Couchbase
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 es reequilibrar el clúster, en el que los datos de los nodos existentes se reequilibran en el clúster actualizado.
En nuestro caso, un nodo Couchbase se está ejecutando en cada AMI. Escojamos la dirección IP de cualquier nodo Couchbase y añadamos la dirección IP del otro nodo. Esto se puede hacer usando el script:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
exportar principal=$1 turno para ip en "$@" do $COUCHBASE_CLI servidor-añada --grupo=$principal:8091 --usuario Administrador --contraseña contraseña --servidor-añada=$ip --servidor-añada-nombre de usuario=Administrador --servidor-añada-contraseña=contraseña hecho |
Este guión está disponible en https://github.com/arun-gupta/couchbase-amazon/blob/master/create-cluster.sh y puede invocarse como:
1 |
./crear-grupo.sh `aws ec2 describa-instancias --consulta Reservations[*].Instances[*].[PublicDnsName]' --filtros Nombre=instancia-estado-nombre,Valores=corriendo --salida texto` |
Y muestra la salida como:
1 |
ÉXITO: servidor-añada ec2-52-53-239-100.us-oeste-1.compute.amazonaws.com:8091 |
Couchbase Web Console se actualiza para mostrar:
Por último, reequilibre el clúster utilizando el script:
1 2 3 4 5 6 7 8 9 10 11 12 |
exportar principal=$1 turno para ip en "$@" do $COUCHBASE_CLI reequilibrar --grupo=$principal:8091 --usuario Administrador --contraseña contraseña --servidor-añada-nombre de usuario=Administrador --servidor-añada-contraseña=contraseña hecho |
Esto muestra la salida como:
1 2 |
INFO: reequilibrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÉXITO: reequilibrado grupo |
La Consola Web de Couchbase ya está actualizada:
Una vez que el clúster esté en funcionamiento, prueba Hola Couchbase Ejemplo.
Terminar Nodos Couchbase
Por último, matar el clúster es bastante sencillo:
1 |
aws ec2 terminar-instancias --instancia-ids `aws ec2 describa-instancias --consulta Reservations[*].Instances[*].[InstanceId]' --filtros Nombre=instancia-estado-nombre,Valores=corriendo --salida texto` |
Este blog muestra cómo crear, escalar y reequilibrar un clúster de Couchbase utilizando AWS CLI. Todos los scripts están disponibles en https://github.com/arun-gupta/couchbase-amazon.
Otras referencias ...
- Portal para desarrolladores de Couchbase Server
- Hola Couchbase Ejemplo
- Preguntas sobre StackOverflow, Foros o Canal Slack
- Síguenos en @couchbasedev
- Couchbase 4.5 Beta