Балансировка нагрузки HAProxy transparent mode

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
NikitaZaitsev
Сообщения: 18

Балансировка нагрузки HAProxy transparent mode

Сообщение NikitaZaitsev »

Доброго времени суток.
Пытаюсь настроить load balancer HAProxy для сервера приложений GlassFish. Суть такова. На четырёх серверах (gf1, gf2, gf3, gf4) крутится приложение, условно назовём его app1, ещё на двух (srv1, srv2) - приложение app2. Для app1 всё сразу заработало, вот кусок haproxy.cfg:

#--- app1 with SSL
frontend gf-app1-http
bind 10.0.0.100:80
reqadd X-Forwarded-Proto:\ http
default_backend app1-ssl

frontend gf-app1-https
bind 10.0.0.100:443 ssl crt /usr/local/etc/haproxy/ssl/haproxy.pem
reqadd X-Forwarded-Proto:\ https
default_backend app1-ssl

backend app1-ssl
redirect scheme https if !{ ssl_fc }
mode http
balance source
option httplog
option http-keep-alive
option httpclose
option forwardfor
server gf1 10.0.0.10:8080 check port 8080 inter 1200
server gf2 10.0.0.20:8080 check port 8080 inter 1200
server gf3 10.0.0.30:8080 check port 8080 inter 1200
server gf4 10.0.0.40:8080 check port 8080 inter 1200

Со вторым приложением сложнее - для работы оно должно получать адрес подключившегося клиента, т. е. нужно настраивать transparent mode. Вот кусок haproxy.cfg:

frontend gf-app2
bind 192.168.10.100:8282 transparent
default_backend app2

backend app2
mode http
option httplog
option forwardfor
source 0.0.0.0 usesrc clientip
balance roundrobin
server srv1 10.0.0.50:80 check port 80 inter 1200
server srv2 10.0.0.60:80 check port 80 inter 1200

Далее делаю следующее:
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 111
iptables -t mangle -A DIVERT -j ACCEPT
ip rule add dev eth0 fwmark 111 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100

Собственно, все прочитанные статьи по настройке transparent mode сводятся к этому. Но ничего не работает. Грешил на настройки промежуточного оборудования (я не знаю как циски настроены, этим другие люди занимаются), поднял три виртуалки на qemu-kvm в отдельном vlan, на CentOS HAProxy, на двух Debian - тестовый Apache. В обычном режиме работает (апачевский access.log получает адрес балансировщика), в transparent mode получаю 503 Service Unavailable. Можно ли решить данную проблему?

З. Ы. Оба backend'a крутятся на IBM Power под AIX-7.1, балансировщик нагрузки на RHEL-6.7 for Power, так что keepalived, LVS - не вариант.
Спасибо сказали:
Ответить