Eu consigo acessar todos os sites sem problemas e nossos clientes estão fazendo pedidos sem qualquer dificuldade, mas em um de nossos locais onde muitos usuários acessam o site constantemente, de repente eles não conseguem conecte-se a uma das ligações frontend.
Eles podem visualizar a página do monitor haproxy e acessar os sites nos outros frontends.
O haproxy não está sob carga e não habilitei nenhuma configuração que deva restringir o tráfego por qualquer motivo.
O Amazon Linux OR Haproxy tem algum tipo de firewall padrão que bloquearia grandes quantidades de conexões de um único endereço IP?
Aqui está minha configuração:
global
log 127.0.0.1 local1
#logs are saved in /var/log and rotated to not fill up.
#http://kvz.io/blog/2010/08/11/haproxy-logging/
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 50000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
#added to hopefully solve 400 bad request errors
option accept-invalid-http-request
timeout http-request 15s
timeout queue 1m
timeout connect 10s
timeout client 2m
timeout server 2m
timeout http-keep-alive 10s
timeout check 5s
retries 3
balance roundrobin
maxconn 100000
stats enable
#stats refresh 10s
stats uri /haproxy?stats
stats auth admin:Super187
monitor-uri /haproxy?monitor
frontend Websites_IN
bind 10.60.49.51:80 name http
bind 10.60.49.51:443 name https ssl crt /etc/haproxy/haproxy_ssl.pem
reqadd X-Forwarded-Proto:\ https if { ssl_fc }
reqadd X-Forwarded-Port:\ 443 if { ssl_fc }
reqadd X-Forwarded-Proto:\ http if !{ ssl_fc }
reqadd X-Forwarded-Port:\ 80 if !{ ssl_fc }
acl host_Site1 hdr(host) -m dom -i www.site1.com
use_backend Website_Site1 if host_Site1
acl host_Site2 hdr(host) -m dom -i www.site2.com
use_backend Website_Site2 if host_Site1
backend Website_Site1
option httpchk GET /monitor/ HTTP/1.1\r\nHost:\ www.site1.com
http-check expect string OK
cookie SVRDJ insert indirect nocache
errorfile 503 /etc/haproxy/errors/503.http
server Web1ZoneD 10.60.17.72:80 cookie Web1ZoneD check inter 2000 rise 2 fall 2
server Web1ZoneE 10.60.42.156:80 cookie Web1ZoneE check inter 2000 rise 2 fall 2
server Web2ZoneD 10.60.27.94:80 cookie Web2ZoneD check inter 2000 rise 2 fall 2
server Web2ZoneE 10.60.35.129:80 cookie Web2ZoneE check inter 2000 rise 2 fall 2
backend Website_Site2
option httpchk GET /monitor/ HTTP/1.1\r\nHost:\ www.site2.com
http-check expect string OK
cookie SVRDJ2 insert indirect nocache
errorfile 503 /etc/haproxy/errors/503.http
server Web1ZoneD 10.60.17.72:80 cookie Web1ZoneD check inter 2000 rise 2 fall 2
server Web1ZoneE 10.60.42.156:80 cookie Web1ZoneE check inter 2000 rise 2 fall 2
server Web2ZoneD 10.60.27.94:80 cookie Web2ZoneD check inter 2000 rise 2 fall 2
server Web2ZoneE 10.60.35.129:80 cookie Web2ZoneE check inter 2000 rise 2 fall 2
Apenas para incluir um pouco mais de detalhes ...
O problema começou no outro dia depois de funcionar bem por duas semanas. Quando foi relatado pela primeira vez, fiz o failover para nosso servidor em espera (2 instâncias separadas de HAproxy com configuração semelhante) e funcionou novamente por 15 horas. Tentei reverter para uma configuração de trabalho conhecida anterior, mas sem alteração. Eu adicionei um novo ACL e backend para o front-end não funcionando e pronto, meus usuários puderam ver o domínio NEW (apenas chamá-lo site3), mas ainda não consegui ver os outros no mesmo frontend. Observe que todos os sites são configurados com cabeçalhos de host no mesmo grupo de servidores. Eu também tenho algumas outras seções frontend em diferentes IPs que estão funcionando bem para os mesmos usuários. Alguns dos sites que eu configurei exigem autenticação básica, e os usuários receberão o popup de autenticação, mas não obterão o site.
Eu verifiquei a carga e o servidor está sendo executado em < 20% cpu e quase nenhuma RAM. Ele está sendo executado em uma instância do m1.small ec2.
Eu verifiquei minhas regras do iptables e elas estão vazias. Eu nem sou capaz de encontrar um log do iptables no servidor. Como posso saber se o firewall está ativado ou desativado?
Além disso, reiniciei cada servidor várias vezes e fiz o failover para cada um com o mesmo resultado.
Eu tenho a configuração de registro para usar o rsyslog usando esta configuração:
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
#Haproxy log stuff
#http://blog.hintcafe.com/post/33689067443/haproxy-logging-with-rsyslog-on-linux
$template Haproxy,"%msg%\n"
local1.=info -/var/log/haproxy/haproxy-info.log;Haproxy
local1.notice -/var/log/haproxy/haproxy-system.admin;Haproxy
# don't log anywhere else
local1.* ~
Suponho que isso deve capturar todos os dados de log do HAproxy. Não sei como ativar o debug ainda.
Imaginando se devo apenas atualizar o haproxy para a versão mais recente do DEV?
Aqui está o resultado de pf -Af conforme solicitado nos comentários.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 02:19 ? 00:00:01 /sbin/init
root 2 0 0 02:19 ? 00:00:00 [kthreadd]
root 3 2 0 02:19 ? 00:00:00 [ksoftirqd/0]
root 4 2 0 02:19 ? 00:00:00 [kworker/0:0]
root 5 2 0 02:19 ? 00:00:00 [kworker/u:0]
root 6 2 0 02:19 ? 00:00:00 [migration/0]
root 7 2 0 02:19 ? 00:00:00 [cpuset]
root 8 2 0 02:19 ? 00:00:00 [khelper]
root 9 2 0 02:19 ? 00:00:00 [kdevtmpfs]
root 10 2 0 02:19 ? 00:00:00 [netns]
root 11 2 0 02:19 ? 00:00:00 [kworker/u:1]
root 15 2 0 02:19 ? 00:00:00 [xenwatch]
root 16 2 0 02:19 ? 00:00:01 [xenbus]
root 83 2 0 02:19 ? 00:00:00 [sync_supers]
root 85 2 0 02:19 ? 00:00:00 [bdi-default]
root 86 2 0 02:19 ? 00:00:00 [kintegrityd]
root 88 2 0 02:19 ? 00:00:00 [kblockd]
root 103 2 0 02:19 ? 00:00:00 [md]
root 201 2 0 02:19 ? 00:00:00 [khungtaskd]
root 206 2 0 02:19 ? 00:00:00 [kswapd0]
root 207 2 0 02:19 ? 00:00:00 [ksmd]
root 277 2 0 02:19 ? 00:00:00 [fsnotify_mark]
root 282 2 0 02:19 ? 00:00:00 [crypto]
root 289 2 0 02:19 ? 00:00:00 [kthrotld]
root 295 2 0 02:19 ? 00:00:00 [khvcd]
root 346 2 0 02:19 ? 00:00:02 [kworker/0:2]
root 355 2 0 02:19 ? 00:00:00 [deferwq]
root 628 2 0 02:19 ? 00:00:01 [jbd2/xvda1-8]
root 629 2 0 02:19 ? 00:00:00 [ext4-dio-unwrit]
root 668 1 0 02:19 ? 00:00:00 /sbin/udevd -d
root 777 668 0 02:19 ? 00:00:00 /sbin/udevd -d
root 787 668 0 02:19 ? 00:00:00 /sbin/udevd -d
root 1009 2 0 02:19 ? 00:00:00 [kauditd]
root 1130 2 0 02:19 ? 00:00:00 [flush-202:1]
root 1182 1 0 02:19 ? 00:00:00 /sbin/dhclient -q -lf /var/lib/dhclient/dhclient-eth
root 1225 1 0 02:19 ? 00:00:00 auditd
root 1240 1 0 02:19 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
rpc 1264 1 0 02:19 ? 00:00:00 rpcbind
rpcuser 1281 1 0 02:19 ? 00:00:00 rpc.statd
root 1305 2 0 02:19 ? 00:00:00 [rpciod]
root 1308 1 0 02:19 ? 00:00:00 rpc.idmapd
root 1315 1 0 02:19 ? 00:00:07 ha_logd: read process
root 1318 1315 0 02:19 ? 00:00:06 ha_logd: write process
dbus 1338 1 0 02:19 ? 00:00:00 dbus-daemon --system
root 1383 1 0 02:19 ? 00:00:27 bash /etc/haproxy/hamonitor
root 1404 1 0 02:19 ? 00:00:00 /usr/sbin/sshd
ntp 1431 1 0 02:19 ? 00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root 1446 1 0 02:19 ? 00:00:02 sendmail: accepting connections
smmsp 1453 1 0 02:19 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clien
haproxy 1465 1 0 02:19 ? 00:07:47 /usr/sbin/haproxy -D -f
/etc/haproxy/haproxy.cfg -p
root 1473 1 0 02:19 ? 00:00:00 crond
root 1483 1 0 02:19 ? 00:00:00 /usr/sbin/atd
root 1503 1 0 02:19 tty1 00:00:00 /sbin/mingetty /dev/tty1
root 1507 1 0 02:19 tty2 00:00:00 /sbin/mingetty /dev/tty2
root 1509 1 0 02:19 tty3 00:00:00 /sbin/mingetty /dev/tty3
root 1511 1 0 02:19 hvc0 00:00:00 /sbin/agetty /dev/hvc0 38400 vt100-nav
root 1512 1 0 02:19 tty4 00:00:00 /sbin/mingetty /dev/tty4
root 1514 1 0 02:19 tty5 00:00:00 /sbin/mingetty /dev/tty5
root 1516 1 0 02:19 tty6 00:00:00 /sbin/mingetty /dev/tty6
root 11917 1404 0 15:57 ? 00:00:00 sshd: ec2-user [priv]
ec2-user 11921 11917 0 15:57 ? 00:00:00 sshd: ec2-user@pts/0
ec2-user 11922 11921 0 15:57 pts/0 00:00:00 -bash
root 11945 11922 0 15:57 pts/0 00:00:00 sudo -s
root 11946 11945 0 15:57 pts/0 00:00:00 /bin/bash
newrelic 13357 1 0 16:22 ? 00:00:00 /usr/sbin/nrsysmond -c /etc/newrelic/nrsysmond.cfg -
newrelic 13359 13357 0 16:22 ? 00:00:17 /usr/sbin/nrsysmond -c /etc/newrelic/nrsysmond.cfg -
root 30012 1383 0 21:40 ? 00:00:00 sleep 5
Tags amazon-ec2 linux haproxy