English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Gestão de clusters Swarm

Introdução

O Docker Swarm é uma ferramenta de gestão de cluster do Docker. Ele transforma o pool de hosts Docker em um único host virtual Docker. O Docker Swarm fornece uma API Docker padrão, todas as ferramentas que já comunicam com o daemon Docker podem usar o Swarm para se expandir facilmente para múltiplos hosts.

As ferramentas suportadas incluem, mas não se limitam a, os seguintes itens:

  • Dokku

  • Docker Compose

  • Docker Machine

  • Jenkins

Princípio

Como mostrado na figura a seguir, o cluster swarm é composto por nós gerenciadores (manager) e nós de trabalho (work node).

  • gerenciador swarm:responsável por toda a gestão do cluster, incluindo configuração de cluster, gestão de serviços e todas as atividades relacionadas ao cluster.

  • nó de trabalho:ou seja, o nó disponível na imagem, responsável por executar os serviços correspondentes para executar tarefas (task).

Usar

Os exemplos a seguir são apresentados com base no Docker Machine e no virtualbox, certifique-se de que seu host já tenha o virtualbox instalado.

1、criar nó gerenciador (manager) do cluster swarm

Criar máquina docker:

$ docker-machine create -d virtualbox swarm-manager

Inicializar o cluster swarm, a máquina que está sendo inicializada é o nó gerenciador do cluster.

$ docker-machine ssh swarm-manager
$ docker swarm init --advertise-addr 192.168.99.107 #O IP aqui é o ip atribuído ao criar o computador.

A saída acima prova que a inicialização foi bem-sucedida. É necessário copiar a seguinte linha, que será usada ao adicionar um nó de trabalho:

docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

2、Criar nó de trabalho (worker) do cluster swarm

Aqui criamos diretamente dois computadores, swarm-worker1 e swarm-worker2 .

Entre em dois computadores, especifique para adicionar ao cluster criado no passo anterior, aqui será usado o conteúdo copiado no passo anterior.

Os dados de saída acima indicam que a adição foi bem-sucedida.

Na imagem acima, devido ao conteúdo copiado anteriormente ser longo, ele será automaticamente truncado, na verdade o comando executado na imagem é o seguinte:

docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

3、Ver informações do cluster

Entre no nó de gerenciamento e execute: docker info para ver informações do cluster atual.

$ docker info

Pelo círculo vermelho, pode-se saber que no cluster atualmente em execução há três nós, sendo um nó de gerenciamento.

4、Deploy serviço no cluster

Atenção:Qualquer operação relacionada ao gerenciamento de cluster é executada no nó de gerenciamento.

Neste exemplo, criamos um serviço chamado helloworld em um nó de trabalho, aqui é atribuído aleatoriamente a um nó de trabalho:

docker@swarm-gerente:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com

5、Ver situação de deployment do serviço

Ver em qual nó o serviço helloworld está executando, pode ver que atualmente está no swarm-worker1 Nó:

docker@swarm-manager:~$ docker service ps helloworld

Ver informações específicas do deployment do helloworld:

docker@swarm-manager:~$ docker service inspect --pretty helloworld

6、Expandir serviço de cluster

Vamos expandir o serviço helloworld para dois nós.

docker@swarm-manager:~$ docker service scale helloworld=2

Pode ver que foi expandido de um nó para dois nós.

7、Remover serviço

docker@swarm-manager:~$ docker service rm helloworld

Verificar se foi removido:

8、Serviço de atualização contínua

Neste exemplo, vamos mostrar como o redis pode ser atualizado para uma versão mais alta.

Criar um 3.0.6 versão do redis.

docker@swarm-gerente:~$ docker service create --replicas 1 --nome redis --atualização-atraso 10s redis:3.0.6

Atualização contínua do redis .

docker@swarm-gerente:~$ docker service update --image redis:3.0.7 redis

Pode ver que a versão do redis já foi 3.0.6 Atualizado para 3.0.7Indica que o serviço foi atualizado com sucesso.

9Parar um nó para receber novas tarefas

Ver todos os nós:

docker@swarm-gerente:~$ docker node ls

Pode ver que todos os nós atualmente são Ativos, podem receber novas tarefas.

Parar nó swarm-worker1:

Atenção:swarm-worker1 O estado muda para Drain. Não afeta os serviços do cluster, apenas swarm-worker1 O nó não receberá novas tarefas, o desempenho do cluster diminuiu.

Pode reativar o nó com os seguintes comandos:

docker@swarm-gerente:~$ docker node update --disponibilidade ativa swarm-worker1