Docker

Escala Docker-Compose

Escala Docker-Compose
Os contêineres Docker devem ser tratados como gado, não como animais de estimação. Isso significa que sua criação, configuração, gerenciamento e descarte devem ser automatizados de cima para baixo. Não criamos e configuramos contêineres individuais. Em vez disso, escalamos horizontalmente girando mais contêineres.

Escala horizontal refere-se a girar mais computadores, i.e, VMs, contêineres ou servidores físicos, a fim de acomodar qualquer aumento nas demandas. Isso está em contraste com o dimensionamento 'verticalmente', que geralmente se refere à substituição de uma máquina mais lenta (com memória e armazenamento menores) por uma mais rápida 'maior' 1.

Com os contêineres, o escalonamento de ambos os tipos se tornou muito dinâmico. Você pode definir cotas para aplicativos específicos definindo a quantidade de CPU, memória ou armazenamento que eles podem ter acesso. Esta cota pode ser alterada para aumentar ou diminuir conforme necessário. Da mesma forma, você pode escalar horizontalmente girando para cima mais contêineres que irão acomodar um aumento na demanda e, posteriormente, escalar para baixo destruindo o excesso de contêineres que você criou. Se você estiver usando serviços hospedados em nuvem que cobram por hora (ou minuto), isso pode reduzir substancialmente suas contas de hospedagem.

Neste artigo, vamos nos concentrar apenas na escala horizontal, que não é tão dinâmica quanto a descrição acima, mas é um bom ponto de partida para alguém que está aprendendo o básico. Então vamos começar.

Dimensione por meio da CLI docker-compose

Quando você inicia sua pilha de aplicativos passando seu arquivo de composição para a CLI docker-compose você pode usar a bandeira -escala para especificar a escalabilidade de qualquer serviço específico especificado ali.

Por exemplo, para meu arquivo docker-compose:

versão: "3"
Serviços:
rede:
imagem: "nginx: mais recente"
portas:
- "80-85: 80"
 
$ docker-compose up -d --scale web = 5

Aqui, o serviço é chamado de web na declaração yml, mas pode ser qualquer componente individual de sua implantação, i.e, front-end da web, banco de dados, daemon de monitoramento, etc. A sintaxe geral requer que você escolha um dos elementos na seção de serviços de nível superior. Além disso, dependendo do seu serviço, você pode ter que modificar outras partes do script. Por exemplo, o intervalo 80-85 de portas de host é fornecido para acomodar 5 instâncias de contêineres Nginx, todos escutando em sua porta 80 interna, mas o host escuta em portas que variam de 80-85 e redireciona o tráfego de cada porta exclusiva para uma das Instâncias Nginx.

Para ver qual contêiner obtém qual número de porta, você pode usar o comando:

$ docker ps -a
COMANDO DE IMAGEM DE ID DE CONTAINER CRIADO             
d02e19d1b688 nginx: mais recente daemon "nginx -g 'de…" Cerca de um minuto atrás  
34b4dd74352d nginx: mais recente daemon "nginx -g 'de…" Cerca de um minuto atrás  
98549c0f3dcf nginx: mais recente daemon "nginx -g 'de…" Cerca de um minuto atrás  
NOMES DE STATUS PORTS
Up Cerca de um minuto 0.0.0.0: 83-> 80 / tcp project_web_1
Up Cerca de um minuto 0.0.0.0: 82-> 80 / tcp project_web_3
Up Cerca de um minuto 0.0.0.0: 81-> 80 / tcp project_web_2

Para escalar mais de um serviço, você precisa mencioná-los individualmente com a bandeira de escala e o parâmetro de número para garantir que o número desejado de instâncias seja criado. Por exemplo, se você tem dois serviços diferentes, precisa fazer algo assim:

$ docker-compose up -d --scale service1 = 5 --scale service2 = 6

Esta é a única maneira de fazer isso, já que você não pode executar o comando docker-compose up -scale duas vezes, uma para cada serviço. Fazer isso escalaria o serviço anterior de volta para um único contêiner.

Mais tarde, veremos como você pode definir o valor de escala para uma determinada imagem, de dentro do docker-compose.yml. Caso haja uma opção de escala definida no arquivo, o CLI equivalente para a opção de escala substituirá o valor no arquivo.

Escala

Esta opção foi adicionada na versão 2 do arquivo docker-compose.2 e pode ser tecnicamente usado, embora eu não recomende usá-lo. É mencionado aqui para fins de integridade.

Para meu docker-compose.arquivo yml:

versão 2.2 "
Serviços:
rede:
imagem: "nginx: mais recente"
portas:
- "80-85: 80"
escala: 3

Esta é uma opção perfeitamente válida. Embora funcione para Docker Engine 1.13.0 e acima.

Use réplicas na produção

Em vez de usar o comando de escala ou o valor de escala desatualizado em seu arquivo de composição, você deve usar a variável de réplica. Este é um número inteiro simples associado a um determinado serviço e funciona da mesma maneira que a variável de escala. A diferença crucial é que o Docker Swarm se destina explicitamente a sistemas distribuídos.

Isso significa que você pode ter seu aplicativo implantado em vários nós, VMs ou servidores físicos em várias regiões e centros de dados diferentes. Isso permite que você realmente se beneficie da variedade de instâncias de serviço que estão sendo executadas.

Ele permite que você dimensione seu aplicativo para cima e para baixo, modificando uma única variável, além de oferecer maior resiliência contra o tempo de inatividade. Se um data center estiver inativo ou um link de rede falhar, os usuários ainda podem acessar o aplicativo porque outra instância está sendo executada em outro lugar. Se você espalhar a implantação de seu aplicativo em várias regiões geográficas, e.g, UE, EUA e Ásia-Pacífico reduzirá a latência para os usuários que tentam acessar seu aplicativo da referida região.

Conclusão

Embora a escala docker-compose seja útil para ambientes pequenos, como um único host Docker em execução na produção. Também é muito útil para desenvolvedores que executam o Docker em suas estações de trabalho. Isso pode ajudá-los a testar como o aplicativo será escalonado na produção e em diferentes circunstâncias. Usar o comando de escala evita o incômodo de configurar um novo Docker Swarm.

Se você tiver uma instância do Docker Swarm em execução, sinta-se à vontade para brincar com réplicas. Aqui está a documentação sobre o assunto,

Como reverter a direção de rolagem do Mouse e Touchpads no Windows 10
Mouse e Touchpads não apenas torna a computação mais fácil, mas mais eficiente e menos demorada. Não podemos imaginar uma vida sem esses dispositivos,...
Como alterar o ponteiro do mouse e tamanho do cursor, cor e esquema no Windows 10
O ponteiro do mouse e o cursor no Windows 10 são aspectos muito importantes do sistema operacional. Isso também pode ser dito para outros sistemas ope...
Mecanismos de jogos gratuitos e de código aberto para o desenvolvimento de jogos Linux
Este artigo cobrirá uma lista de mecanismos de jogo gratuitos e de código aberto que podem ser usados ​​para desenvolver jogos 2D e 3D no Linux. Exist...