Dimensionamento de servidores Web montados em NFS e armazenamento de arquivos on-line

1

Então, há poucos meses, meu chefe me disse "o que é que precisamos para escalar para clientes X, em um período razoavelmente curto de tempo". tipo de cenários, um pouco de um desafio de engenharia, se mais alguma coisa, mas é claro que mais clientes significa mais renda.

Então, agora temos uma configuração semelhante a abaixo. Balanceadores de carga redundantes, servindo dados de dois servidores Web (sessões compartilhadas via memcache) e dois servidores de arquivos totalmente redundantes de back-end. Cada servidor de arquivos tem o shabang inteiro, o RAID6 Array em todas as unidades, a unidade de espaço quente, os controladores de ataque duplo, os dois nics, o multipathing yada yada yada.

Odesignéaquelequeeusintoqueésólido,altadisponibilidadeatravésdenenhumpontoúnicodefalha.AltodesempenhodividindoacargaemváriosservidoresdaWeb,comaltaescalabilidade,nosentidodequepoderíamosapenascontinuaradicionandomaisemaismáquinashorizontalmenteparaescalarparamaisemaisclientes.Ogargaloprincipaléquantoarmazenamentocadaservidordearquivospodeconterequantoespaçoéalocadoparacadacliente.Essapartedissoaumentariamaisrapidamentedoqueorestodosistema.Arota"Pools" do FileServer / Client foi escolhida porque é dimensionada horizontalmente e é mais barata do que dizer "ok, precisamos comprar uma SAN ainda MAIOR".

Portanto,tudoissoémuitofácil,maisemaisarmazenamentoon-line,significamaisemaismontagensNFS.Eéaíquemeusegundopalpiteentraemjogo.Querotercertezadequeresolvitodosospossíveisproblemasnessedesignantesdecolocarqualquercoisanolugar.Contantoquecadapeçadessequebra-cabeçasejadevidamentemonitorada,achoqueécontrolável,masqueriateroutrasopiniõesprimeiro,talvezdepessoasquejáestiveramnessaestradaantes.

Euconheçoalgumasquestõesimportantesqueprecisamserobservadas.

  • Hotspotsnosservidoresdearquivos,oumáquinasespecíficastrabalhandomaisintensamentequeorestodopool.
  • Larguradebanda&Trocadeback-end.HaverámuitaconversaentreservidoresparadispositivosNFS,umswitchdealtaqualidadeteráqueestarnolugarcomumaaltacapacidadedemalhadeswitch.

Problemasdesconhecidos...

  • NFSMontaemServidoresWeb,HaveráalgumproblemaemtercadaservidordaWebtendo2...5...10...100NFSMontagensabertasaqualquermomento?Existealgumamaneiradetornarissomaisfáciloumaisamigável?TalvezumproxyNFSdealgumtipo?(Issocriariaumgargalointerno,oquemedeixacarrancudo).Penseiemumsistemadearquivosdistribuídoefizcomqueosservidoreswebmontassemisso,masparecequenãoproprietário,compatívelcomPOSIX,expansívelsemtempodeinatividade,sistemasdearquivosinternamenteredundantessãomuitoimaturosparaotrabalhodeprodução,sãoescandalosamentecarosousãorealmentebomemesconderdoGoogle.

Deixe-mesaberoquevocêsachamesevocêviralgumasugestão&otimizações,seriamuitoapreciada.

((Porserumaquestãoabertaondenãoexisteuma"resposta certa" específica, a questão é um Wiki da comunidade))

    
por GruffTech 19.06.2012 / 14:11

5 respostas

1

Em 90% das situações de hospedagem que você encontrará, você terá muito mais servidores Web que servidores de armazenamento, o que altera bastante o design da sua rede. Você executará servidores de armazenamento em pares, já que muitos servidores de arquivos primários / principais não suportam mais do que a replicação espelhada. Servidores grandes do NFS provavelmente irão lidar com uma dúzia de servidores web se você tiver um backbone de 10g. Suas linhas de conexão serão conexões virtuais, pois você executará web lan em uma vlan, lan de armazenamento em uma vlan separada, gigE para a web lan, 10g para a lan de armazenamento, dependendo do orçamento. Você menciona servidores de armazenamento primário duplo e, em seguida, menciona montagens do NFS que são um pouco excludentes. Eles estão realmente executando nada compartilhado ou é uma configuração dual head / dual shelf / single fcal?

