É uma boa ideia armazenar volumes do Docker no glusterfs?

24

Atualmente, estou pensando em migrar alguns de nossos servidores e aplicativos para um ambiente coreOS . Um dos problemas que vejo aqui é o gerenciamento de dados persistentes, pois o coreOS não lida com os volumes do Docker ao mover um contêiner para uma nova máquina. Após algumas pesquisas, encontrei o glusterFS, que afirma ser um sistema de arquivos em cluster que pode resolver todos os meus problemas.

Minha ideia atual é a seguinte: tenho um contêiner glusterFS que é executado como um contêiner privilegiado em cada uma das minhas máquinas coreOS e expõe um armazenamento /mnt/gluster, por exemplo. Nos meus Dockerfiles especifiquei que todos os meus volumes devem ser montados nesse caminho.

A próxima coisa que considerei foi quais contêineres deveriam obter seus próprios volumes e quais deveriam compartilhar um. Por exemplo, cada mysqlcontêiner obteria seu próprio volume, pois é capaz de lidar com a replicação sozinho. Eu não quero mexer com isso. Os servidores da Web que servem o mesmo site usariam adequadamente o mesmo volume para coisas como "imagens enviadas por usuários" etc., pois não são capazes de replicar esses dados.

Alguém já tentou algo assim ou há algo que eu perdi?

Martin
fonte
1
Fiz uma prova de conceito com isso e posso dizer que funciona, mas antes de você entrar no Gluster, entenda o perfil de ajuste. Devido à forma como o Gluster é sensível à latência do disco (semelhante ao etcd), ele pode tornar os aplicativos artificialmente mais lentos em nome da garantia de replicação de arquivos.
Brian Redbeard 23/03
2
Estamos trabalhando em uma ferramenta que gerencia os volumes anexados aos contêineres do docker. É chamado de "flocker" e você pode ver o repositório do github aqui: github.com/clusterhq/flocker Atualmente, temos um back-end de armazenamento para o ZFS que usa o recurso de instantâneo para facilitar a migração de dados, mas também temos planos para outros back-ends de armazenamento (como um back-end de dispositivo de bloco genérico) Não sei dizer se é uma boa ideia montar volumes de docker usando o GlusterFS, mas posso garantir o padrão geral de design - ou seja, responder pelo estado gerado por um contêiner de docker usando "alguma coisa"
Bino Carlos
1
Obrigado pela sua resposta. Eu já vi flocker e parece muito promissor. Você tem uma data aproximada para o suporte ao coreos ou uma versão 1.0 pronta para produção?
Martin
Eu usei o glusterfs para volumes com o OpenStack, antes dos quais tem uma configuração semelhante à que você está fazendo e foi ótima.
Ethode
@ Martin Nós (eu trabalho na ClusterHQ) temos o Flocker trabalhando no CoreOS utilizando o Amazon EBS. Coreos.com/blog/Flocker-on-CoreOS-Linux
Stephen Nguyen

Respostas:

9

Implementamos uma configuração semelhante ao Atomic ( http://www.projectatomic.io/ ) em vez do CoreOS em um sistema de armazenamento GlusterFS replicado e não distribuído, com três conjuntos de réplicas-2. Isso funciona muito bem.

No entanto, você precisa manter algumas características especiais do GlusterFS em mente. Como Brian já mencionou, Gluster coloca acima de tudo consistência e confiabilidade. Quanto mais mudanças ocorrem, mais replicação ocorre. Isso coloca muita pressão, e quero dizer, MUITO no seu sistema.

Certifique-se de que seu subsistema de E / S seja rápido (duh, é armazenamento), conecte os nós do Gluster às conexões de rede mais rápidas disponíveis. Se você possui apenas GBit, agregue! Por último, mas não menos importante, o sistema de armazenamento deve ter um poder de computação sério, a Gluster faz muitos cálculos para verificar seu estado. Dito isto, mesmo sob alta carga, a Gluster entrega.

Reconsidere sua estratégia MySQL. O Gluster faz a replicação para você e também fornece uma espécie de balanceamento de carga na entrega. Na verdade, pode ser mais rápido usar o Gluster.

bjanssen
fonte
5

O uso do glusterfs dependeria do back-end de armazenamento que você está usando. Como um sistema de arquivos em cluster, pretende-se agrupar o armazenamento físico para que apareça como um grande volume contínuo. Este guia oficial de início rápido tem uma boa explicação do processo.

Caso sua configuração utilize dois ou mais servidores de armazenamento de back-end separados ou algo semelhante para armazenar todos os volumes da janela de encaixe, o uso do glusterfs ou outro sistema de arquivos paralelo semelhante pode oferecer vantagens significativas de desempenho. Se esse for o caso, você também pode considerar o uso do Luster , que é amplamente usado como um sistema de arquivos paralelo na comunidade HPC.

Com isso dito, ajustar, depurar e configurar sistemas de arquivos paralelos / de cluster pode ser uma tarefa demorada que requer muita experiência, paciência e, às vezes, disposição para reiniciar desde o início. Seria prudente garantir que o desempenho beneficie uma oferta de sistema de arquivos paralelos que valha a quantidade de esforço necessário para configurá-la e mantê-la.

Matt
fonte