Я пытаюсь настроить HAProxy для балансировки нагрузки группы серверов Thrift. По какой-то причине на странице статистики HAProxy говорится, что все серверы не работают.
Вот текущая конфигурация HAProxy, которую я пытаюсь.
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 60000
user haproxy
group haproxy
defaults
log global
option dontlognull
option redispatch
retries 3
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen stats :5000
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /
stats auth user:pass
listen metrix :5002
mode tcp
option tcplog
balance leastconn
server m1 127.0.0.1:9000 check
server m2 127.0.0.1:9001 check
server m3 127.0.0.1:9002 check
server m4 127.0.0.1:9003 check
server m5 127.0.0.1:9004 check
server m6 127.0.0.1:9005 check
server m7 127.0.0.1:9006 check
server m8 127.0.0.1:9007 check
Еще кое-что. Серверы Thrift работают в Supervisor, с которыми я заметил некоторые странности. Но я попытался просто запустить сервер Thrift не в супервизоре, и он все еще не работает.
Я пробовал все серверы Thrift (TSimpleServer, TNonBlockingServer, TThreadedServer), все они имеют одну и ту же проблему.
Обновить
Бег tcpdump port 9000
15:12:31.878502 IP ip-00.00.00.00.ec2.internal.cslistener > ip-11.11.11.11.ec2.internal.36206: Flags [R.], seq 0, ack 3433673377, win 0, length 0
15:12:33.878425 IP ip-11.11.11.11.ec2.internal.36207 > ip-00.00.00.00.ec2.internal.cslistener: Flags [S], seq 3459211721, win 5840, options [mss 1460,sackOK,TS val 440815982 ecr 0,nop,wscale 10], length 0
куда 00.00.00.00
это сервер, на котором запущен сервер Thrift и 11.11.11.11
это сервер, на котором запущен HAProxy. Эти 2 строки повторяются непрерывно.
Бег netstat -tlnp
содержит следующее:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 19472/python
Итак, сервер Thrift прослушивает правильный порт.
В этом недостаточно tcpdump
конечно, но похоже, что ваша проверка здоровья отправляет SYN
пакет и получает RST
пакет взамен. (Не стесняйтесь размещать больше в своем вопросе, где вы можете его правильно отформатировать.)
Я подозреваю, что 127.0.0.1:9000 (или любой другой порт) ничего не слушает.
Вы можете проверить это с помощью sudo netstat -tlnp
.
Либо серверы Thrift прослушивают разные IP-адреса и / или порты, либо не слушают вообще.