我想为两台服务器创build一个简单的负载平衡器。
问题在于CNAMElogging,我想。
假设我在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
但是这只能解决域名为app1.aws.af.cm和app2.aws.af.cm的IP,如果我在浏览器中打开这个IP,这显然不起作用。
问题是AppFog没有公共的IP地址(和OpenShift一样)。
如何做Haproxy来执行Load Balancer和这两个服务器之间的正确连接?
例:
这是真正的应用程序 – http://freechat.eu01.aws.af.cm
Haproxy只parsing为46.51.204.8:80这个域的IP
当然这个IP不会显示我的应用程序,只有一个错误页面。
对不起,我英文很差。
在你的问题上遇到一些麻烦。 但是,有一件事要记住,HTTP请求具有请求的域名作为HTTP头中的主机字段。
因此,如果名称绑定与主机头匹配,则负载均衡器和Web服务器通常会指示请求或响应请求。
也许这个清除了一些东西,或者你可以尝试重述你的问题?
我也不确定我是否完全明白这一点。 当我有站点绑定到一个主机头,而不是IP地址,我所要做的就是确保健康检查也使用头:
option httpchk HEAD /mystatus HTTP/1.1\r\nHost:\ example.com
然后这允许它通过健康检查。 当客户端连接时,他们将input正确的域名,如www.example.com。 据我所知,主机头信息不会丢失,所以连接将起作用。