用HAProxy代理多服务器多域名HTTPS站点

本站所使用的架构可以详细看这里:本站架构

用HAProxy代理多域名HTTPS站点有两种途径:tcp和https,本文分别列出两种方法,我均已测试通过:

安装就不多说了,Debian自带稳定版,一行命令就搞定:

apt-get install haproxy

 

方法一,用TCP连接

这个路子只能针对单一后端节点,或者多节点轮询也可以,但无法区分域名,也就是不太灵活。(我看官方博客提供的TCP+根据域名分流的方法,但很复杂,而且我没测试成功)这个方法的效率最高。

配置:

listen https
bind 0.0.0.0:443
mode tcp
balance roundrobin            
server s1 后端服务器1:443 weight 3 maxconn 10000 check inter 10s
server s2 后端服务器2:443 weight 3 maxconn 10000 check inter 10s
server s3 后端服务器3:443 weight 3 maxconn 10000 check inter 10s

比葫芦画瓢,不用多做解释了

 

方法二,用HTTPS方式

此方法很灵活,可以根据域名分发至不同的服务器,但需要自身多做一次SSL交互,理论上性能略低,但HAProxy的性能再怎么低也比Nginx、Apache之流高出很多很多倍。

看完整配置:

frontend http_server
mode http

bind 0.0.0.0:443 ssl crt /var/www/ca/old.tingtao.org/old.tingtao.org.pem crt /var/www/ca/www.tingtao.org/www.tingtao.org.pem

    use_backend www_tingtao_net if { ssl_fc_sni old.tingtao.org }
    use_backend it_tingtao_net if { ssl_fc_sni www.tingtao.org }


backend www_tingtao_net
  mode http
    server web1 后端服务器1:443 check ssl verify none
    server web2 后端服务器2:443 check ssl verify none

backend it_tingtao_net
  mode http
    server web1 后端服务器1:443 check ssl verify none
    server web2 后端服务器2:443 check ssl verify none

本身不复杂,但网上的中文教程全错,呵呵。略作解释:

 

bind 0.0.0.0:443 ssl crt /var/www/ca/old.tingtao.org/old.tingtao.org.pem crt /var/www/ca/www.tingtao.org/www.tingtao.org.pem

这一行,有多个证书就附加多个进来,也可以更简单的指定一个目录,但路径必须正确,否则出错无法启动的。

 

 

    use_backend www_tingtao_net if { ssl_fc_sni old.tingtao.org }
    use_backend it_tingtao_net if { ssl_fc_sni www.tingtao.org }

这里,根据匹配到的域名选择对应的后端服务器组(也可以用配置语法中的正则),在HAProxy里,不论一个还是多个服务器,都是以“组”的形式出现的

 

 

backend www_tingtao_net
  mode http
    server web1 后端服务器1:443 check ssl verify none
    server web2 后端服务器2:443 check ssl verify none

backend it_tingtao_net
  mode http
    server web1 后端服务器1:443 check ssl verify none
    server web2 后端服务器2:443 check ssl verify none

这里定义对应的后端“组”,也可以加轮询算法、权重什么的参数,我这没必要,各位需要的话自己加上就好了。

 

 

Haproxy本身是一个超高性能的负载均衡软件,官网测试的是用十几年前的古董计算机可以跑满10G带宽,其性能绝非Nginx这种可比的。

PS:我以前的公司用这玩意做前端,承载后面7万左右个网站,用的不过是一个E2200的cpu就足够了,还长时间cpu占用为0,其他的代理软件差距实在太大,没必要对比了。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

  1. avatar Pursue 0