Я хочу загрузить баланс двух серверов apache / php с помощью haproxy. Погуглил я увидел, что начиная с версии 1.5 dev12, haproxy поддерживает разгрузку SSL, что, как я понимаю, означает, что нет необходимости в каких-либо дополнительных компонентах перед haproxy для обработки SSL.
В основном я следил за этой статьей http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/ настроить haproxy
Ниже моей конфигурации
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend ft_test
mode http
bind 0.0.0.0:443 ssl crt /home/prx/haproxy_ssl/haproxy.ssl prefer-server-ciphers
# other (self described) options are: [ciphers <suite>] [nosslv3] [notlsv1]
default_backend bk_test
backend bk_test
mode http
balance roundrobin
server inst1 10.1.2.43:80 check inter 2000 fall 3
server inst2 10.1.2.142:80 check inter 2000 fall 3
Проблема в том, что бэкэнд-серверы получают запросы одновременно. Я имею в виду, я обновляю страницу один раз и каждый раз, когда в журнале веб-сервера появляются 3 запроса. Образец журналов.
10.1.2.138 - - [24/Jan/2013:12:16:09 -0500] "GET /index.php HTTP/1.1" 200 67170
10.1.2.138 - - [24/Jan/2013:12:16:09 -0500] "GET /index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524
10.1.2.138 - - [24/Jan/2013:12:16:09 -0500] "GET /index.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2146
Иногда 2 запроса попадают на один сервер, а 1 - на другой, но результаты обновления 1 страницы до 3 запросов, поступающих на бэкэнд. Я проверил конфигурации бэкэнд-серверов, и они в порядке.
Конфигурация haproxy неверна? Спасибо
Возможно ли, что эти запросы, которые вы видите, представляют собой всего лишь несколько HTTP-запросов для загрузки страницы? Я считаю, что баланс раундробина будет иметь каждый отдельный запрос, отправляемый на другой внутренний сервер. Если вы хотите, чтобы пользователь одновременно взаимодействовал только с одним внутренним сервером, я думаю, вам нужно будет изучить постоянство. Как еще одна возможность, могли ли вы видеть проверки внутреннего сервера в журналах?