Итак, у меня возникли проблемы с балансировкой нагрузки socket.io на порту 8888 с использованием HAProxy. Моя настройка - прослушивание NGINX на порту 80 и балансировка нагрузки между экземплярами веб-сервера Tornado, работающими на порту 80. Затем на том же распределителе нагрузки у меня есть экземпляр HAProxy, прослушивающий порт 8888, пересылающий запросы на ДРУГИЕ компьютеры в сети, в которой размещен TornadIO. экземпляры сервера также работают на 8888. Соединение работает в течение первых 30 секунд или около того, а затем начинает повторно отключаться / повторно подключаться. Важно отметить, что кажется, что он прерывается при первой попытке сердцебиения ... является ли сердцебиение другим протоколом, с которым у HAProxy могут возникнуть проблемы, в отличие от первой попытки соединения / обмена несколькими первыми сообщениями?
Интересно, что это НЕ происходит, когда экземпляр tornadIO работает на том же компьютере, что и балансировщик нагрузки, даже при работающем HAProxy (но подключается порт 8888 и, скажем, экземпляр tornadIO на порту 9000).
Важно отметить, что TornadIO не выдает никаких исключений или каких-либо расстроенных выходных данных в течение всего этого процесса, показывая, что это не код моего сервера, а что-то на уровне прокси?
Пусть также будет известно, что я использую RabbitMQ для синхронизации всех кластеров TonadIO, но не думаю, что это имеет значение (а HAProxy не касается Rabbit)
Вот моя настройка HAProxy:
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen http-in
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout queue 5000
timeout server 86400000
timeout connect 86400000
bind *:8888
server server1 18.181.3.164:8888 # ether1
В моей конфигурации nginx я вставил:
location ~* \.(eot|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
чтобы убедиться, что это не проблема контроля доступа (консоль не говорит, что это так, поэтому не должно быть).
Я также попытался добавить
option http-server-close
option http-pretend-keepalive
к моей конфигурации HAProxy, но безрезультатно.
Есть идеи?
** Я тестирую в Chrome 9.0.597 и Firefox 3.6 (то же самое с обоими веб-сокетами и без них)