Instalando o Docker no Ubuntu 14.04
Usando um sistema diferente? O Docker é um aplicativo que permite implantar programas executados como contêineres. Foi escrito no popular programa Go
O Docker Swarm transforma seus servidores individuais em um cluster de computadores; facilitando o dimensionamento, a alta disponibilidade e o balanceamento de carga. O balanceador de carga Swarm implementa uma estratégia de balanceamento de carga round-robin, e isso pode interferir no funcionamento correto de aplicativos stateful (legados) que requerem alguma forma de sessões fixas para permitir uma configuração de alta disponibilidade com várias instâncias. O Docker Enterprise Edition oferece suporte à sessão de camada 7, mas neste guia, focaremos na versão gratuita (CE) do Docker. Para implementar sessões complicadas, usaremos o Traefik.
sudo
direitos (opcional, mas é altamente recomendável não usar o usuário root)Neste tutorial, usaremos duas instâncias do Vultr com endereços IP privados 192.168.0.100
e 192.168.0.101
. Ambos são nós do gerenciador do Docker Swarm (o que não é ideal para produção, mas é suficiente para este tutorial).
Este tutorial usa a jwilder/whoami
imagem do docker como um aplicativo de demonstração. Esse contêiner simples responderá a uma chamada REST com o nome do contêiner de resposta, facilitando o teste se as sessões persistentes estão funcionando. Obviamente, esta imagem é usada apenas para fins de demonstração e precisa ser substituída pela imagem do seu próprio aplicativo.
O serviço whoami está configurado da seguinte maneira:
sudo docker network create whoaminet -d overlay
sudo docker service create --name whoami-service --mode global --network whoaminet --publish "80:8000" jwilder/whoami
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
Se subseqüentemente curl
o ponto de extremidade REST whoami em http://192.168.0.100/
, poderemos ver o balanceamento de carga round-robin do Docker Swarm em funcionamento:
curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3
Não adianta testar isso com navegadores modernos, como o Chrome ou Firefox, porque eles são projetados para manter as conexões ativas, e o balanceador de carga do Docker Swarm só muda para o outro contêiner a cada nova conexão. Se você quiser testar isso com um navegador, precisará aguardar pelo menos 30 segundos para que a conexão feche antes de atualizar novamente.
O Traefik suporta nativamente o Docker Swarm, ele pode detectar e registrar ou cancelar o registro de contêineres em tempo real e se comunica com o seu aplicativo pela rede de sobreposição interna. O Traefik precisa de algumas informações sobre seu aplicativo antes que ele possa começar a manipular pedidos. Essas informações são fornecidas à Traefik adicionando etiquetas ao seu serviço Swarm:
sudo docker service update --label-add "traefik.docker.network=whoaminet" --label-add "traefik.port=8000" --label-add "traefik.frontend.rule=PathPrefix:/" --label-add "traefik.backend.loadbalancer.stickiness=true" whoami-service
A lista a seguir descreve o significado de cada rótulo:
traefik.docker.network
: A rede de sobreposição do Docker, pela qual o Traefik se comunicará com seu serviço traefik.port
: A porta na qual seu serviço está atendendo (esta é a porta exposta internamente, não a porta publicada)traefik.frontend.rule
: PathPrefix:/
liga a raiz de contexto ' /
' a este serviçotraefik.backend.loadbalancer.stickiness
: Ativa sessões permanentes para este serviçoAgora que whoami-service
ele foi configurado com os rótulos necessários, podemos adicionar o serviço Traefik ao enxame:
sudo docker service create --name traefik -p8080:80 -p9090:8080 --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock --mode=global --constraint 'node.role == manager' --network whoaminet traefik --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG
Este comando faz várias coisas ao mesmo tempo, como mostra a lista a seguir:
--name traefik
: O nome do nosso novo serviço Docker é Traefik -p8080:80
: Publicamos porta 80
a porta do Traefik 8080
porque a porta 80
já está em uso pelo nosso serviço whoami-p9090:8080
: Publicamos a interface web do Traefik na porta 9090
--mount ...
: Montamos o soquete do Docker no contêiner para que o Traefik possa acessar o tempo de execução do Docker do host --global
: Queremos contêineres Traefik em cada nó do gerente por motivos de alta disponibilidade --constraint 'node.role == manager'
: Queremos que o Traefik seja executado apenas nos nós do gerente, porque os nós dos trabalhadores não podem fornecer ao Traefik as informações necessárias. Por exemplo, docker service ls
em um nó de trabalho não funciona, portanto, o Traefik nem seria capaz de descobrir quais serviços estão em execução--network whoaminet
: Conecte o Traefik à mesma rede que a nossa whoami-service
, caso contrário, ele não poderá se conectar a ele. Dissemos anteriormente ao Traefik para se conectar ao nosso serviço nessa rede com a traefik.docker.network
etiquetatraefik
: Diga ao docker para usar a imagem mais recente do dock do Traefik para este serviço--docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG
: Argumentos da linha de comando transmitidos diretamente ao Traefik para permitir a execução no modo de enxame do Docker. DEBUG
é opcional aqui, mas interessante durante a instalação e para este tutorialTudo o que resta a fazer é abrir as portas necessárias no firewall Debian:
sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 9090 -j ACCEPT
Assim que o Traefik é iniciado, você pode ver nos logs que o Traefik descobre os dois whoami
contêineres. Também está emitindo o nome do cookie que será usado para lidar com a sessão complicada:
time="2018-11-25T13:17:30Z" level=debug msg="Configuration received from provider docker: {\"backends\":{\"backend-whoami-service\":{\"servers\":{\"server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05\":{\"url\":\"http://10.0.0.5:8000\",\"weight\":1},\"server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6\":{\"url\":\"http://10.0.0.4:8000\",\"weight\":1}},\"loadBalancer\":{\"method\":\"wrr\",\"stickiness\":{}}}},\"frontends\":{\"frontend-PathPrefix-0\":{\"entryPoints\":[\"http\"],\"backend\":\"backend-whoami-service\",\"routes\":{\"route-frontend-PathPrefix-0\":{\"rule\":\"PathPrefix:/\"}},\"passHostHeader\":true,\"priority\":0,\"basicAuth\":null}}}"
time="2018-11-25T13:17:30Z" level=debug msg="Wiring frontend frontend-PathPrefix-0 to entryPoint http"
time="2018-11-25T13:17:30Z" level=debug msg="Creating backend backend-whoami-service"
time="2018-11-25T13:17:30Z" level=debug msg="Adding TLSClientHeaders middleware for frontend frontend-PathPrefix-0"
time="2018-11-25T13:17:30Z" level=debug msg="Creating load-balancer wrr"
time="2018-11-25T13:17:30Z" level=debug msg="Sticky session with cookie _a49bc"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05 at http://10.0.0.5:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6 at http://10.0.0.4:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating route route-frontend-PathPrefix-0 PathPrefix:/"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :80"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :8080"
Se nos enrolarmos http://192.168.0.100:8080
, podemos ver que um novo cookie, _a49bc
foi definido:
curl -v http://192.168.0.100:8080
* About to connect() to 192.168.0.100 port 8080 (#0)
* Trying 192.168.0.100...
* Connected to 192.168.0.100 (192.168.0.100) port 8080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.0.100:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 17
< Content-Type: text/plain; charset=utf-8
< Date: Sun, 25 Nov 2018 13:18:40 GMT
< Set-Cookie: _a49bc=http://10.0.0.5:8000; Path=/
<
I'm a6a8c9294fc3
* Connection #0 to host 192.168.0.100 left intact
Se, nas chamadas subsequentes, enviarmos esse cookie para o Traefik, sempre seremos encaminhados para o mesmo contêiner:
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
O cookie não contém nada além do endereço IP interno do contêiner ao qual o Traefik deve enviar para solicitar. Se você alterar para o valor do cookie para http://10.0.0.4:8000
, a solicitação será efetivamente encaminhada para o outro contêiner. Se o cookie nunca deve ser reenviado para o Traefik, a sessão permanente não funcionará e as solicitações serão equilibradas entre os contêineres do aplicativo e os contêineres do Traefik.
Isso é tudo o que é necessário para configurar as sessões adesivas da camada 7 no Docker CE no Debian 9.
Usando um sistema diferente? O Docker é um aplicativo que permite implantar programas executados como contêineres. Foi escrito no popular programa Go
Usando um sistema diferente? Introdução O Sentry é uma solução de código aberto para rastreamento de erros. O Sentry rastreia exceções e outras mensagens úteis
O RancherOS é um sistema operacional incrivelmente leve (apenas cerca de 60 MB) que executa um daemon do Docker do sistema como PID 0 para executar serviços do sistema
O Harbor é um servidor de registro de classe empresarial de código aberto que armazena e distribui imagens do Docker. Harbor estende o Docker Distribution b de código aberto
Este tutorial explica os conceitos básicos de introdução ao Docker. Presumo que você já tenha o Docker instalado. As etapas deste tutorial funcionarão em um
Ao executar um aplicativo Web, normalmente você deseja aproveitar ao máximo seus recursos sem precisar converter seu software para usar multithreading
Todos conhecemos e amamos o Docker, uma plataforma para criar, gerenciar e distribuir contêineres de aplicativos em várias máquinas. A Docker Inc. fornece um serviço t
Este artigo mostra como implantar o aplicativo Node em um contêiner do Docker. Nota: Este tutorial pressupõe que você tenha o Docker instalado e leia
Introdução Este guia mostra como criar e configurar um enxame Docker usando vários servidores Alpine Linux 3.9.0 e o Portainer. Esteja ciente de que
Visão geral Este artigo tem como objetivo ajudá-lo a colocar um cluster do Kubernetes em funcionamento com o kubeadm rapidamente. Este guia estará implantando dois servidores, em
Este artigo explica como instalar o docker-compose no CoreOS. No CoreOS, a pasta / usr / é imutável, portanto o caminho padrão / usr / local / bin não está disponível para
Os contêineres LXC (contêineres do Linux) são um recurso do sistema operacional no Linux que pode ser usado para executar vários sistemas Linux isolados em um único host. Thes
Introdução O Docker é um aplicativo que nos permite implantar programas executados como contêineres. Foi escrito na popular linguagem de programação Go
O Kubernetes é uma plataforma de código aberto desenvolvida pelo Google para gerenciar aplicativos em contêineres em um cluster de servidores. Ele se baseia em uma década e
Os aplicativos PHP geralmente são compostos por um servidor da web, um sistema de banco de dados relacional e o próprio interpretador de linguagem. Neste tutorial, estaremos alavancando
Usando um sistema diferente? Introdução O Rancher é uma plataforma de código aberto para executar contêineres e criar um serviço de contêiner particular. Rancheiro é a base
A tecnologia de contêiner do Docker permite executar aplicativos em um ambiente específico e isolado. Docker Community Edition (CE) é o novo nome para o fre
Pré-requisitos Docker engine 1.8+. Mínimo de 4 GB de espaço em disco. Mínimo de 4 GB de RAM. Etapa 1. Instalar o Docker Para instalar o SQL-Server, o Docker deve
Usando um sistema diferente? Introdução O Docker é um aplicativo que permite a implantação de software em contêineres virtuais. Foi escrito no G
Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane
ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.
O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+
Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.
Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais
13 Ferramentas de Extração de Dados Comerciais de Big Data
Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true
À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.
Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1
A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA na área da saúde ainda está crescendo dia a dia.