Como configurar o Docker Swarm com vários nós do Docker no Ubuntu 18.04

Como configurar o Docker Swarm com vários nós do Docker no Ubuntu 18.04

Docker Swarm é uma ferramenta de orquestração e agrupamento de contêineres para gerenciar hosts do Docker e faz parte do Docker Engine. É uma ferramenta de cluster nativa fornecida pelo Docker, que fornece alta disponibilidade e alto desempenho para o seu aplicativo.

O objetivo principal do Swarm Docker é agrupar os hosts de múltiplos docker em um único servidor virtual lógico-isso garante disponibilidade e alto desempenho para o seu aplicativo, distribuindo-o por vários hosts do Docker em vez de apenas um.

Neste tutorial, você aprenderá:

  • O que é Swarm Docker
  • Como configurar hosts
  • Como instalar e executar o serviço do Docker
  • Como configurar o nó do gerente para inicialização do cluster de enxame
  • Como configurar nós do trabalhador para ingressar no cluster de enxame
  • Como verificar o cluster de enxame
  • Como implantar um novo serviço no cluster de enxame
Docker Swarm Services.

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Ubuntu 18.04
Programas Docker-CE 18.09
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Conceito de enxame em detalhes

Os recursos de gerenciamento e orquestração de cluster incorporados no mecanismo Docker são construídos usando o SwarmKit.

Um enxame consiste em vários hosts do Docker, que são executados no modo enxame e atuam como gerentes (que gerenciam a associação e a delegação) e os trabalhadores (que administram serviços de enxame). Um dado host do Docker pode ser um gerente, um trabalhador ou executar os dois papéis. Quando você cria um serviço, você define seu estado ideal, como número de réplicas, recursos de rede e armazenamento disponíveis, portas que o serviço expõe para o mundo exterior etc. Se um nó de trabalhador ficar indisponível, o Docker cronograma as tarefas desse nó em outros nós. Uma tarefa é um contêiner em execução que faz parte de um serviço de enxame e gerenciado por um gerente de enxame.



Uma das principais vantagens dos serviços de enxames sobre contêineres independentes é que você pode modificar a configuração de um serviço, incluindo as redes e volumes a que está conectado, sem a necessidade de reiniciar manualmente o serviço. O Docker atualizará a configuração, interrompe as tarefas de serviço com a configuração desatualizada e criará novas que correspondam à configuração desejada.

Quando o Docker está sendo executado no modo enxame, você ainda pode executar recipientes independentes em qualquer um dos hosts do Docker que participam do Swarm, bem como Serviços Swarm. Uma diferença importante entre recipientes independentes e serviços de enxame é que apenas os gerentes de enxame podem gerenciar um enxame, enquanto os contêineres independentes podem ser iniciados em qualquer daemon. Docker Daemons pode participar de um enxame como gerentes, trabalhadores ou ambos.

Configure os hosts do Docker

Antes de instalar os pacotes de docker necessários para o cluster de enxames, configuraremos o arquivo hosts em todos os nós do Ubuntu.

Nó do gerente - 192.168.1.103 (nome do host - DockerManager) Node1 - 192.168.1.107 (nome do host - Dockerworker1) Node2 - 192.168.1.108 (nome do host - Dockerworker2) 

Editar o /etc/hosts Arquive nos três nós via gedit ou vim e faça as seguintes alterações:

192.168.1.103 DockerManager 192.168.1.107 Dockerworker1 192.168.1.108 Dockerworker2 
cópia de

Depois de modificar com os detalhes acima no arquivo hosts, verifique a conectividade com ping entre todos os nós.

Do Docker Manager Host

# ping dockerworker1 # ping 192.168.1.107 
# ping dockerworker2 # ping 192.168.1.108 

Do nó do trabalhador do docker 1

# ping DockerManager # ping 192.168.1.103 

Do nó do trabalhador Docker 2

# ping DockerManager # ping 192.168.1.103 

Instale e execute o serviço Docker

Para criar o cluster de enxames, precisamos instalar o Docker em todos os nós do servidor. Vamos instalar o docker-c eu.e. Docker Community Edition em todas as três máquinas Ubuntu.

Antes de instalar o Docker CE pela primeira vez em uma nova máquina host, você precisa configurar o repositório do Docker. Posteriormente, você pode instalar e atualizar o Docker do repositório. Execute todas as etapas abaixo nos três nós do Ubuntu.

Atualize o índice de pacote APT:

# atualização apt-get 

Instale os pacotes para permitir que o Apt use um repositório sobre o HTTPS:

# instalar apt-get APT-Transport-https Certificados Cerl Curl-Properties-Common -y 


Adicione a chave GPG oficial do Docker:

CURL -FSSL https: // Download.Docker.com/linux/ubuntu/gpg | Sudo Apt-Key Add - 

Use o seguinte comando para configurar o repositório estável:

# add-capt-repository "deb [arch = amd64] https: // download.Docker.com/linux/ubuntu $ (lsb_release -cs) estável " 

Atualize novamente o pacote APT:

# atualização apt-get 

Instale a versão mais recente do Docker CE:

Instalação APT-Get Docker-CE

Após a conclusão da instalação, inicie o serviço do Docker e permita o lançamento sempre na inicialização do sistema.

# SystemCtl Start Docker # SystemCtl Ativar Docker 

