本站所使用的架构可以详细看这里:本站架构
用HAProxy代理多域名HTTPS站点有两种途径:tcp和https,本文分别列出两种方法,我均已测试通过:
安装就不多说了,Debian自带稳定版,一行命令就搞定:
1 |
apt-get install haproxy |
方法一,用TCP连接
这个路子只能针对单一后端节点,或者多节点轮询也可以,但无法区分域名,也就是不太灵活。(我看官方博客提供的TCP+根据域名分流的方法,但很复杂,而且我没测试成功)这个方法的效率最高。
配置:
1 2 3 4 5 6 7 |
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之流高出很多很多倍。
看完整配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
frontend http_server mode http bind 0.0.0.0:443 ssl crt /var/www/ca/www.tingtao.net/www.tingtao.net.pem crt /var/www/ca/www.tingtao.org/www.tingtao.org.pem use_backend www_tingtao_net if { ssl_fc_sni www.tingtao.net } 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 |
本身不复杂,但网上的中文教程全错,呵呵。略作解释:
1 |
bind 0.0.0.0:443 ssl crt /var/www/ca/www.tingtao.net/www.tingtao.net.pem crt /var/www/ca/www.tingtao.org/www.tingtao.org.pem |
这一行,有多个证书就附加多个进来,也可以更简单的指定一个目录,但路径必须正确,否则出错无法启动的。
1 2 |
use_backend www_tingtao_net if { ssl_fc_sni www.tingtao.net } use_backend it_tingtao_net if { ssl_fc_sni www.tingtao.org } |
这里,根据匹配到的域名选择对应的后端服务器组(也可以用配置语法中的正则),在HAProxy里,不论一个还是多个服务器,都是以“组”的形式出现的
1 2 3 4 5 6 7 8 9 |
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,其他的代理软件差距实在太大,没必要对比了。
转载请注明:听涛IT站 » 用HAProxy代理多服务器多域名HTTPS站点