Couchbase no Amazon Marketplace mostrou como configurar um único nó do Couchbase usando o console do EC2. Mas, normalmente, você provisiona esses nós em massa e, mais comumente
criar um cluster deles. Os clusters do Couchbase são homogêneos, escalonados horizontalmente e, portanto, garantem que o banco de dados não se torne um gargalo para o seu aplicativo de alto desempenho.
Este blog mostrará como criar, dimensionar e reequilibrar um cluster do Couchbase usando a interface de linha de comando (CLI) do AWS.
Instalar a CLI do AWS
Instalar a CLI do AWS fornecer detalhes completos, mas aqui está o que funcionou em minha 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 |
ferramentas > tubulação instalar awscli Coleta awscli Download awscli-1.10.27-py2.py3-nenhum-qualquer.elo (937kB) 100% |"""""""""""""""""""""""""""""""| 937kB 561kB/s Coleta rsa<=3.3.0,>=3.1.2 (de awscli) Download rsa-3.3-py2.py3-nenhum-qualquer.elo (44kB) 100% |"""""""""""""""""""""""""""""""| 45kB 7,7 MB/s Coleta s3transferência==0.0.1 (de awscli) Download s3transferência-0.0.1-py2.py3-nenhum-qualquer.elo Coleta colorama<=0.3.3,>=0.2.5 (de awscli) Download colorama-0.3.3.tar.gz Coleta botocore==1.4.18 (de awscli) Download botocore-1.4.18-py2.py3-nenhum-qualquer.elo (2,3 MB) 100% |"""""""""""""""""""""""""""""""| 2,3 MB 221kB/s Coleta Utilitários>=0.10 (de awscli) Download Utilitários-0.12.tar.gz (1,6 MB) 100% |"""""""""""""""""""""""""""""""| 1,6 MB 328kB/s Coleta pyasn1>=0.1.3 (de rsa<=3.3.0,>=3.1.2->awscli) Usando em cache pyasn1-0.1.9-py2.py3-nenhum-qualquer.elo Coleta futuros<4.0.0,>=2.2.0 (de s3transferência==0.0.1->awscli) Usando em cache futuros-3.0.5-py2-nenhum-qualquer.elo Coleta jmespath<1.0.0,>=0.7.1 (de botocore==1.4.18->awscli) Download jmespath-0.9.0-py2.py3-nenhum-qualquer.elo Coleta python-dateutil<3.0.0,>=2.1 (de botocore==1.4.18->awscli) Download python_dateutil-2.5.3-py2.py3-nenhum-qualquer.elo (201kB) 100% |"""""""""""""""""""""""""""""""| 204kB 2,4 MB/s Coleta seis>=1.5 (de python-dateutil<3.0.0,>=2.1->botocore==1.4.18->awscli) Usando em cache seis-1.10.0-py2.py3-nenhum-qualquer.elo Edifício rodas para coletados pacotes: colorama, Utilitários Em execução configuração.py bdist_wheel para colorama ... feito Armazenado em diretório: /Usuários/arungupta/Biblioteca/Caches/tubulação/rodas/21/c5/cf/63fb92293f3ad402644ccaf882903cacdb8fe87c80b62c84df Em execução configuração.py bdist_wheel para Utilitários ... feito Armazenado em diretório: /Usuários/arungupta/Biblioteca/Caches/tubulação/rodas/db/de/bd/b99b1e12d321fbc950766c58894c6576b1a73ae3131b29a151 Com sucesso construído colorama Utilitários Instalação coletados pacotes: pyasn1, rsa, futuros, jmespath, seis, python-dateutil, Utilitários, botocore, s3transferência, colorama, awscli Com sucesso instalado awscli-1.10.27 botocore-1.4.18 colorama-0.3.3 Utilitários-0.12 futuros-3.0.5 jmespath-0.9.0 pyasn1-0.1.9 python-dateutil-2.5.3 rsa-3.3 s3transferência-0.0.1 seis-1.10.0 |
Configure a CLI:
|
1 2 3 4 5 |
aws configurar AWS Acesso Chave ID [****************Q5FQ]: SEU ACESSO CHAVE ID AWS Secreto Acesso Chave [****************thBR]: SEU SECRETO ACESSO CHAVE Padrão região nome [nós-oeste-1]: Padrão saída formato [Nenhum]: |
Digite o ID da chave de acesso e a chave de acesso secreta. Elas podem ser obtidas conforme explicado em Obtenção do ID da chave de acesso e da chave de acesso secreta.
Criar grupo de segurança do AWS
Se você provisionou um servidor anteriormente usando Amazon 1-click e, em seguida, um grupo de segurança com o nome Couchbase Server Community Edition-4-0-0-AutogenByAWSMP- é
criado para você. Esse grupo de segurança tem todas as portas autorizadas necessárias para criar um cluster do Couchbase e pode ser usado para criar a instância. Como alternativa, você pode criar um novo grupo de segurança e autorizar explicitamente as portas.
Crie um grupo de segurança:
|
1 2 3 4 |
aws ec2 criar-segurança-grupo --grupo-nome meu-couchbase-sg --descrição "Meu grupo de segurança do Couchbase" { "GroupId": "sg-c9bb19ad" } |
Autorizar portas no grupo de segurança:
|
1 2 3 4 |
aws ec2 autorizar-segurança-grupo-entrada --grupo-nome meu-couchbase-sg --porto 8091-8093 --protocolo tcp --cidr 0.0.0.0/0 aws ec2 autorizar-segurança-grupo-entrada --grupo-nome meu-couchbase-sg --porto 11209-11211 --protocolo tcp --cidr 0.0.0.0/0 aws ec2 autorizar-segurança-grupo-entrada --grupo-nome meu-couchbase-sg --porto 21100-21299 --protocolo tcp --cidr 0.0.0.0/0 aws ec2 autorizar-segurança-grupo-entrada --grupo-nome meu-couchbase-sg --porto 4369 --protocolo tcp --cidr 0.0.0.0/0 |
Criar um par de chaves do AWS
Leia mais sobre a criação de par de chaves. Crie um par de chaves:
|
1 |
aws ec2 criar-chave-par --chave-nome meu-couchbase-chave > meu-couchbase-chave.pem |
Observe o nome da chave, pois ele será usado posteriormente.
Criar nós do Couchbase na Amazon
Crie duas instâncias usando o grupo de segurança recém-criado como:
|
1 |
aws ec2 executar-instâncias --imagem-id ami-db95ffbb --contagem 2 --instância-tipo m3.grande --chave-nome meu-couchbase-chave --segurança-grupos meu-couchbase-sg |
Observe que o número de instâncias é especificado usando -contagem 2. A ID da AMI pode ser obtida usando o console do 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.
Ou crie duas instâncias usando o grupo de segurança pré-criado como:
|
1 |
aws ec2 executar-instâncias --imagem-id ami-db95ffbb --contagem 2 --instância-tipo m3.grande --chave-nome meu-couchbase-chave --segurança-grupos "Couchbase Server Community Edition-4-0-0-AutogenByAWSMP-" |
Isso mostrará a saída 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": [], "Instâncias": [ { "Monitoramento": { "Estado": "desativado" }, "PublicDnsName": "", "RootDeviceType": "ebs", "Estado": { "Código": 0, "Nome": "pendente" }, "EbsOptimized": falso, "LaunchTime": "2016-05-16T16:11:59.000Z", "PrivateIpAddress": "172.31.15.200", "ProductCodes": [], "VpcId": "vpc-c561f9a0", "StateTransitionReason": "", "InstanceId": "i-90199025", "ImageId": "ami-db95ffbb", "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "KeyName": "my-couchbase-key", "SecurityGroups" (Grupos de segurança): [ { "GroupName": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "ClientToken": "", "SubnetId": "subnet-625bd23b", "InstanceType": "m3.large", "NetworkInterfaces" (Interfaces de rede): [ { "Status": "em uso", "MacAddress": "06:b1:52:a6:87:f7", "SourceDestCheck": verdadeiro, "VpcId": "vpc-c561f9a0", "Descrição": "", "NetworkInterfaceId": "eni-86ac6fdb", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "Primário": verdadeiro, "PrivateIpAddress": "172.31.15.200" } ], "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "Anexo": { "Status": "anexando", "DeviceIndex": 0, "DeleteOnTermination": verdadeiro, "AttachmentId": "eni-attach-530b7293", "AttachTime": "2016-05-16T16:11:59.000Z" }, "Grupos": [ { "GroupName": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "SubnetId": "subnet-625bd23b", "OwnerId": "598307997273", "PrivateIpAddress": "172.31.15.200" } ], "SourceDestCheck": verdadeiro, "Colocação": { "Tenancy" (Aluguel): "default", "GroupName": "", "AvailabilityZone" (Zona de disponibilidade): "us-west-1c" }, "Hypervisor": "xen", "BlockDeviceMappings": [], "Arquitetura": "x86_64", "StateReason": { "Mensagem": "pendente", "Código": "pendente" }, "RootDeviceName" (nome do dispositivo raiz): "/dev/xvda", "VirtualizationType" (Tipo de virtualização): "hvm", "AmiLaunchIndex": 0 }, { "Monitoramento": { "Estado": "desativado" }, "PublicDnsName": "", "RootDeviceType": "ebs", "Estado": { "Código": 0, "Nome": "pendente" }, "EbsOptimized": falso, "LaunchTime": "2016-05-16T16:11:59.000Z", "PrivateIpAddress": "172.31.15.201", "ProductCodes": [], "VpcId": "vpc-c561f9a0", "StateTransitionReason": "", "InstanceId": "i-93199026", "ImageId": "ami-db95ffbb", "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "KeyName": "my-couchbase-key", "SecurityGroups" (Grupos de segurança): [ { "GroupName": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "ClientToken": "", "SubnetId": "subnet-625bd23b", "InstanceType": "m3.large", "NetworkInterfaces" (Interfaces de rede): [ { "Status": "em uso", "MacAddress": "06:83:e8:06:2a:f1", "SourceDestCheck": verdadeiro, "VpcId": "vpc-c561f9a0", "Descrição": "", "NetworkInterfaceId": "eni-81ac6fdc", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "Primário": verdadeiro, "PrivateIpAddress": "172.31.15.201" } ], "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "Anexo": { "Status": "anexando", "DeviceIndex": 0, "DeleteOnTermination": verdadeiro, "AttachmentId": "eni-attach-680b72a8", "AttachTime": "2016-05-16T16:11:59.000Z" }, "Grupos": [ { "GroupName": "my-couchbase-sg", "GroupId": "sg-6172dd05" } ], "SubnetId": "subnet-625bd23b", "OwnerId": "598307997273", "PrivateIpAddress": "172.31.15.201" } ], "SourceDestCheck": verdadeiro, "Colocação": { "Tenancy" (Aluguel): "default", "GroupName": "", "AvailabilityZone" (Zona de disponibilidade): "us-west-1c" }, "Hypervisor": "xen", "BlockDeviceMappings": [], "Arquitetura": "x86_64", "StateReason": { "Mensagem": "pendente", "Código": "pendente" }, "RootDeviceName" (nome do dispositivo raiz): "/dev/xvda", "VirtualizationType" (Tipo de virtualização): "hvm", "AmiLaunchIndex": 1 } ] } |
O status das instâncias pode ser verificado como:
|
1 |
aws ec2 descrever-instância-status --instância-IDs `aws ec2 descrever-instâncias --consulta 'Reservations[*].Instances[*].[InstanceId]' --filtros Nome=instância-estado-nome,Valores=em execução --saída texto` |
E mostra o resultado 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, "Nome": "em execução" }, "AvailabilityZone" (Zona de disponibilidade): "us-west-1c", "SystemStatus" (Status do sistema): { "Status": "initializing" (inicialização), "Detalhes": [ { "Status": "initializing" (inicialização), "Nome": "reachability" (acessibilidade) } ] }, "InstanceStatus": { "Status": "initializing" (inicialização), "Detalhes": [ { "Status": "initializing" (inicialização), "Nome": "reachability" (acessibilidade) } ] } }, { "InstanceId": "i-93199026", "InstanceState": { "Código": 16, "Nome": "em execução" }, "AvailabilityZone" (Zona de disponibilidade): "us-west-1c", "SystemStatus" (Status do sistema): { "Status": "initializing" (inicialização), "Detalhes": [ { "Status": "initializing" (inicialização), "Nome": "reachability" (acessibilidade) } ] }, "InstanceStatus": { "Status": "initializing" (inicialização), "Detalhes": [ { "Status": "initializing" (inicialização), "Nome": "reachability" (acessibilidade) } ] } } ] } |
Aqui o status é mostrado como inicialização. Leva alguns minutos para que as instâncias sejam provisionadas. As instâncias que passaram por todas as verificações podem ser verificadas como:
|
1 |
aws ec2 descrever-instância-status --filtros Nome=instância-status.acessibilidade,Valores=aprovado --instância-IDs `aws ec2 descrever-instâncias --consulta 'Reservations[*].Instances[*].[InstanceId]' --filtros Nome=instância-estado-nome,Valores=em execução --saída texto` |
Em um primeiro momento, o resultado é mostrado como:
|
1 2 3 |
{ "InstanceStatuses": [] } |
Mas, quando todas as instâncias passam na verificação, os resultados são semelhantes:
|
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, "Nome": "em execução" }, "AvailabilityZone" (Zona de disponibilidade): "us-west-1c", "SystemStatus" (Status do sistema): { "Status": "ok", "Detalhes": [ { "Status": "aprovado", "Nome": "reachability" (acessibilidade) } ] }, "InstanceStatus": { "Status": "ok", "Detalhes": [ { "Status": "aprovado", "Nome": "reachability" (acessibilidade) } ] } }, { "InstanceId": "i-93199026", "InstanceState": { "Código": 16, "Nome": "em execução" }, "AvailabilityZone" (Zona de disponibilidade): "us-west-1c", "SystemStatus" (Status do sistema): { "Status": "ok", "Detalhes": [ { "Status": "aprovado", "Nome": "reachability" (acessibilidade) } ] }, "InstanceStatus": { "Status": "ok", "Detalhes": [ { "Status": "aprovado", "Nome": "reachability" (acessibilidade) } ] } } ] } |
Aqui o status é mostrado como aprovado.
Configurar nós do Couchbase
Cada nó do Couchbase precisa ser provisionado com os seguintes detalhes:
- Memória
- Serviços (índice, dados e consulta)
- Credenciais de autenticação (nome de usuário:
Administrador, senha:senha) - Cargas
amostra de viagembalde
Isso pode ser feito usando o script:
|
1 2 3 4 5 6 7 |
para ip em "$@" fazer enrolar -v -X POST https://$ip:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300 enrolar -v https://$ip:8091/node/controller/setupServices -d services=kv%2Cn1ql%2Cindex enrolar -v https://$ip:8091/settings/web -d port=8091 -d username=Administrator -d password=password enrolar -v -u Administrador:senha -X POST https://$ip:8091/sampleBuckets/install -d '["travel-sample"]' feito |
Ele está disponível em: https://github.com/arun-gupta/couchbase-amazon/blob/master/configure-instance.sh. Ele pode ser invocado como:
|
1 |
./configurar-instância.sh `aws ec2 descrever-instâncias --consulta 'Reservations[*].Instances[*].[PublicDnsName]' --filtros Nome=instância-estado-nome,Valores=em execução --saída texto` |
E mostra o resultado 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 |
* Tentando 52.53.171.49... * Conectado para ec2-52-53-171-49.us-oeste-1.compute.amazonaws.com (52.53.171.49) porto 8091 (#0) > POST /piscinas/padrão HTTP/1.1 > Anfitrião: ec2-52-53-171-49.us-oeste-1.compute.amazonaws.com:8091 > Usuário-Agente: enrolar/7.43.0 > Aceitar: */* > Content-Length: 36 > Content-Type: application/x-www-form-urlencoded > * upload completamente enviado: 36 de 36 bytes < HTTP/1.1 200 OK < Servidor: Servidor Couchbase < Pragma: no-cache < Date: Mon, 16 May 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 > Agente do usuário: curl/7.43.0 > Aceitar: */* > Conteúdo-Comprimento: 26 > Conteúdo-Tipo: aplicativo/x-www-formulário-codificado por url > * carregar completamente enviado desligado: 26 fora de 26 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Servidor < Pragma: não-cache < Data: Mês, 16 Maio 2016 16:18:47 GMT < Conteúdo-Comprimento: 0 < Cache-Controle: não-cache < * Conexão #0 para o host ec2-52-53-171-49.us-west-1.compute.amazonaws.com permaneceu intacto * Tentando 52.53.171.49... * Conectado ao ec2-52-53-171-49.us-west-1.compute.amazonaws.com (52.53.171.49) porta 8091 (#0) > POST /settings/web HTTP/1.1 > Anfitrião: ec2-52-53-171-49.us-oeste-1.compute.amazonaws.com:8091 > Usuário-Agente: enrolar/7.43.0 > Aceitar: */* > Content-Length: 50 > Content-Type: application/x-www-form-urlencoded > * upload completamente enviado: 50 de 50 bytes < HTTP/1.1 200 OK < Servidor: Servidor Couchbase < Pragma: no-cache < Date: Mon, 16 May 2016 16:18:47 GMT < Content-Type: application/json < Content-Length: 78 < Cache-Control: no-cache POST /sampleBuckets/install HTTP/1.1 > Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091 > Autorização: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA== > Agente do usuário: curl/7.43.0 > Aceitar: */* > Conteúdo-Comprimento: 17 > Conteúdo-Tipo: aplicativo/x-www-formulário-codificado por url > * carregar completamente enviado desligado: 17 fora de 17 bytes < HTTP/1.1 202 Aceito < Servidor: Couchbase Servidor < Pragma: não-cache < Data: Mês, 16 Maio 2016 16:18:47 GMT < Conteúdo-Tipo: aplicativo/json < Conteúdo-Comprimento: 2 < Cache-Controle: não-cache < * Conexão #0 to host ec2-52-53-171-49.us-west-1.compute.amazonaws.com left intact []* Trying 52.53.239.100... * Conectado a ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) porta 8091 (#0) > POST /pools/default HTTP/1.1 > Anfitrião: ec2-52-53-239-100.us-oeste-1.compute.amazonaws.com:8091 > Usuário-Agente: enrolar/7.43.0 > Aceitar: */* > Content-Length: 36 > Content-Type: application/x-www-form-urlencoded > * upload completamente enviado: 36 de 36 bytes < HTTP/1.1 200 OK < Servidor: Servidor Couchbase < Pragma: no-cache < Date: Mon, 16 May 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 > Agente do usuário: curl/7.43.0 > Aceitar: */* > Conteúdo-Comprimento: 26 > Conteúdo-Tipo: aplicativo/x-www-formulário-codificado por url > * carregar completamente enviado desligado: 26 fora de 26 bytes < HTTP/1.1 200 OK < Servidor: Couchbase Servidor < Pragma: não-cache < Data: Mês, 16 Maio 2016 16:18:48 GMT < Conteúdo-Comprimento: 0 < Cache-Controle: não-cache < * Conexão #0 para o host ec2-52-53-239-100.us-west-1.compute.amazonaws.com permaneceu intacto * Tentando 52.53.239.100... * Conectado a ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) porta 8091 (#0) > POST /settings/web HTTP/1.1 > Anfitrião: ec2-52-53-239-100.us-oeste-1.compute.amazonaws.com:8091 > Usuário-Agente: enrolar/7.43.0 > Aceitar: */* > Content-Length: 50 > Content-Type: application/x-www-form-urlencoded > * upload completamente enviado: 50 de 50 bytes < HTTP/1.1 200 OK < Servidor: Servidor Couchbase < Pragma: no-cache < Date: Mon, 16 May 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 > Autorização: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA== > Agente do usuário: curl/7.43.0 > Aceitar: */* > Conteúdo-Comprimento: 17 > Conteúdo-Tipo: aplicativo/x-www-formulário-codificado por url > * carregar completamente enviado desligado: 17 fora de 17 bytes < HTTP/1.1 202 Aceito < Servidor: Couchbase Servidor < Pragma: não-cache < Data: Mês, 16 Maio 2016 16:18:48 GMT < Conteúdo-Tipo: aplicativo/json < Conteúdo-Comprimento: 2 < Cache-Controle: não-cache < * Conexão #0 para o host ec2-52-53-239-100.us-west-1.compute.amazonaws.com permaneceu intacto [] |
Isso está invocando API REST do Couchbase para configurar cada nó do Couchbase. Agora que cada nó do Couchbase está configurado, vamos acessá-los. Localize public
Endereço IP das instâncias:
|
1 |
aws ec2 descrever-instâncias --consulta 'Reservations[*].Instances[*].[PublicDnsName]' --filtros Nome=instância-estado-nome,Valores=em execução --saída texto |
Ele mostra a saída 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 |
Escolha um dos endereços IP e acesse-o em :8091 para ver a saída:

Cada Couchbase
está configurado com o nome de usuário como Administrator e a senha como password. A inserção das credenciais mostra o Console da Web do Couchbase:

Clique em
Server Nodes para ver que apenas um único nó está no cluster:

Criar e reequilibrar o cluster do Couchbase
Todos os nós do servidor Couchbase são criados iguais. Isso permite que o cluster do Couchbase seja realmente dimensionado horizontalmente para atender às demandas crescentes de seus aplicativos. Os nós do Couchbase em execução independente podem ser adicionados a um cluster invocando o comando adicionar servidor comando CLI. Normalmente, esse é um processo de duas etapas. A primeira etapa é adicionar um ou mais nós. A segunda etapa é reequilibrar o cluster, em que os dados dos nós existentes são reequilibrados no cluster atualizado.
No nosso caso, um nó do Couchbase está sendo executado em cada AMI. Vamos escolher o endereço IP de qualquer um dos nós do Couchbase e adicionar o endereço IP do outro nó. Isso pode ser feito usando o script:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
exportação primário=$1 deslocamento para ip em "$@" fazer $COUCHBASE_CLI servidor-adicionar --agrupamento=$primário:8091 --usuário Administrador --senha senha --servidor-adicionar=$ip --servidor-adicionar-nome de usuário=Administrador --servidor-adicionar-senha=senha feito |
Esse script está disponível em https://github.com/arun-gupta/couchbase-amazon/blob/master/create-cluster.sh e pode ser invocado como:
|
1 |
./criar-agrupamento.sh `aws ec2 descrever-instâncias --consulta 'Reservations[*].Instances[*].[PublicDnsName]' --filtros Nome=instância-estado-nome,Valores=em execução --saída texto` |
E mostra o resultado como:
|
1 |
SUCESSO: servidor-adicionar ec2-52-53-239-100.us-oeste-1.compute.amazonaws.com:8091 |
O Console da Web do Couchbase é atualizado para mostrar:

Por fim, faça o rebalanceamento do cluster usando o script:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
exportação primário=$1 deslocamento para ip em "$@" fazer $COUCHBASE_CLI reequilíbrio --agrupamento=$primário:8091 --usuário Administrador --senha senha --servidor-adicionar-nome de usuário=Administrador --servidor-adicionar-senha=senha feito |
Isso mostra a saída como:
|
1 2 |
INFORMAÇÕES: reequilíbrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SUCESSO: reequilibrado agrupamento |
O Console da Web do Couchbase agora está atualizado:

Quando o cluster estiver em funcionamento, experimente Exemplo do Hello Couchbase.
Encerrar nós do Couchbase
Por fim, a eliminação do cluster é bastante simples:
|
1 |
aws ec2 terminar-instâncias --instância-IDs `aws ec2 descrever-instâncias --consulta 'Reservations[*].Instances[*].[InstanceId]' --filtros Nome=instância-estado-nome,Valores=em execução --saída texto` |
Este blog mostrou como ativar, dimensionar e reequilibrar um cluster do Couchbase usando a CLI do AWS. Todos os scripts estão disponíveis em https://github.com/arun-gupta/couchbase-amazon.
Outras referências ...
- Portal do desenvolvedor do Couchbase Server
- Exemplo do Hello Couchbase
- Perguntas sobre StackOverflow, Fóruns ou Canal do Slack
- Siga-nos @couchbasedev
- Couchbase 4.5 Beta