Como configurar o Docker Swarm com vários nós do Docker no Ubuntu 18.04
- 657
- 144
- Loren Botsford
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
Requisitos de software e convenções usadas
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.103Inicializaçã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: 2377Nó 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 LSVerificaçã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 LSListe o serviço recém -implantado em cluster de enxame.
Docker Service PS
$ Docker Service ps my-web1Lista 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