‫Então, esse pouco de magia não era realmente mágico. Era o Routing Mesh. O Routing Mesh é uma
‫rede de entrada ou entrada que distribui pacotes para o nosso serviço às tarefas para esse serviço, porque
‫podemos ter mais de uma tarefa.
‫Isso realmente abrange todos os nós, e está usando primitivas do Kernel que foram cerca de um Então, não estamos falando de um novo serviço extravagante. Estamos realmente apenas falando sobre os principais recursos do
‫tempo, realmente chamado de IPVS. Kernel Linux. O que realmente está fazendo aqui é o balanceamento de carga
‫em todos os nós e a escuta em todos os nós para o tráfego.
‫Há algumas maneiras de falar sobre como isso funciona.
‫O primeiro exemplo é de um recipiente para outro.
‫Se o nosso sistema de backend,
‫como digamos os bancos de dados, fosse aumentado
‫para duas réplicas, os frontends conversando com os backends não falariam diretamente diretamente no endereço IP.
‫Eles realmente conversariam com algo
‫chamado VIP ou IP virtual, que o Swarm coloca em frente de todos os serviços.
‫Este é um IP privado dentro da rede virtual do Swarm, e garante que a carga seja distribuída entre todas as
‫tarefas de um serviço.
‫um papel de trabalhador em sua aplicação, e tinha 10 recipientes diferentes, você não precisa colocar um balanceador de carga na frente disso.
‫Então, se você pode imaginar se você tivesse
‫Isso faz isso por você.
‫Quando você está falando do tráfego de um serviço dentro da sua rede virtual,
‫fale com outro serviço dentro de sua rede virtual.
‫E o segundo exemplo de como funciona a malha de roteamento é o tráfego externo que entra em seu enxame, na verdade, pode optar por atingir qualquer
‫um dos nós do seu enxame.
‫Qualquer um dos nós do trabalhador vai ter essa porta publicada aberta e ouvindo o tráfego desse contêiner, e então irá redirecionar
‫esse tráfego para o recipiente apropriado com base em seu balanceamento de carga.
‫O que isso significa é quando você está implantando recipientes em um enxame, você
‫não deve se preocupar com o servidor, porque isso pode se mover, certo?
‫Se um recipiente falhar, e a tarefa é recriada pelo enxame, isso pode colocar isso em um nó diferente. E você certamente não quer mudar o seu firewall
‫ou suas configurações de DNS
‫para que esse recipiente funcione novamente.
‫A malha de roteamento resolve muitos desses problemas, permitindo que nosso site Drupal na porta 80 seja acessível a partir de
‫qualquer nó no enxame. E no
‫fundo, está tirando esses pacotes desse servidor e depois roteando-os para o contêiner. nó diferente, ele o encaminhará sobre as redes virtuais.
‫Se estiver em um
‫Se estiver no mesmo nó, ele apenas irá reencaminhá-lo para a porta desse recipiente.
‫E não precisamos fazer nada para habilitar isso.
‫Isso foi tudo fora da caixa.
‫Vamos ver um diagrama de como isso pode funcionar.
‫Se eu criei um serviço de formulário de notícias, e eu disse para ter três réplicas. E criou três tarefas, com
‫três recipientes, em três nós. Dentro dessa rede de sobreposição, na verdade
‫está criando um IP virtual mapeado para o nome DNS do serviço, certo? DNS, é o nome do serviço.
‫E o serviço, por padrão, o nome
‫Nesse caso, criei um serviço chamado my-web e quaisquer outros recipientes que
‫possuo em
‫minhas redes de sobreposição que precisam conversar com esse serviço dentro do enxame, eles só precisam se preocupar com o uso do meu DNS na web. O IP virtual corretamente carregado rejeita o tráfego entre
‫todas as tarefas desse serviço.
‫Este não é realmente DNS Round Robin. Essa é realmente uma configuração ligeiramente diferente. Poderíamos habilitar
‫isso se quiséssemos. Na verdade, existe uma opção para usar o DNS Round Robin.
‫armazena em cachê dentro de nossos aplicativos nos impedem de distribuir adequadamente a carga.
‫Os benefícios dos VIPs em Round Robin são as muitas vezes que nosso DNS
‫Em vez de lutar com nossos clientes de DNS na configuração de DNS, estamos apenas confiando no VIP, que é como o que você teria se você
‫comprou um balanceador de carga de hardware dedicado.
‫No segundo exemplo, isso está realmente mostrando o que
‫seria como se o tráfego externo chegasse.
‫Isso é semelhante ao que acabamos de fazer com o Drupal, onde, quando eu criei aquelas caixas amarelas, criando um serviço, chamado
‫minha web,
‫e criou duas tarefas, e as aplicou a dois nós diferentes, cada um desses nós possui uma construção - no balanceador de carga no endereço IP externo. é o que o DigitalOcean me deu.
‫Para mim, porque estou usando o DigitalOcean, esse endereço IP Quando eu uso o -p e publicou-o em uma porta, neste exemplo está usando a porta 80:80, qualquer
‫tráfego que entra em qualquer um desses três
‫nós atinge esse balanceador de carga na porta 80:80. O balanceador de carga decide qual contêiner deve
‫obter o tráfego e se esse tráfego está ou não no nó local ou precisa
‫enviar o tráfego através da rede para um nó diferente.
‫Mais uma vez, isso realmente acontece em segundo plano sem nenhum esforço especial da nossa parte.
‫Tudo bem. Vamos ver esta Malha de Roteamento em ação.
‫Já vimos o exemplo com o Drupal e como ele escuta nos três nós.
‫Mas e se tivéssemos várias tarefas que veiam o balanceador de carga funcionar.
‫Se criarmos um serviço docker, o
‫que faremos é que usaremos um contêiner Elasticsearch. Vamos chamá-lo de busca e
‫dar-lhe três réplicas. E quer publicá-lo na porta 9200, que é sua porta padrão.
‫Neste caso, definitivamente queremos o: 2 lá porque é a
‫versão mais fácil de implantar no momento. Enquanto isso está criando, vou apenas mencionar que o
‫Elasticsearch é realmente um banco de dados de pesquisa acessível através de uma
‫API da web JSON.
‫Portanto, é muito fácil acertar com curl e nos dar bons exemplos de como isso funciona.
‫Eu faço uma pesquisa ps do serviço docker, podemos ver que é criada inteligentemente cada tarefa em um nó diferente.
‫Se eu apenas fizer uma onda no meu host local,
‫no nó 1 na porta 9200 porque eu publiquei essa porta, eu retornarei as informações básicas do Elasticsearch. Parte disso é que ele
‫criará um nome aleatório.
‫Essa é apenas uma característica da Elasticsearch.
‫Foster, e
‫então ele vai começar a repetir-se como tal.
‫Se eu curvar isso várias vezes, você verá neste é Patch, o servidor Patch e, em seguida, pela terceira vez, Jane
‫Na verdade, o
‫IP virtual atua como um balanceador de carga e distribui minha carga nas três tarefas.
‫Mais algumas notas sobre a malha de roteamento. Em 17. 03, que é o lançamento que eu estou lhe mostrando, a malha de roteamento e o balanceamento de carga são atualmente um balanceador
‫de carga sem estado.
‫Se você já lidou com o estado dentro de talvez o
‫balanceador de carga clássico da Amazon ou outras tecnologias de balanceamento de carga, você sabe do que se trata.
‫falando com um cliente consistente, talvez seja necessário adicionar algumas outras coisas para ajudar a resolver esse problema.
‫Isto é basicamente dizendo que, se
‫você tiver que usar cookies de sessão em seu aplicativo, ou espera que um contêiner consistente esteja
‫Fora da caixa, toda vez que você acessa um serviço com múltiplas tarefas, isso lhe dará potencialmente
‫um resultado diferente.
‫Além disso, se você entrar nos detalhes disso, é realmente um balanceador de carga camada 3, e isso realmente funciona no IP e
‫na camada de porta.
‫Na verdade, ele não opera na camada DNS.
‫no mesmo servidor, isso ainda não vai fazer isso.
‫Se você já executou vários sites na mesma porta,
‫Você ainda precisará de outro pedaço do quebra-cabeça em cima disso se você realmente quiser executar vários sites na mesma porta, no
‫mesmo enxame.
‫Felizmente, esse é um pedido bastante comum,
‫e há várias opções que você pode fazer para resolver esses dois problemas.
‫Um deles é usar o Nginx ou o HAProxy, que existem bons exemplos de recipientes que se sentarão na
‫frente com sua malha
‫de roteamento e, na verdade, atuarão como um balanceador de carga com estado ou uma camada para balanceador de carga, que também pode fazer cache e muitas outras coisas. verificar alguns desses em recursos desta seção.
‫Se você precisar disso, você pode querer
‫Eu também devo mencionar que, se você pagasse por uma assinatura da edição
‫do Docker Enterprise, vem algo chamado UCP ou Docker Data Center, que é uma interface web. Mas devo mencionar essa edição do Docker Enterprise, se você
‫receber uma assinatura para seus nós de enxame, ela realmente vem com uma camada interna para
‫o proxy da Web que permite que você apenas
‫atirar nomes de DNS na configuração da web de seus serviços de enxame e tudo simplesmente funciona.
‫