Este blog explicará como começar a usar o Docker para AWS e implantar um sistema multi-host Cluster de enxame na Amazon.
Muito obrigado a @friismo por me ajudar a depurar os conceitos básicos!
boot2docker -> Máquina Docker -> Docker para Mac
Você está empacotando seus aplicativos usando o Docker e usando boot2docker para executar contêineres no desenvolvimento? Então você está realmente vivendo sob uma rocha!
É altamente recomendável fazer a atualização para Máquina Docker para desenvolvimento/teste de contêineres do Docker. Ele encapsula o boot2docker e permite criar uma ou mais VMs leves em seu computador. Cada
A VM atua como um mecanismo do Docker e pode executar vários contêineres do Docker. A execução de várias VMs permite que você configure vários hosts Docker Swarm em seu laptop local com facilidade.
Máquina Docker também já é notícia velha. DockerCon 2016 anunciado versão beta pública do Docker para Mac. Isso significa que qualquer pessoa pode
inscreva-se no Docker para Mac em docker.com/getdocker e usá-lo para desenvolvimento/teste de contêineres do Docker. É claro que também existe o Docker para Windows!
O Docker para Mac ainda é um host único, mas tem um modo de enxame que permite inicializá-lo como um cluster Swarm de nó único.
O que é o Docker para AWS?
Então, agora que você está usando o Docker para Mac para desenvolvimento, qual seria a sua plataforma de implantação? A DockerCon 2016 também anunciou o Docker para AWS e Azure Beta.
O Docker para AWS e Azure inicia uma frota de Docker 1.12 Engines com o modo swarm ativado imediatamente. O modo de enxame significa que os mecanismos individuais do Docker se formam em um enxame auto-organizado e auto-recuperável, distribuído em zonas de disponibilidade para maior durabilidade.
Somente cobranças do AWS e do Azure se aplicam; o Docker para AWS e o Docker para Azure são gratuitos no momento. Inscreva-se no Docker para AWS e Azure em beta.docker.com. Observe que a disponibilidade é restrita no momento
tempo. Quando sua conta for ativada, você receberá um e-mail de convite, conforme mostrado abaixo:
Valores do Docker para o AWS CloudFormation
Clique em Pilha de lançamento
para ser redirecionado para a página de modelo do CloudFormation. Adote os padrões:
Modelo S3
O URL será preenchido automaticamente e ficará oculto aqui. Clique em Próximo
. Essa página permite que você especifique detalhes para o modelo CloudFormation:
As seguintes alterações podem ser feitas:
- Nome do modelo
- Número de gerente e trabalhador nós, 1 e 3 nesse caso. Observe que somente um número ímpar de gerentes pode ser especificado. Por padrão, os contêineres são agendados somente nos nós de trabalho.
- Tamanho da AMI dos nós mestre e de trabalho
- Uma chave já configurada em sua conta do AWS
Clique em Próximo
e usar os padrões:
Clique em Próximo
, confirme as configurações:
Selecione
Recursos de IAM
caixa de seleção e clique em Criar
para criar o modelo do CloudFormation. Foram necessários cerca de 10 minutos para criar um cluster de 4 nós (1 gerente + 3 trabalhadores):
Mais detalhes
sobre o cluster podem ser vistas no Console do EC2:
Detalhes do cluster do Docker para AWS Swarm
A guia Output (Saída) do Console do EC2 mostra mais detalhes sobre o cluster:
Mais detalhes
sobre o cluster pode ser obtido de duas maneiras:
- Faça login no cluster usando SSH
- Crie um túnel e configure a CLI local do Docker
Criar conexão SSH com o Docker para AWS
Faça login usando o comando mostrado no Valor
da coluna Saída
guia. Crie uma conexão SSH como:
1 2 3 4 |
ssh -i ~/.ssh/aruncouchbase.pem doca@Docker4AWS-ELB-SSH-945956453.us-oeste-1.elb.amazonaws.com O autenticidade de hospedeiro 'docker4aws-elb-ssh-945956453.us-west-1.elb.amazonaws.com (52.9.246.163)' pode't ser estabelecido. ECDSA chave impressão digital é SHA256:C71MHTErrgOO336qAuLXah7+nc6dnRSEHFgYzmXoGyQ. São você com certeza você querer para continuar conexão (sim/não)? sim |
Observe que estamos usando aqui a mesma chave que foi especificada durante o modelo do CloudFormation. A lista de contêineres pode ser vista usando docker ps
comando:
1 2 3 4 5 |
doca ps CONTAINER ID IMAGEM COMANDO CRIADO STATUS PORTOS NOMES b7be5c7066a8 docker4x/controlador:aws-v1.12.0-rc3-beta1 "controller run --log" 48 minutos atrás Para cima 48 minutos 8080/tcp edições_controlador 3846a869c502 docker4x/casca-aws:aws-v1.12.0-rc3-beta1 "/entry.sh /usr/sbin/" 48 minutos atrás Para cima 48 minutos 0.0.0.0:22->22/tcp condescendente_almeida 82aa5473f692 docker4x/cão de guarda-aws:aws-v1.12.0-rc3-beta1 "/entry.sh" 48 minutos atrás Para cima 48 minutos naughty_swartz |
Criar um túnel SSH para o Docker para AWS
Como alternativa, um túnel SSH pode ser criado como:
1 |
ssh -i ~/.ssh/aruncouchbase.pem -NL localhost:2375:/var/executar/doca.meia doca@Docker4AWS-ELB-SSH-945956453.us-oeste-1.elb.amazonaws.com & |
Configuração do DOCKER_HOST:
1 |
exportação DOCKER_HOST=localhost:2375 |
A lista de contêineres pode ser vista como acima usando docker ps
comando. Além disso, é possível obter mais informações sobre o cluster usando informações da plataforma
comando:
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 |
doca informações Contêineres: 4 Em execução: 3 Em pausa: 0 Parado: 1 Imagens: 4 Servidor Versão: 1.12.0-rc3 Armazenamento Motorista: aufs Raiz Dir: /var/lib/doca/aufs Apoio Sistema de arquivos: extfs Diretores: 32 Dirperm1 Com suporte: verdadeiro Registro em log Motorista: json-arquivo Grupo C Motorista: cgroupfs Plugins: Volume: local Rede: hospedeiro ponte sobreposição nulo Enxame: ativo NodeID: 02rdpg58s1eh3d7n3lc3xjr9p IsManager: Sim Gerentes: 1 Nós: 4 CACertHash: sha256:4b2ab1280aa1e9113617d7588d97915b30ea9fe81852b4f6f2c84d91f0b63154 Tempos de execução: runc Padrão Tempo de execução: runc Segurança Opções: seccomp Kernel Versão: 4.4.13-moby Operacional Sistema: Alpino Linux v3.4 OSType: linux Arquitetura: x86_64 CPUs: 1 Total Memória: 993.8 MiB Nome: ip-192-168-33-110.us-oeste-1.compute.internal ID: WHSE:7WRF:WWGP:62LP:7KSZ:NOLT:OKQ2:NPFH:BQZN:MCIC:IA6L:6VB7 Docker Raiz Dir: /var/lib/doca Depurar Modo (cliente): falso Depurar Modo (servidor): verdadeiro Arquivo Descritores: 46 Rotinas: 153 Sistema Tempo: 2016-07-07T04:03:11.344531471Z Ouvintes de eventos: 0 Nome de usuário: arungupta Registro: https://index.docker.io/v1/ Experimental: verdadeiro Inseguro Registros: 127.0.0.0/8 |
Veja a seguir alguns detalhes importantes desse resultado:
- 4 nós e 1 gerente, o que significa 3 nós de trabalho
- Todos os nós estão executando o Docker Engine versão 1.12.0-rc3
- Cada VM é criada usando o Alpine Linux 3.4
Dimensionamento de nós de trabalho no Docker para AWS
Todos os nós de trabalho são configurados em um Grupo do AWS AutoScaling. O nó do gerenciador é configurado em um grupo separado do AWS AutoScaling.
Esse primeiro
permite que você dimensione a contagem de trabalhadores usando o grupo Autoscaling. O Docker ingressará ou removerá automaticamente novas instâncias do Swarm. Alterar a contagem de gerentes ao vivo é não compatíveis com esta versão. Selecione o
Grupo AutoScaling para nós de trabalho para ver detalhes completos sobre o grupo:
Clique em Editar
para alterar o número de instâncias desejadas para 5 e salve a configuração clicando em Salvar
botão:
Leva alguns segundos para que as novas instâncias sejam provisionadas e incluídas automaticamente no cluster do Docker Swarm. O grupo de Autoscaling atualizado é mostrado como:
E agora informações da plataforma
O comando mostra a saída atualizada 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 |
doca informações Contêineres: 4 Em execução: 3 Em pausa: 0 Parado: 1 Imagens: 4 Servidor Versão: 1.12.0-rc3 Armazenamento Motorista: aufs Raiz Dir: /var/lib/doca/aufs Apoio Sistema de arquivos: extfs Diretores: 32 Dirperm1 Com suporte: verdadeiro Registro em log Motorista: json-arquivo Grupo C Motorista: cgroupfs Plugins: Volume: local Rede: sobreposição nulo hospedeiro ponte Enxame: ativo NodeID: 02rdpg58s1eh3d7n3lc3xjr9p IsManager: Sim Gerentes: 1 Nós: 6 CACertHash: sha256:4b2ab1280aa1e9113617d7588d97915b30ea9fe81852b4f6f2c84d91f0b63154 Tempos de execução: runc Padrão Tempo de execução: runc Segurança Opções: seccomp Kernel Versão: 4.4.13-moby Operacional Sistema: Alpino Linux v3.4 OSType: linux Arquitetura: x86_64 CPUs: 1 Total Memória: 993.8 MiB Nome: ip-192-168-33-110.us-oeste-1.compute.internal ID: WHSE:7WRF:WWGP:62LP:7KSZ:NOLT:OKQ2:NPFH:BQZN:MCIC:IA6L:6VB7 Docker Raiz Dir: /var/lib/doca Depurar Modo (cliente): falso Depurar Modo (servidor): verdadeiro Arquivo Descritores: 48 Rotinas: 169 Sistema Tempo: 2016-07-07T04:12:34.53634316Z Ouvintes de eventos: 0 Nome de usuário: arungupta Registro: https://index.docker.io/v1/ Experimental: verdadeiro Inseguro Registros: 127.0.0.0/8 |
Isso mostra que há um total de 6 nós com 1 gerente.