Desempenho do servidor (HAProxy, Nginx, SSL)

2

Eu tenho lutado recentemente para tentar identificar onde o desempenho em nosso ambiente está causando gargalos.

Ambiente (cada servidor é Linux VM, 8 núcleos, 32 GB de RAM):

Balanceamento de carga: 50

Servidores da Web (rsync): 51, 52, 54

DB (mestre master do MySQL 5.6): 56, 58

Eu configurei um ambiente com balanceamento de carga com HAProxy para balanceamento de carga e Nginx para terminação SSL em ... .50. HAProxy escuta na porta 80 e direciona o tráfego para .. .51, 52 ou 54. Ele também escuta na porta 3306 e direciona o tráfego entre .._. 56 e 58 para o balanceamento de carga do banco de dados. O Nginx escuta na porta 443 e manipula o handshake SSL enquanto encaminha o tráfego real para a porta 80 na mesma máquina, onde é manipulado pelo HAProxy.

Essa configuração lida com conexões não SSL em ~ 1000 / s, mas as conexões SSL são tratadas em ~ 300 / s.

Recentemente, alterei o ambiente atualizando nossa versão do HAProxy para uma que pudesse lidar com a terminação SSL. O HAProxy agora escuta na porta 80 e na porta 443, tratando o handshake SSL no caso do último, e encaminhando o tráfego para os servidores da Web: 51, 52 e 54. O desempenho ficou praticamente o mesmo, mas a configuração foi muito mais simples.

Eu assisti ao topo no balanceador de carga, e parece que não há praticamente nenhuma carga no servidor em ambos os casos; porta 80 ou 443 tráfego. Os servidores da web são martelados durante meus testes de porta 80, como esperado, mas mostram muito pouca carga durante meus 443 testes.

Existe alguma coisa que você saiba que pode ser feito para aumentar o tempo de resposta de nossas conexões SSL?

Todas e quaisquer sugestões ou sugestões são bem-vindas. Gostaria de obter o máximo de desempenho possível.

Obrigado a todos!

    
por Philip Gura 30.01.2014 / 15:39

1 resposta

2

Coloque cifras SSL mais rápidas no topo da lista (claro, aquelas que correspondem aos seus requisitos de segurança)

Exemplo para haproxy

bind *:443 ssl crt /etc/ssl/... ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256 prefer-server-ciphers ... 

Minhas configurações em uma instância nginx são as seguintes

ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

Você pode testar a velocidade das cifras SSL disponíveis no seu balanceador, por exemplo, com

$ openssl speed
    
por 05.02.2014 / 18:11