一、HAProxy虚拟域名负载原理

    用户发起对www.test.com的请求,在HTTP报文中的HOST字段会出现www.test.com,这是用户在浏览器中输入IP则HOST字段为IP,如果为域名则对应的HOST字段就是该域名。

 例如: 以www.baidu.com和180.97.33.108 来访问百度首页。

 HAProxy构建虚拟域名负载_hdrHAProxy构建虚拟域名负载_HAProxy_02


因此HAProxy正是通过读取HTTP报文当中的HOST字段来判断调度给哪个节点,HAProxy通过配置文件关键字hdr(HOST)来获取HOST字段的值。


二、配置

拓扑如下:

HAProxy构建虚拟域名负载_hdr_03



  1. HAProxy配置

 开启路由转发:

#vi /etc/sysctl.conf
 net.ipv4.ip_forward = 1
#sysctl  -p

 HAProxy配置:

global(略)
defaults(略)
frontend  server  192.168.192.194:80
      acl www.test.com  hdr(HOST)      #www.test.com的ACL 
      acl www.try.com  hdr(HOST)      # www.try.com的ACL 
      use_backend  try.com if      #满足www.try.com则使用try.com调度 
      use_backend  test.com if    # 满足则使用test.com调度  
      default_backend default               #当不是www.test.com或者www.try.com则使用default节点调度

backend  try.com
        balance roundrobin
        server try.com  192.168.112.130:80 check
backend  test.com
        balance source
        server test.com 192.168.112.131:80 check

backend default
        balance  roundrobin
        server default  127.0.0.1:8008 check

开启本地default的HTTP服务器

# yum install  -y  httpd
# cd /var/www/html/
# vi  index.html
  message from default
# vi /etc/httpd/conf/httpd.conf
  Listen  *:8008
# service httpd start


2.WEB--try.com配置

  

#  yum  install  httpd  -y
#  vi  /var/www/html/index.html
   message from try.com
#service httpd start

  

3.WEB-test.com配置(同上)


4.测试结果

修改hosts文件

HAProxy构建虚拟域名负载_hdr_04

HAProxy构建虚拟域名负载_HAProxy_05

HAProxy构建虚拟域名负载_HAProxy_06

HAProxy构建虚拟域名负载_HAProxy_07