Execute seus balanceadores de carga em dual primary para reduzir o tempo de transição e aumentar o rendimento potencial. Não use mais do que 40% de sua capacidade para que você tenha bastante disponível quando tiver uma falha.

Você também precisa considerar clusters do MySQL / PostgreSQL / Cassandra / etc também - eles não gostam particularmente de montagens do NFS.

O Lefthand Networks tem um produto de sistema de arquivos distribuído. GlusterFS é um pouco maduro e trabalharia dependendo da sua carga de trabalho. O MogileFS / Hadoop é outra possibilidade. Além disso, dê uma olhada no Ceph, GFS e OCFS.

Quanto ao número de montagens, você montará cada servidor NFS uma vez ou possivelmente duas vezes por servidor da web. Dezenas de montagens não seriam desconhecidas, mas você pode acabar segregando seus clusters da web para eliminar centenas de montagens. O Hadoop pode se apresentar para sua rede como um único sistema de arquivos global através de uma rede distribuída.

    
por 02.07.2010 / 03:29
0

Como o karmawhore disse, ter mais servidores de arquivos do que servidores da web soa como uma configuração bastante fora do padrão. Você poderia explicar o uso um pouco mais?

A partir dos seus desenhos do Visio e da sua descrição, não consigo descobrir onde está o seu ponto de falha não-único quando se trata de arquivos. Para mim, parece que cada servidor NFS tem seu próprio subconjunto de arquivos?

Você provavelmente deve procurar construir servidores de arquivos "gordos" (isto é, muito pesados) com uma tonelada de RAM e usar algum tipo de sistema de arquivos em cluster ou de espelhamento, começando com 2 servidores NFS e escalando com incrementos de 2. Talvez o link funcione para você?

Exemplo:

NFSA_1 < - > NFSA_2 NFSB_1 < - > NFSB_2

    
por 02.07.2010 / 08:08
0

Para explicar por que existem mais servidores de arquivos do que servidores da web no design acima, o sistema Grufftech (que eu trabalho com ele) está falando é um serviço de backup online para consumidores e empresas (faz backup de computadores desktop e servidores).

    
por 02.07.2010 / 17:06
0

Você pode considerar escrever seu próprio sistema de diretórios para agrupar os arquivos em diferentes clusters do sistema de arquivos e usar http / https para obter os arquivos dos servidores individuais. Dessa forma, o aumento de escala se torna uma questão de adicionar mais 'servidores web' de back-end e você não precisa se preocupar com cada servidor que mantém uma conexão com todos os servidores de armazenamento possíveis. É um pouco menos eficiente, mas simplifica muito a sua configuração. Como você mantém um mapa dos locais do sistema de arquivos e pode armazenar os dados em dois ou mais pares de servidores de arquivos separados, basta fazer uma solicitação de backend http para obter o arquivo / arquivos quando solicitado. Seus pares seriam separados fisicamente e em rede topologicamente, de modo que perder um rack inteiro não eliminaria as duas unidades de seu par. Isso permitiria que você usasse sistemas que não precisassem de muita configuração de software, mas exigiria que você escrevesse mais código para gerenciar seu sistema de arquivos distribuído.

O SuperMicro e alguns outros fabricantes fabricam chassis 4U (SC847) que comportam 36 unidades 3.5 "Externas / Hotswap. Juntamente com o FreeBSD / OpenSolaris você pode usar o ZFS (o que seria muito benéfico se você usasse unidades comuns) .

Como você está fazendo o backup de dados, é realmente necessário ter um backend compatível com posix que suporte o bloqueio de cluster? Os clientes provavelmente estarão competindo pelo acesso ao mesmo arquivo? Caso contrário, qualquer sistema de arquivos distribuído que mantenha as coisas como uma única montagem também funcionaria. Enquanto nossos backups rsync internamente a partir das máquinas de origem, os pedidos do cliente para cópias de arquivos de backups são servidos com http.

GlusterFS, MogileFS ou HDFS também fornecerão um único ponto de montagem para cada um dos servidores da web. Isso permitiria que você acessasse os dados de maneira mais convencional, mas perderia alguns dos 'recursos' do posix.

    
por 02.07.2010 / 17:40
0

Como você está replicando seus dados em seus nós de armazenamento? Estou assumindo que você tem o Apache servindo seu conteúdo da web do mesmo diretório nos nós de armazenamento ...

Estamos trabalhando na criação de algo semelhante, mas estou frustrado em descobrir uma maneira de replicar os dados sem atrasos nos nós de armazenamento.

Idéias?

    
por 15.10.2010 / 18:09