Назад | Перейти на главную страницу

Haproxy и CNAME

Я хочу создать простой балансировщик нагрузки для двух серверов.

Думаю, проблема в записях 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. Насколько мне известно, информация заголовка хоста не потеряна, поэтому соединения будут работать.