A Joyent anunciou recentemente seu novo serviço de hospedagem de contêineres Triton Docker. Há várias vantagens em executar contêineres Docker no Triton em vez de em uma plataforma de hospedagem em nuvem mais tradicional:

  • Melhor desempenho, pois não há sobrecarga de virtualização em nível de hardware. Seus contêineres são executados em bare metal.
  • Rede simplificada entre contêineres. Cada contêiner recebe seu próprio endereço IP privado (e, opcionalmente, público).
  • Os hosts são abstraídos - basta implementar na "nuvem de contêineres" e não importa em qual host o contêiner está sendo executado.

Para obter mais detalhes, confira a palestra de Bryan Cantrill sobre o Docker e o futuro dos contêineres na produção.

Vamos dar uma olhada com um contêiner "hello world" e, em seguida, com um cluster de servidores Couchbase.

Registre-se em uma conta Joyent

Siga as instruções de registro no site Joyent site.

Você também precisará adicionar sua chave SSH à sua conta.

Atualize o cliente Docker para a versão 1.4.1 ou posterior

Verifique sua versão do Docker com:

Se você estiver em uma versão anterior à 1.4.1 (como eu estava), poderá atualizar o Docker por meio do comando instaladores do boot2docker.

Joyent + configuração do Docker

Obtenha o repositório sdc-docker (sdc == Smart Data Center):

Realizar a configuração via:

Substitua os valores da seguinte forma:

  • $ACCOUNTPara obter isso, faça login na interface do usuário da Web da Joyent e acesse o menu Account (Conta) no menu suspenso no canto superior direito. Encontre a seção Nome de usuário e usar esse campo
  • $PRIVATE_KEY_FILE: o nome do arquivo em que sua chave privada está armazenada, normalmente será id_rsa

Execute o comando e você verá o seguinte resultado:

Exportar variáveis de ambiente

Como a saída acima sugere, copie e cole os comandos da saída. Aqui está um exemplo de como isso será (mas você deve copiar e colar a partir da saída do comando, não do trecho abaixo):

Docker Hello World

Vamos criar uma imagem do docker do Ubuntu que diz hello world.

Lembre-se de que você está executando o cliente Docker em sua estação de trabalho, não na nuvem. Aqui está uma visão geral do que vai acontecer:

Para iniciar o contêiner do docker::

Você deverá ver o seguinte resultado:

Além disso, como o --rm foi passado, o contêiner terá sido removido após a saída. Você pode verificar isso executando docker ps -a. Isso é importante porque contêineres parados incorrem em cobranças no Joyent.

Parabéns! Você conseguiu um contêiner Docker "hello world" em execução na Joyent.

Executar contêineres do Couchbase Server

Agora é hora de executar o Couchbase Server.

Para iniciar três contêineres do Couchbase Server, execute:

Para confirmar que os contêineres estão ativos, execute:

e você verá:

Nesse ponto, você terá variáveis de ambiente definidas com os IDs de cada contêiner. Você pode verificar isso executando:

Obter endereços IP públicos dos contêineres

Cada contêiner terá dois endereços IP atribuídos:

  • Um IP público, acessível de qualquer lugar
  • Um IP privado, acessível apenas a partir de contêineres/máquinas da sua conta Joyent

Para obter o IP público, podemos usar o cliente Docker. (para obter o IP privado, você precisa usar as ferramentas Joyent SmartDataCenter, descritas abaixo)

Agora você terá os endereços IP públicos de cada contêiner definidos nas variáveis de ambiente. Você pode verificar se funcionou via:

Conectar-se à interface do usuário da Web do Couchbase

Abra o navegador em $container_1_ip:8091 e você verá a tela de boas-vindas do Couchbase:

Neste ponto, é possível configurar o cluster acessando a interface do usuário da Web de cada nó do Couchbase e seguindo o assistente de configuração. No entanto, caso você queira automatizar isso no futuro, vamos fazer isso pela linha de comando.