Para configurar o Docker para executar como usuário normal ou usuário sem raiz, execute o seguinte comando:

# UserMod -AG Docker  
# UserMod -AG Docker Manager # UserMod -AG Docker Worker1 # UserMod -AG Docker Worker2 

Agora, faça o login como usuário designado e execute o Docker Olá Mundo verificar.

# su - gerente $ Docker Run Hello -World 

Após a execução bem -sucedida, ele dará a saída abaixo

Cheque de instalação do docker hello_world.

Configurar o nó do gerente para inicialização do cluster de enxame

Nesta etapa, criaremos o aglomerado de nossos nós. Para criar o cluster de enxames, precisamos inicializar o modo enxame no nó 'DockerManager' e depois entrar no nó 'Dockerworker1' e 'Dockerworker2' para o cluster no cluster.

Inicialize o modo de enxame do Docker, executando o seguinte comando Docker no nó 'DockerManager'.




Docker Swarm init-advertise-addr

$ Docker Swarm init-advertise-addr 192.168.1.103 
Inicialização do cluster enxame.

'Join Token' foi gerado pelo 'DockerManager', que deverá se juntar aos nós do trabalhador ao gerente de cluster.

Configure nós do trabalhador para se juntar ao cluster de enxame

Agora, para se juntar aos nós do trabalhador para o enxame, executaremos o comando do Docker Swarm Join em todos os nós do trabalhador que recebemos na etapa de inicialização do enxame:

$ Docker Swarm June-TOKEN SWMTKN-1-4HTF3VNZBHC88VXJYGOPO91IHMUTRXI2P1SI2DE4WHAQLR6-3OED1HNTTWKALUR1EY7ZKDP9L 192.168.1.103: 2377 
Nó do trabalhador 1 juntando -se ao cluster de enxame. Nó do trabalhador 2 juntando -se ao cluster de enxame.

Verifique o cluster de enxame

Para ver o status do nó, para que possamos determinar se os nós estão ativos/disponíveis etc., no nó do gerente, liste todos os nós no enxame:

$ Docker Node LS 
Verificação do cluster de enxames do Docker.

Se, a qualquer momento, você perdeu seu token de junção, ele poderá ser recuperado executando o seguinte comando no nó do gerente para o token do gerente:

$ Docker Swarm Jun Jun -Token Manager -Q 

A mesma maneira de recuperar o token do trabalhador executar o seguinte comando no nó do gerente:

$ Docker Swarm Jun Jun -Token Worker -Q 

Implantar um novo serviço no cluster de enxame

Nesta etapa, criaremos e implantaremos nosso primeiro serviço ao cluster Swarm. O novo servidor da Web Nginx de serviço será executado na porta HTTP padrão 80 e o exporá à porta 8081 na máquina host. Criaremos este serviço nginx com 2 réplicas, o que significa que haverá 2 recipientes de Nginx em execução em nosso enxame. Se algum desses contêineres falhar, eles serão gerados novamente para ter o número desejado que definimos na opção Réplica.

$ Docker Service Create --Name My-Web1-Publish 8081: 80-Replicas 2 nginx 

Após a implantação bem -sucedida do serviço, você pode ver a saída abaixo:

Implante o serviço nginx no cluster de enxame.

Para verificar o recém -criado serviço Nginx usando os comandos de serviço do docker abaixo.

$ Docker Service LS 
Liste o serviço recém -implantado em cluster de enxame.


Docker Service PS

$ Docker Service ps my-web1 
Lista as tarefas em execução como parte de serviços especificados no cluster de enxame.

Se precisarmos verificar se o serviço nginx está funcionando bem, ou podemos usar o comando curl ou verificar no navegador na máquina host para a página de boas -vindas do servidor da web nginx.

$ Curl http: // DockerManager: 8081 

Verificação de serviço da web nginx via curl.

No navegador na máquina host, podemos acessar a página de boas -vindas do Nginx

Verificação de serviço nginx via navegador.

Agora, se precisarmos dimensionar o serviço Nginx, faremos 3 réplicas e para fazer isso executar o seguinte comando no nó do gerente:

$ Docker Service Scale My-Web1 = 3 

Escala de serviço para o número desejado de réplicas.

Para verificar a saída após a escala, podemos usar Docker Service LS ou Docker Service PS comando.

Podemos usar Docker Service Inspect comando para verificar os detalhes estendidos de um serviço implantado no Swarm. Por padrão, isso renderiza todos os resultados em uma matriz JSON.

Conclusão

Docker se tornou uma maneira extremamente popular de configurar, salvar e compartilhar ambientes de servidores usando contêineres. Por esse motivo, a instalação de um aplicativo ou mesmo uma pilha grande pode ser tão simples quanto a corrida do Docker ou o Docker Run. A separação de funções de aplicativos em diferentes contêineres também oferece vantagens em gerenciamento de segurança e dependência.

Tutoriais do Linux relacionados:

  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Coisas para instalar no Ubuntu 20.04
  • Introdução aos mecanismos de armazenamento MySQL
  • Mastering Bash Script Loops
  • Como instalar Kubernetes no Ubuntu 20.04 fossa focal linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Com que frequência você tem que reiniciar seu servidor Linux?
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Como instalar Kubernetes no Ubuntu 22.04 Jellyfish…
  • Loops aninhados em scripts de basquete