Criando um farm de servidores SSL

2

Estou interessado em construir a arquitetura no artigo mencionado abaixo.

Atualmente, tenho um balanceador de carga de camada 4 com preço moderado e meus servidores de aplicativos são os pontos de extremidade de SSL. Eu quero colocar um farm de servidores SSL entre meu balanceador de carga e meus servidores de aplicativos. Em seguida, colocarei outro balanceador de carga barato entre o farm SSL e meus servidores de aplicativos para fazer o roteamento da camada 7.

Meuaplicativodawebtemumaquantidadebastantealtadetráfegodeconsumidores,que6servidorespodemgerenciarcomcercade50%dacapacidade.Alémdisso,tenhotráfegodeinfra-estruturaqueéváriasvezesmaiordoqueomeutráfegodeconsumidores.Sãodadosvindosdetodoomundoquedevemseintegraraomeuaplicativodawebemtemporeal.Nototal,eutenho18servidoresdeaplicativosparalidarcomtodootráfego,alémde6servidoresdebancodedados.Euadicionareimais6servidoresdeaplicativosnaspróximas2semanase6nas2semanasseguintes.Conservadoramente,estimoqueprecisareiescalarpara120servidoresatéofinaldoano.

Minhamotivaçãoagoraésepararotráfegodoconsumidordotráfegodainfraestrutura.Otráfegodoconsumidortemmaiorprioridadedoqueotráfegodeinfraestruturaenãopossopermitirqueumadebandadanoladodainfraestruturaderrubemeusservidoresvoltadosparaoconsumidor.Terumsitesempreatualizadoéaprincipalprioridade.Noentanto,sehouverumafalhaemumdosservidoresdeaplicativosdoconsumidor,querorotearessetráfegoparaosservidoresdesignadosparaotráfegodeinfraestrutura.

Acomplicaçãoéquetodootráfegoéendereçadousandoomesmonomedehosteéquase100%https.Aúnicamaneira,nomeucaso,dedistinguirainfraestruturadotráfegodoconsumidoréporURL(arquiteturadeficientequeherdei),portanto,precisodeumbalanceadordecargadacamada7parapoderrotear.Noentanto,paraqueissofuncione,euprecisodeumterminadorSSLbaseadoemhardwareoudeumfarmdeservidoresSSL,conformedescritoacima.Comominhabasedeusuáriosestáseexpandindorapidamente,eumepreocupoque,seeudescerocaminhodohardware,issosetornarámuitocaromuitorápido,especialmenteporqueprecisareide4detudoparaaltadisponibilidade(2configuraçõesidênticasem2instalações).Enquantoisso,odiagramaacimaparecemuitoflexívelemaisescalávelhorizontalmente.

Alguémjáconstruiuissoantes?Existemconfiguraçõespré-construídas?Queconsideraçõesdevofazerequesoftwaredevousar(ouvifalardepessoasqueusamoapachecommod-ssl,nginxestunnel)?Alémdisso,quandofazsentidocomprarumbalanceadordecargacaroaoconstruirumfarmdeservidoresSSL?

link

    
por dan 23.03.2012 / 02:07

2 respostas

6

Para um cluster de 120 servidores, consulte um profissional . Eu não teria pensado que você obteria uma resposta de detalhes significativos para seu aplicativo .

A configuração de cluster mais complexa que configuramos foi de apenas 20 servidores, dos quais apenas 12% eram de tráfego HTTPS (SSL puro de 14 Mbits).

Nossa arquitetura típica é ...

Se isso ajudar, para clusters da web, normalmente usamos:

lvs (initial ssl load balancing)
    -> pound (ssl-unwrapping) 
    -> varnish (caching) 
    -> haproxy (load balancing) 
    -> nginx (static content) 
    -> php (dynamic content) 
    -> mysql (db)

Nós tínhamos usado stunnel em combinação com HAProxy (no lugar de Pound), mas estava causando algumas complicações (com a incapacidade de definir cabeçalhos) mais abaixo na cadeia.

Libra

Usamos isso e ele funciona muito bem, tanto que não conseguimos impor suas limitações ao hardware que temos e ao volume de tráfego que está sendo transferido do Apache jMeter durante o teste.

Há também uma observação na página inicial de pound sobre melhorias de desempenho

If the PCRE, tcmalloc (from the Google perftools package) and/or Hoard are available Pound will link against them. This will provide a significant performance boost and is highly recommended.

Mas pound é considerado bom para aplicativos de tráfego "baixo", mas não parece aumentar tanto quanto seus rivais, o que outros documentaram em testes de benchmarking

Terminadores SSL de software Benchmarks

  1. link
  2. link
  3. link

É provável que o uso da CPU seja o principal problema

O consumo de CPU será o seu maior problema, por isso, ser inteligente com o tamanho da chave SSL é vai ajudar, 1024bit (agora obsoleto pela maioria das autoridades SSL) vs 2048bit vs 3072bit chaves irá aumentar linearmente overheads.

Veja algumas boas leituras sobre o desempenho geral do SSL, link

O que você acabará encontrando aqui é que não há uma resposta "certa" e que somente o teste, o teste novamente e o teste de alguns mais mostrarão o que funciona melhor em seu cenário.

    
por 23.03.2012 / 12:05
1

Você pode dividir a infraestrutura do tráfego do consumidor usando um firewall do Linux. Usando a funcionalidade de correspondência de strings netfilter / iptables, você pode combinar o tráfego com base na URL. Depois que o tráfego é correspondido, você pode usar isso para realizar QoS ou encaminhar o tráfego de maneira diferente.

    
por 29.03.2012 / 11:47