Ir para o conteúdo

Quais são as configurações ideais que posso usar para o Apache ou o NGINX como servidor de back-end para o ELB?

4 minuto de leitura
0

Quero usar uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que executa Apache ou NGINX como meu servidor de back-end para o Elastic Load Balancing (ELB). Quero saber as configurações que oferecem o melhor desempenho.

Resolução

Para obter o melhor desempenho, analise os tempos de resposta do seu aplicativo de back-end e os requisitos de seus clientes.

Tempo limite do cabeçalho do cliente

Se o servidor de back-end fechar uma conexão e não notificar o balanceador de carga, você poderá receber um erro HTTP 502 para um Application Load Balancer. Para um Classic Load Balancer, você recebe um erro HTTP 504.

Para evitar conexões inativas, defina o tempo limite da aplicação como um valor maior do que o valor do tempo limite de inatividade. Para configurar o tempo limite da aplicação para o Apache, consulte a diretiva TimeOut no site do Apache. Para NGINX, consulte client_header_timeout no site do NGINX.

Keepalive

Para reduzir o uso da CPU e melhorar o tempo de resposta, ative o keepalive. Quando você ativa o keepalive, o balanceador de carga não estabelece uma nova conexão TCP para cada solicitação HTTP.

Para ativar o keepalive para o Apache, consulte a diretiva KeepAlive no site do Apache. Para ativar o keepalive no NGINX, defina keepalive_disable como none. Para mais informações, consulte keepalive_disable no site do NGINX.

Ao ativar a opção keepalive, escolha um tempo limite de keepalive maior do que o tempo limite de inatividade do balanceador de carga. Para configurar o tempo limite no Apache, consulte a diretiva KeepAliveTimeout no site do Apache. Para NGINX, consulte keepalive_timeout no site do NGINX.

Tempos limite de leitura

Defina tempos limite de leitura adequados aos tempos de resposta do seu aplicativo. O balanceador de carga deve manter a conexão aberta por tempo suficiente para receber o cabeçalho e o corpo da solicitação.

Observação: certifique-se de que o valor do tempo limite de inatividade do balanceador de carga seja menor do que o tempo limite do back-end.

Para definir o tempo limite de leitura da solicitação no Apache, consulte a diretiva RequestReadTimeout. Para definir o tempo limite do cabeçalho do cliente no NGINX, consulte client_header_timeout no site do NGINX. Para obter o tempo limite do corpo do cliente no NGINX, consulte client_body_timeout no site do NGINX.

Número máximo de solicitações keepalive

Ao ativar o keepalive, defina o número de solicitações que uma única conexão TCP atende como 100 ou mais. Para definir o número da solicitação no Apache, consulte a diretiva MaxKeepAliveRequests no site do Apache. Para NGINX, consulte keepalive_requests no site do NGINX.

AcceptFilter

Por padrão, o AcceptFilter é ativado. O AcceptFilter diz ao Apache para usar a opção TCP_DEFER_ACCEPT para as conexões e pode fazer com que o soquete TCP permaneça em um estado semiaberto. Quando o soquete TCP permanece no estado semiaberto, o balanceador de carga presume que a conexão foi estabelecida, mas a instância de back-end não estabelece totalmente a conexão. As conexões semiabertas são mais comuns em balanceadores de carga de baixo volume, em que as conexões ficam inativas antes do uso.

Para configurar o AcceptFilter no Apache, consulte a diretiva AcceptFilter no site do Apache. Para NGINX, consulte listen no site do NGINX.

Registro em log

Para ativar a opção %{X-Forwarded-For}i para que o Apache exiba o cabeçalho ELB x-forwarded-for em seus logs para cada solicitação, execute o seguinte comando:

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined

O cabeçalho ELB x-forwarded-for contém o endereço IP do cliente original. A opção %D adiciona o tempo necessário para concluir cada solicitação aos logs de acesso.

MPM do Apache

O Módulo de multiprocessamento (MPM) de evento do Apache pode fechar precocemente as conexões dos balanceadores de carga e causar um erro HTTP 502 para um Application Load Balancer. Para um Classic Load Balancer, você recebe um erro HTTP 504.

Em vez disso, é uma prática recomendada usar o MPM para processadores.

Observação: depois de atualizar sua configuração, reinicie o Apache ou o NGINX.

Informações relacionadas

Instâncias registradas para seu Classic Load Balancer

Configurar seu Classic Load Balancer

AWS OFICIALAtualizada há 5 meses