O contêiner do Couchbase Docker pode ser facilmente executado em uma variedade de plataformas de orquestração:
- Contêiner do Docker do Couchbase
- Couchbase no Docker Swarm
- Couchbase no Kubernetes
- Couchbase no OpenShift 3
Contêiner do Docker usando o Apache Mesos e o Marathon explicou como configurar o Mesos, o Marathon e executar uma imagem simples do Docker. A configuração foi bastante envolvente e um pouco
instável. É necessário fazer o download e instalar o Mesos Master e Slave, o ZooKeeper, o Docker Engine e o Marathon. Em alguns casos, o repositório correto precisa ser adicionado primeiro. Esses componentes precisam se comunicar entre si e, portanto, devem ser configurados
consequentemente. Mesmo que você passe por essa configuração, como monitorar toda a infraestrutura como uma única entidade?
Conheça DC/OS - Sistema operacional de data center. É um sistema operacional distribuído que usa o Apache Mesos
como seu núcleo.
O DC/OS pode ser instalado
de várias maneiras:
- Local usando o Vagrant
- Nuvem usando Amazon/CloudFormation, Microsoft Azure e Packet
- No local, usando CentOS ou CoreOS
Este blog mostrará como configurar um Cluster do DC/OS usando modelos do CloudFormation na Amazon e execute um contêiner do Docker do Couchbase.
Iniciar o cluster do DC/OS
Dê um nome ao modelo, selecione um KeyPair criado anteriormente e altere o número de escravos:
Verifique a configuração:
Clique em "I acknowledge that ..." e em Create para iniciar a criação do modelo. Status da pilha do CloudFormation é exibida:
Certifique-se de escolher a região apropriada. Após cerca de 10 a 15 minutos, o status será alterado:
Aguarde até que o status mude de CRIAR_EM_PROGRESSO
para CREATE_COMPLETE.
Faça download e configure a CLI do DC/OS
CLI DO DC/OS pode ser usado para gerenciar seus nós de cluster, instalar pacotes do DC/OS, inspecionar o estado do cluster e administrar os subcomandos de serviço do DC/OS. Instalar a CLI do DC/OS em
seu computador local.
Em seu Status da pilha do CloudFormation selecione a pilha criada, Saídas
e copie o endereço de
Mestre Mesos
.
Configure a CLI do DC/OS para usar esse cluster:
1 2 |
./caixa/dcos configuração definir núcleo.dcos_url https://couchbase-ElasticL-14LTDN783Y89T-1791879285.us-west-1.elb.amazonaws.com [núcleo.dcos_url]: alterado de 'http://couchbase-ElasticL-UJ5K6BOZQX59-570103311.us-west-1.elb.amazonaws.com' para 'https://couchbase-ElasticL-14LTDN783Y89T-1791879285.us-west-1.elb.amazonaws.com' |
Autenticar:
1 2 3 4 5 6 7 8 |
./caixa/dcos autenticação login Removido [núcleo.dcos_acs_token] Por favor ir para o seguintes link em seu navegador: https://couchbase-ElasticL-14LTDN783Y89T-1791879285.us-west-1.elb.amazonaws.com/login?redirect_uri=urn:ietf:wg:oauth:2.0:oob Entrar autenticação token: |
Digite o URL no navegador e prossiga para o URL não seguro:
Copie o token para sua área de transferência:
Cole o token de autenticação na janela do terminal:
1 2 3 |
Entrar autenticação token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik9UQkVOakZFTWtWQ09VRTRPRVpGTlRNMFJrWXlRa015Tnprd1JrSkVRemRCTWpBM1FqYzVOZyJ9.eyJlbWFpbCI6ImFydW4uZ3VwdGFAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImlzcyI6Imh0dHBzOi8vZGNvcy5hdXRoMC5jb20vIiwic3ViIjoiZ29vZ2xlLW9hdXRoMnwxMDExOTUyMTI0MDUxOTA0Njc1MTIiLCJhdWQiOiIzeUY1VE9TemRsSTQ1UTF4c3B4emVvR0JlOWZOeG05bSIsImV4cCI6MTQ2MzM1MjA1MSwiaWF0IjoxNDYyOTIwMDUxfQ.tFOy6GBPhnDbP0hI1ZU6jjlogHi4DX2bAGcdYsLywfCEMmv5OU9fUL88v2Kebjgd6gNAJoDF8QiO8zkQ3c4PGifXjiEoay8USjSWpnMbbezkH3AwIZM_-WNVVm0nfIBnCiY5wIgHkCpG_n4oBGdBbMgggtRPUrwPasNPtC_eYbQfwJeM3ByTUaTsarNe3FERbTpQbhKx2Lfc8Xp8AXuW8Up65SbOZr3Kp_jehiLgR-DL6llB4wZDopf8mjnq_5lpOYMtSaHPTlA33tdnhmHi6dPCPeRQEI1qBM6sWUWKs02kT1u42nOF9IYrKrfkzjb4LxwtZdsQt8Jb8CtJHkU0KA [núcleo.dcos_acs_token]: definir Login bem-sucedido! |
IU do Mesos e do Marathon
A interface do usuário do Mesos está disponível usando o endereço do mestre do Mesos:
Clique em Serviços
para ver o serviço Marathon já instalado:
Clique em marathon (maratona) para ver a lista de tarefas:
Como esperado para um cluster recém-criado, nenhuma tarefa foi atribuída ainda. Clique em Nós
para ver os nós:
Instalar e configurar o Marathon Load Balancer
Os nós escravos do DC/OS não são expostos diretamente na Internet. Um balanceador de carga "externo" pode ser configurado para expor as tarefas em execução nos escravos. Maratona-lb, abreviação de Marathon
Load Balancer, é um balanceador de carga disponível como um serviço Mesos. Ele é baseado no HAProxy, que fornece proxy e balanceamento de carga para aplicativos baseados em TCP e HTTP, com recursos como suporte a SSL, compactação HTTP, verificação de integridade e muito mais.
O Marathon-lb se inscreve no barramento de eventos do Marathon e atualiza a configuração do HAProxy em tempo real.
1 2 3 4 5 6 |
dcos pacote instalar maratona-lb Nós recomendar a mínimo de 0.5 CPUs e 256 MB de RAM disponível para o Maratona-LB DCOS Serviço. Continuar instalação? [sim/não] sim Instalação Maratona aplicativo para pacote [maratona-lb] versão [1.2.1] Maratona-lb DCOS Serviço tem foram com sucesso instalado! Veja https://github.com/mesosphere/marathon-lb para obter a documentação. |
A UI do serviço Marathon mostrará a tarefa LB em execução:
O AWS Load Balancer permite as portas 80 e 443 por padrão. Executaremos um servidor Couchbase que será exposto na porta 8091.
Em Status da pilha do CloudFormation copie o valor de Valores
coluna de PublicSlaveDnsAddress
:
Em Console do AWS, selecione Balanceadores de cargaAdicione uma nova regra de firewall para permitir a porta 8091 no TCP:
Executar o contêiner do Docker do Couchbase Server no DC/OS
Execute o contêiner do Docker do Couchbase Server no DC/OS usando o seguinte arquivo de configuração:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "id": "couchbase-mesos", "contêiner": { "tipo": "DOCKER", "docker": { "imagem": "arungupta/couchbase", "rede": "BRIDGE", "portMappings": [ { "hostPort": 0, "containerPort": 8091, "servicePort": 8091 }, { "hostPort": 0, "containerPort": 8092, "servicePort": 8092 }, { "hostPort": 0, "containerPort": 8093, "servicePort": 8093 }, { "hostPort": 0, "containerPort": 11210, "servicePort": 11210 } ], "forcePullImage":true } }, "instâncias": 1, "cpus": 2.0, "mem": 2048, "rótulos":{ "HAPROXY_GROUP": "externo" } } |
Esse arquivo de configuração usa a imagem arungupta/couchbase que configura o Servidor Couchbase usando API REST do Couchbase.
Esta imagem é Imagem do Docker do Couchbase. cpus
e mem
definem a memória de processamento necessária para executar essa tarefa. Dê o comando
para executar o Couchbase no cluster do DC/OS:
1 |
~/ferramentas/dcos/dcos/caixa/dcos maratona aplicativo adicionar couchbase-mesos.json |
Use o arquivo copiado anteriormente para PublicSlaveDnsAddress
e acessar o Console da Web do Couchbase em http://:8091. Em nosso caso, o URL é: http://couchbase-publicsl-vjzmwpa38k6d-429093455.us-west-1.elb.amazonaws.com:8091/index.html.
Isso mostra a página de login como:
Digite as credenciais de login como Administrador
e senha
:
Clique em Entrar
para ver:
Saiba mais sobre Console da Web do Couchbase.
A interface do usuário do Marathon é atualizada para mostrar todos os serviços em execução:
O registro da imagem do Docker do Couchbase pode ser visto no Log Viewer:
O painel do Mesos é atualizado para mostrar os recursos que estão sendo consumidos:
Por fim, a pilha completa pode ser excluída da página de modelo StackFormation:
Leia mais:
- Documentos mais recentes do DC/OS
- Guia de instalação do DC/OS
- Introdução ao DC/OS
- Gerencie seu cluster do DC/OS
- Descoberta de serviços e balanceamento de carga com o DC/OS
- Canal do Slack do DC/OS
- Introdução ao Couchbase
Aproveite!
Agora, você já viu Couchbase no Docker Swarm, Couchbase no Kubernetes, Couchbase no OpenShift 3.
Este blog mostrou como executar uma imagem do Docker do Couchbase no Mesos e no DC/OS.
Onde mais você gostaria que o contêiner do Couchbase fosse executado?
Olá, Arun Gupta,
Em primeiro lugar, obrigado por toda a sua contribuição, ela nos ajudou muito a trabalhar com o Couchbase.
Na verdade, tenho uma pergunta: estamos tentando executar uma instância do Couchbase no DCOS. Tudo está funcionando bem, exceto que não conseguimos acessar essa instância por meio do SDK do cliente "cbc n1ql..." ou da biblioteca PHP (por exemplo, a classe CouchbaseN1qlQuery). A API REST está funcionando bem.
Estamos recebendo constantemente LCB_ECONNREFUSED ou LCB_NETWORK_ERROR, dependendo da ação tentada.
Instalamos a biblioteca PHP usando https://developer.couchbase.com/documentation/server/4.6/sdk/php/start-using-sdk.html.
Aqui está o roteamento de portas que colocamos no json da maratona:
"docker": {
"imagem": "registry.marathon.l4lb.thisdcos.directory/couchbase/server:4.6.1",
"rede": "BRIDGE",
"portMappings": [
{
"containerPort": 8091,
"hostPort": 0,
"servicePort": 10114,
"protocol": "tcp",
"labels": {
"VIP_0": "/projects/ccu/couchbase/couchbaseccu:8091"
}
},
{
"containerPort": 8092,
"hostPort": 0,
"servicePort": 10115,
"protocol": "tcp",
"labels": {
"VIP_0": "/projects/ccu/couchbase/couchbaseccu:8092"
}
},
{
"containerPort": 8093,
"hostPort": 0,
"servicePort": 10116,
"protocol": "tcp",
"labels": {
"VIP_0": "/projects/ccu/couchbase/couchbaseccu:8093"
}
},
{
"containerPort": 8094,
"hostPort": 0,
"servicePort": 10117,
"protocol": "tcp",
"labels": {
"VIP_0": "/projects/ccu/couchbase/couchbaseccu:8094"
}
},
{
"containerPort": 11210,
"hostPort": 0,
"servicePort": 10118,
"protocol": "tcp",
"labels": {
"VIP_0": "/projects/ccu/couchbase/couchbaseccu:11210"
}
}
Qualquer ajuda seria muito bem-vinda,
Agradecimentos
cbc n1ql -U couchbase://couchbasecouchbaseccu.marathon.l4lb.thisdcos.directory/bucket_name 'CREATE INDEX profile_given_name...'
saídas772ms [I3bcc1f16] {7396} [TRACE] (http-io - L:249) POST http://172.17.0.28:8093/query/service. Body=192 bytes
772ms [I3bcc1f16] {7396} [DEBUG] (lcbio_mgr - L:448) (HE=0xaf2520) Criando nova conexão porque não há nenhuma disponível no pool
773ms [I3bcc1f16] {7396} [TRACE] (lcbio_mgr - L:359) (HE=0xaf2520) Nova entrada no pool: I=0xaf2940
773ms [I3bcc1f16] {7396} [INFO] (conexão - L:474) (SOCK=000000005708fc0d) Iniciando. Tempo limite=75000000us
773ms [I3bcc1f16] {7396} [DEBUG] (conexão - L:238) (SOCK=000000005708fc0d) Criou um novo soquete com FD=7
773ms [I3bcc1f16] {7396} [TRACE] (connection - L:339) (SOCK=000000005708fc0d) Agendamento do observador de E/S para conclusão assíncrona da conexão.
773ms [I3bcc1f16] {7396} [TRACE] (connection - L:354) (SOCK=000000005708fc0d) connect() failed. errno=111 [Connection refused]
773ms [I3bcc1f16] {7396} [ERRO] (conexão - L:156) (SOCK=000000005708fc0d) Falha ao estabelecer conexão: LCB_ECONNREFUSED (0x2C), os errno=111
773ms [I3bcc1f16] {7396} [DEBUG] (lcbio_mgr - L:318) (HE=0xaf2520) Resultado recebido para I=0xaf2940,C=(nil); E=0x2c
773ms [I3bcc1f16] {7396} [ERRO] (http-io - L:226) A conexão falhou com Err=0x2c
773ms [I3bcc1f16] {7396} [WARN] (http-io - L:85) Não está tentando novamente. Não há nós disponíveis
773ms [I3bcc1f16] {7396} [TRACE] (confmon - L:275) Atualizando o mapa do cluster atual