O contêiner do Couchbase Docker pode ser facilmente executado em uma variedade de plataformas de orquestração:

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.
dcos-kernel
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

Iniciar o cluster do DC/OS:
dcos-couchbase-1

Use os padrões:
dcos-couchbase-2

Dê um nome ao modelo, selecione um KeyPair criado anteriormente e altere o número de escravos:
dcos-couchbase-3

Use os padrões:
dcos-couchbase-4

Verifique a configuração:
dcos-couchbase-5

Clique em "I acknowledge that ..." e em Create para iniciar a criação do modelo. Status da pilha do CloudFormation  é exibida:
dcos-couchbase-6

Certifique-se de escolher a região apropriada. Após cerca de 10 a 15 minutos, o status será alterado:
dcos-couchbase-7

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.
dcos-couchbase-8

Configure a CLI do DC/OS para usar esse cluster:

Autenticar:

Digite o URL no navegador e prossiga para o URL não seguro:
dcos-couchbase-9

Copie o token para sua área de transferência:
dcos-couchbase-10

Cole o token de autenticação na janela do terminal:

IU do Mesos e do Marathon

A interface do usuário do Mesos está disponível usando o endereço do mestre do Mesos:
dcos-couchbase

Clique em Serviços para ver o serviço Marathon já instalado:
dcos-couchbase-12

Clique em marathon (maratona) para ver a lista de tarefas:
dcos-couchbase-13

Como esperado para um cluster recém-criado, nenhuma tarefa foi atribuída ainda. Clique em Nós para ver os nós:
dcos-couchbase-14

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.

A UI do serviço Marathon mostrará a tarefa LB em execução:
dcos-couchbase-15

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:
dcos-couchbase-16

Em Console do AWS, selecione Balanceadores de cargaAdicione uma nova regra de firewall para permitir a porta 8091 no TCP:
dcos-couchbase-17

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:

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:

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:
dcos-couchbase-18

Digite as credenciais de login como Administrador e senha:
dcos-couchbase-19

Clique em Entrar para ver:
 dcos-couchbase

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:
dcos-couchbase-21

O registro da imagem do Docker do Couchbase pode ser visto no Log Viewer:
 dcos-couchbase-22

E a exibição de saída padrão:
dcos-couchbase-23

O painel do Mesos é atualizado para mostrar os recursos que estão sendo consumidos:
dcos-couchbase-24-

Por fim, a pilha completa pode ser excluída da página de modelo StackFormation:
dcos-couchbase-25

Leia mais:

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?

Autor

Postado por Arun Gupta, vice-presidente de defesa do desenvolvedor, Couchbase

Arun Gupta é o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experiência na liderança de equipes multifuncionais para desenvolver e executar estratégias, planejamento e execução de conteúdo, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e é membro fundador da equipe Java EE. Gupta é autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experiência em palestras em mais de 40 países sobre diversos tópicos e é um JavaOne Rock Star há três anos consecutivos. Gupta também fundou o capítulo Devoxx4Kids nos EUA e continua a promover a educação tecnológica entre as crianças. Autor de vários livros sobre tecnologia, corredor ávido, viajante do mundo inteiro, campeão de Java, líder de JUG, membro do NetBeans Dream Team e capitão do Docker, ele pode ser facilmente acessado em @arungupta.

3 Comentários

  1. 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"
    }
    }

    1. Qualquer ajuda seria muito bem-vinda,
      Agradecimentos

      1. cbc n1ql -U couchbase://couchbasecouchbaseccu.marathon.l4lb.thisdcos.directory/bucket_name 'CREATE INDEX profile_given_name...' saídas
        772ms [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

Deixar uma resposta