Vindo de um ambiente VMware, meu processo foi esse,
- Várias máquinas Docker (swarm), montam os mesmos armazenamentos de dados NFS
- Um contêiner (por exemplo, Maria dB) é implantado no enxame Docker
- Se um nó do enxame falhar, o serviço ainda estará em execução nos outros nós
Então eu montei/var/lib/docker/volumesem um compartilhamento NFS, em várias máquinas Docker e tentei criar um enxame. Mas eventualmente descobri que se várias máquinas Docker montarem o mesmo armazenamento de dados NFS, o serviço Docker só poderá ser iniciado em um dos nós.
Então, acho que minha pergunta é: como criar um enxame, com o mesmo serviço sendo executado em vários nós e os dados mantidos em um compartilhamento NFS?
É claro que há uma boa chance de eu ainda não ter entendido completamente a ideia de como funciona um enxame Docker e estou vendo isso de um ângulo errado.
Responder1
Correto, você não deseja compartilhar nada em/var/lib/docker, que são dados e configurações paraesse mecanismo em um único servidor.
Em um enxame, você adiciona nós ao enxame, como gerentes ou trabalhadores, e os gerentes replicam o banco de dados de consenso da balsa que armazena a configuração e o estado do enxame.
Em seguida, você cria serviços que possuem uma ou mais réplicas da mesma imagem de contêiner, iniciadas em vários nós com base nos requisitos e na disponibilidade.
Para bancos de dados, você está lidando com dados persistentes (os bancos de dados e logs de cada instância de banco de dados). Isso tem a ver com Docker Volumes (onde você armazena dados persistentes) e especificamente com qual driver de volume você escolhe. O padrão apenas armazena o volume dessa réplica de serviço (contêiner) no nó em que está sendo executado no momento. Se você deseja que o contêiner de banco de dados falhe e gire automaticamente em um novo nó (um dos recursos de um orquestrador de contêiner), você precisa usar um driver de volume diferente que seja "com reconhecimento de enxame" e saiba como garantir que A montagem NFS é colocada no nó correto para estar pronta para a réplica de serviço correta.
Você pode conferirRaio REXque atua como uma camada intermediária para gerenciar os volumes no armazenamento externo (e possui drivers próprios para o tipo de backend) ou veja olista completa na Docker Store.