Configurar o primeiro nó do Couchbase

Vamos escolher arbitrariamente contêiner_1 como o primeiro nó do cluster. Esse nó é especial no sentido de que outros nós se juntarão a ele.

O comando a seguir executa essas operações:

  • Define o nome de usuário e a senha do administrador como Administrator / password (você deve alterar isso)
  • Define o tamanho da RAM do cluster como 600 MB

Observação: o -u admin -p password deve ser deixado como está, uma vez que ele está apenas passando o nome e a senha padrão do administrador para fins de autenticação.

Você deverá ver uma resposta como:

Criar um bucket padrão

Um bucket é equivalente a um banco de dados em sistemas RDMS típicos.

Você deveria ver:

Adicionar o segundo nó do Couchbase

Adicione o segundo nó do Couchbase com este comando

Você deveria ver:

Para verificar se ele foi adicionado, execute:

que deve retornar a lista de nós do Couchbase Server que agora fazem parte do cluster:

Adicionar o terceiro nó do Couchbase e rebalancear

Nesta etapa, faremos o seguinte:

  • Adicionar o terceiro nó do Couchbase
  • Acionar um "rebalanceamento", que distribui os dados do bucket (vazio) pelo cluster

Você deveria ver:

Se você vir SUCESSOe depois funcionou. (Não sei ao certo por que o erro "close failed in file ..." está ocorrendo, mas até agora parece que ele pode ser ignorado com segurança).

Faça login na interface do usuário da Web

Abra seu navegador em $container_1_ip:8091 e você verá a tela de login do Coucbase:

Faça login com:

  • Nome de usuário: Administrador
  • Senha: senha

E você verá os nós do Couchbase:

Parabéns! Você tem um cluster do Couchbase Server instalado e em execução no Joyent Triton.

Desmontagem

Para parar e remover os contêineres do servidor Couchbase, execute:

Para verificar se não há mais contêineres em execução ou no estado parado, execute docker ps -a e você verá uma lista vazia.

Instalação das ferramentas do SDC (opcional)

A instalação das ferramentas do Joyent Smart Data Center (SDC) permitirá que você obtenha mais visibilidade do seu cluster de contêineres, por exemplo, a possibilidade de visualizar o IP interno de cada contêiner.

Veja como instalar o pacote sdc-tools.

Instalar o smartdc

Primeiro, instale o NodeJS + NPM

Instale o smartdc:

Configurar variáveis de ambiente

Substitua os valores da seguinte forma:

  • CONTAPara obter isso, faça login na interface do usuário da Web da Joyent e acesse o menu Account (Conta) no menu suspenso no canto superior direito. Encontre a seção Nome de usuário e usar esse campo

Lista de máquinas

Executar máquinas da lista sdc para listar todos os contêineres em execução na sua conta Joyent. Seu resultado deve ser algo parecido com isto:

Localizar o IP privado de uma máquina individual

Referências

  • API nativa do Docker versus API Joyent Triton
  • https://www.joyent.com/blog/container-service-preview
  • https://www.joyent.com/blog/docker-bake-off-aws-vs-joyent
  • https://github.com/joyent/sdc-docker
  • https://github.com/joyent/sdc-docker/blob/master/docs/divergence.md

Autor

Postado por Traun Leyden, engenheiro de software sênior, Couchbase

Traun Leyden é engenheiro de software sênior da Couchbase e atualmente trabalha no projeto Touch-DB/Android. Antes da Couchbase, Traun foi cofundador da Signature Labs, uma startup apoiada por capital de risco que desenvolveu um aplicativo de geolocalização de CRM móvel para iOS que foi implantado em empresas da Fortune 500. Entre suas realizações, Traun desenvolveu um aplicativo de controle de campainha para Android altamente popular chamado "Buzzoff" e criou uma biblioteca de rede neural de código aberto escrita em Go que aproveita os canais/goroutines do Go para obter alta simultaneidade de computação.

Deixar uma resposta