Я хочу создать простой балансировщик нагрузки для двух серверов.
Думаю, проблема в записях CNAME.
Допустим, у меня есть два одинаковых приложения на AppFog.com.
app1.aws.af.cm и app2.aws.af.cm
Вот мой файл haproxy.cfg:
global
maxconn 2000
daemon
defaults
mode http
clitimeout 60000
srvtimeout 30000
contimeout 4000
option httpclose
listen http_proxy
bind [myip]:80
mode http
stats enable
stats auth user:passwd
stats uri /stats
balance source
option httpchk
option forwardfor
server host01 app1.aws.af.cm:80 maxconn 300 check
server host02 app2.aws.af.cm:80 maxconn 300 check
Но это только разрешение IP для домена app1.aws.af.cm и app2.aws.af.cm, что, очевидно, не работает, если я открою этот IP-адрес в веб-браузере.
Проблема в том, что AppFog не имеет общедоступного IP-адреса для приложения (как и OpenShift).
Как сделать этот Haproxy для правильного соединения между Load Balancer и этими двумя серверами?
Пример:
Это настоящее приложение - http://freechat.eu01.aws.af.cm
Haproxy разрешает IP только для этого домена, который равен 46.51.204.8:80
Конечно, этот IP-адрес не будет отображать мое приложение, только страницу с ошибкой.
Извините за мой плохой английский.
Возникли небольшие проблемы с отслеживанием вашей проблемы. Однако следует иметь в виду, что HTTP-запросы имеют запрошенное доменное имя в качестве поля Host в заголовке HTTP.
Поэтому балансировщики нагрузки и веб-серверы обычно направляют запрос или отвечают на запрос, если название привязка соответствует заголовку хоста.
Возможно, это немного проясняет ситуацию, а может быть, вы можете попытаться перефразировать свой вопрос?
Я тоже не уверен, что полностью понимаю это. Когда у меня были сайты, которые привязываются к заголовку хоста, а не к IP-адресу, все, что мне нужно было сделать, это убедиться, что проверка работоспособности также использует заголовок:
option httpchk HEAD /mystatus HTTP/1.1\r\nHost:\ example.com
Это позволяет ему пройти проверку работоспособности. Когда клиент подключается, он вводит правильный домен, например www.example.com. Насколько мне известно, информация заголовка хоста не потеряна, поэтому соединения будут работать.