Evitando SPOFS com GlusterFS e Windows

9

Temos um cluster GlusterFS que usamos para nossa função de processamento. Queremos integrar o Windows a ele, mas estamos tendo problemas para descobrir como evitar o ponto único de falha que é um servidor Samba que está servindo um volume GlusterFS.

Nosso fluxo de arquivos funciona assim:

  1. OsarquivossãolidosporumnódeprocessamentodoLinux.
  2. Osarquivossãoprocessados.
  3. Osresultados(podemserpequenos,podemserbemgrandes)sãogravadosdevoltanovolumedoGlusterFSassimquesãofeitos.
    • Osresultadospodemsergravadosemumbancodedadosoupodemincluirváriosarquivosdeváriostamanhos.
  4. OnódeprocessamentoselecionaoutrotrabalhoforadafilaeGOTO1.

OGlusteréótimo,poisofereceumvolumedistribuídoereplicaçãoinstantânea.Aresiliênciadedesastreséboa!Nósgostamosdisso.

Noentanto,comooWindowsnãotemumclientenativodoGlusterFS,precisamosdealgumamaneiraparaqueosnósdeprocessamentobaseadosnoWindowsinterajamcomoarmazenamentodearquivosdemaneirasimilarmenteresiliente.A documentação do GlusterFS declara que o Uma maneira de fornecer acesso ao Windows é configurar um servidor Samba sobre um volume GlusterFS montado. Isso levaria a um fluxo de arquivos como este:

Pareceumpontoúnicodefalhaparamim.

Umaopçãoé agrupar o Samba , mas isso parece ser baseado no código instável agora e, portanto, da corrida.

Estou procurando outro método.

Alguns detalhes importantes sobre os tipos de dados que utilizamos:

  • Os tamanhos de arquivo originais podem variar de alguns KB a dezenas de GB.
  • Os tamanhos de arquivo processados podem variar de alguns KB a GB ou dois.
  • Certos processos, como cavar em um arquivo como .zip ou .tar, podem causar muitas gravações adicionais, pois os arquivos contidos são importados para o armazenamento de arquivos.
  • As contagens de arquivos podem chegar aos 10 milhões.

Esta carga de trabalho não funciona com a configuração do Hadoop "tamanho da unidade de trabalho estática". Da mesma forma, avaliamos os armazenamentos de objeto no estilo S3, mas descobrimos que eles estão faltando.

Nosso aplicativo é personalizado escrito em Ruby, e nós temos um ambiente Cygwin nos nós do Windows. Isso pode nos ajudar.

Uma opção que estou considerando é um serviço HTTP simples em um cluster de servidores que possuem o volume do GlusterFS montado. Já que tudo o que estamos fazendo com o Gluster é essencialmente operações GET / PUT, que parecem facilmente transferíveis para um método de transferência de arquivos baseado em HTTP. Coloque-os atrás de um par de balanceamento de carga e os nós do Windows podem enviar HTTP para o conteúdo do seu pequeno coração azul.

O que eu não sei é como a coerência do GlusterFS seria mantida . A camada HTTP-proxy introduz latência suficiente entre quando o nó de processamento relata que é feito com a gravação e quando é realmente visível no volume do GlusterFS, que eu estou preocupado com o fato de os estágios de processamento posteriores tentarem pegar o arquivo não encontre. Tenho certeza de que usar a opção direct-io-mode=enable mount-will ajudará, mas não tenho certeza se isso é suficiente . O que mais devo fazer para melhorar a coerência?

Ou eu deveria buscar outro método completamente?

Como Tom apontou abaixo, o NFS é outra opção. Então eu fiz um teste. Como os arquivos mencionados acima têm nomes fornecidos pelo cliente que precisamos manter e podem vir em qualquer idioma, precisamos preservar os nomes dos arquivos. Então eu criei um diretório com esses arquivos:

QuandoeuomontodeumsistemaServer2008R2comoClienteNFSinstalado,receboumalistagemdediretórioscomoesta:

Claramente, o Unicode não está sendo preservado. Então o NFS não vai funcionar para mim.

    
por sysadmin1138 10.04.2012 / 23:16

2 respostas

5

Eu gosto do GlusterFS. Na verdade, eu adoro o GlusterFS. Contanto que você possa dar alguma largura de banda dedicada, tudo está bem.

Uma das melhores coisas sobre o GlusterFS é usá-lo com o NFS. Uma das coisas surpreendentes com as quais tenho trabalhado ultimamente é o NFS no Windows 7 e 2k8R2 .

Aqui está o que eu faria.

  1. Configure 2 servidores GlusterFS que podem exportar NFS.
  2. Configure um link de heartbeat entre eles.
  3. Implanta algo como Heartbeat / Pacemaker, talvez?
  4. Configure um IP virtual (VIP) entre seus nós do Gluster.
  5. Conecte as unidades de rede mapeadas do Windows Boxen usando o endereço IP do VIP.
  6. Teste tudo que você possa imaginar.

Clustering Samba parece assustador, e mesmo se você fizer isso, o Samba ainda não tem a capacidade de se comportar de forma confiável em algumas redes Windows (toda essa compatibilidade de domínio NT4, nunca parece conseguir passar por isso).

Eu acho que, como cada nó de glosa está no modo de replicação distribuído, você deve, teoricamente, poder se conectar a ou e permitir que ele se preocupe com a movimentação de dados . Como resultado, o heartbeatd deve ser o que faz o redirecionamento e controlar com qual você está falando.

Quanto ao seu

  • As contagens de arquivos podem chegar aos 10 milhões.

Eu sugiro que você investigue usando o XFS como o sistema de arquivos subjacente, já que é muito bom com grandes sistemas de arquivos, e suportado sob o GlusterFS

    
por 11.04.2012 / 09:34
1

Talvez você possa pensar em uma solução de HA ... use um LDAP para autenticação (ele pode ser replicado como muitos servidores LDAP que você deseja) e coloque um IP para ouvir os serviços SMB.

Este IP estará flutuando no servidor principal. Quando isso está em baixo, o Heartbeat pode iniciar serviços no segundo servidor.

Esses servidores terão um ponto de montagem para glusterfs e todos os dados estarão lá.

É uma solução possível e é tão fácil de gerenciar ...

    
por 22.01.2013 / 09:36