Servidores que recebem timeouts intermitentes - é o meu IPTables config OK

0

Eu tenho dois servidores, ambos usam o Datadog ( link ) para o monitoramento de serviço. Para aqueles que não sabem como funciona o datadog, o agente de datadog é executado em meus servidores e faz uma solicitação HTTP (S) para a URL que está sendo monitorada, se nenhuma resposta for recebida dentro de um prazo definido (5 segundos no meu caso) ) um alerta é gerado. No meu caso, o agente que monitora as URLs será atendido por 1 dos mesmos 2 serevers.

Meu site está sendo executado com um provedor VPS executando o mais recente CentOS 7 e versão do kernel 3.10.0-693.11.1.el7.x86_64.

O site é servido por trás do cloudflare, fazendo uso de seu balanceador de carga. Assim, com o agente de datadog, por exemplo, o agente do servidor 1 envia uma solicitação para example.com - > vai para cloudflare DNS - > O cloudflare atende a solicitação por meio do balanceador de carga e o servidor 1 ou servidor 2 pode processar a solicitação.

Eu estava com um provedor de hospedagem e os tempos limite aconteciam regularmente, algumas vezes por dia, nós o estabilizamos alterando algumas configurações do kernel TCP no servidor (tcp_timestamp e tcp_fastopen). Embora tenha estabilizado, ainda estávamos recebendo tempo limite. Por isso, pensamos que o problema estava com o nosso provedor de hospedagem e, portanto, movemo-los para um novo provedor de hospedagem esperando que o problema desaparecesse, mas não houve, portanto, deve haver algum problema de configuração que estou causando.

Entrei em contato com o datadog e eles me mostraram o código (seu código aberto) e é relativamente simples, pois o agente apenas faz uma solicitação HTTP GET, se receber uma resposta, tudo está OK, se não, ou se um código de status HTTP inválido for retornado, um alerta é gerado, eles verificaram meu arquivo de configuração e tudo parece estar OK.

Também entrei em contato com o cloudflare e eles estão vendo que, de todos os datacenters, ocasionalmente, o servidor não responde a eles para enviar uma solicitação.

Eu tinha o fail2ban instalado e, embora não estivesse registrando nada, por segurança, desativei a execução, mas ainda estou recebendo tempos limite.

A única outra coisa em que posso pensar é que o arquivo de configuração do iptables às vezes está causando um problema. Eu disse a ele para registrar qualquer coisa que tenha sido descartada e usei o grep para a porta 80, mas não retornei nada, por isso, não parece que ele tenha caído em solicitações, mas não consigo ver mais nada.

Abaixo está minha configuração do iptables

# Firewall configuration written by system-config-firewall
# # Manual customization of this file is not recommended.
*filter
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#Open SSH Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 24 -j ACCEPT
#Open port 80
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# Open MySQL Port 3306
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# Open port 8080 for freegeoip
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
#Open port 8001 for Splunk
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9997 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8089 -j ACCEPT
#Cloudflare IP Whitelisting
-A INPUT -p tcp -m multiport --dports http,https -s "103.21.244.0/22" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "103.22.200.0/22" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "103.31.4.0/22" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "104.16.0.0/12" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "108.162.192.0/18" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "131.0.72.0/22" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "141.101.64.0/18" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "162.158.0.0/15" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "172.64.0.0/13" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "173.245.48.0/20" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "188.114.96.0/20" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "190.93.240.0/20" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "197.234.240.0/22" -j ACCEPT
-A INPUT -p tcp -m multiport --dports http,https -s "198.41.128.0/17" -j ACCEPT
#end cloudflare whitelisting
#Mysql Whitelist
-A INPUT -p tcp --dport 3306 -s "10.8.96.4" -j ACCEPT
-A INPUT -p tcp --dport 3306 -s "10.8.96.3" -j ACCEPT
-N LOGGING
-A INPUT -j LOGGING
-A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
-A LOGGING -j REJECT
-A INPUT -j REJECT
COMMIT

Alguém pode ver algo potencialmente errado com o meu iptables que poderia estar causando isso ou ter outras idéias que eu poderia procurar. Isso vem acontecendo há mais de 2 meses e eu já exaurei completamente meu conhecimento sobre o que poderia estar causando isso.

Obrigado por qualquer ajuda que você possa fornecer.

UPDATE

Esqueceu de adicionar um pouco de informação extra. Em relação à carga dos servidores, é mínimo. A CPU do servidor geralmente é sempre em torno de 1 a 2%. Eu adicionei na configuração do Apache para imprimir o tempo de resposta de cada pedido, e cada pedido é bem menos de um segundo.

Eu também tenho o tempo de solicitação de HTTP de monitoramento de datadog e o uso de CPU / memória ao longo do tempo e é sempre baixo.

    
por Boardy 12.12.2017 / 17:53

0 respostas