Балансировка нагрузки Haproxy Sockjs Websocket и балансировка нагрузки RabbitMQ в одной конфигурации
Я ищу конфигурацию haproxy (HAProxy версии 1.5.18), которая позволит балансировать нагрузку веб-сокета, а также балансировку нагрузки RabbitMQ. Я перепробовал много вариантов, но ни один из них не работает, ниже мой файл конфигурации haproxy:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
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
retries 3
timeout http-request 15s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
timeout tunnel 3600s
frontend http_web *:80
mode http
default_backend rgw
backend rgw
balance roundrobin
server rgw1 173.36.22.49:8080 maxconn 10000 weight 10 cookie rgw1 check
server rgw2 10.42.139.69:8080 maxconn 10000 weight 10 cookie rgw2 check
listen stats :9000
mode http
stats enable
stats realm Haproxy\ Statistics
stats uri /haproxy_stats # Stats URI
stats auth websocketadmin:websocketadmin
listen ampq
bind *:61613
mode tcp
option clitcpka
server rabbit1 10.42.6.112:61613 check inter 1s rise 3 fall 1
server rabbit2 10.42.6.113:61613 check inter 1s rise 3 fall 1
server rabbit3 10.42.6.114:61613 check inter 1s rise 3 fall 1
server rabbit4 10.42.6.115:61613 check inter 1s rise 3 fall 1
Haproxy не дает никакой ошибки, он печатает следующее сообщение, но это не работает, я не могу подключиться к websocket или подключиться к Rabbitmq. Но как только я удаляю "Listen ampq", все начинает работать нормально.
Sep 8 21:00:40 localhost haproxy[3184]: Proxy http_web started.
Sep 8 21:00:40 localhost haproxy[3184]: Proxy rgw started.
Sep 8 21:00:40 localhost haproxy[3184]: Proxy stats started.
1 ответ
Проблема была в порте 61613, который уже был занят другим процессом. Поэтому мне пришлось перейти на новый порт и добавить его в правила брандмауэра, и теперь он работает.