环境:
服务器:主服务器A,备服务器B(主服务器配置和带宽都大于备服务器器)
业务:tomcat
端口:443,80
协议:https
域名:www.danny.com
证书:ssl证书,域名绑定了ssl证书并都配置安装在AB服务器中
要求:主要使用A服务器跑业务,B服务器只有在A服务器不可用时才接受访问流量
阿里云负载均衡后台转发服务器组选择:
1.后端服务器
和传统后端服务器组基本没区别,通过转发规则实现流量分发,达到负载均衡的目的。
2.虚拟服务器组
当需要将不同的请求转发到不同的后端服务器上时,或需要通过域名和URL进行请求转发时,可以选择使用虚拟服务器组。
3.主备服务器组(满足要求)
即后端服务器中有一台主机和一台备机。当主机工作正常时,流量将直接走主机;当主机宕机时,流量将走到备机。由于备机不会做健康检查,所以只要主机健康检查失败,系统会直接将流量切到备机。当主机健康检查成功恢复服务后,流量会自动切到主机。
实现步骤
1.添加主备服务器组,添加主备端口443,勾选备机
2.添加监听规则,使用TCP监听(主备服务器组只支持TCP四层监听),监听端口443,健康检查端口443(默认为后台服务器组端口),当然也可以用域名做健康检查。
这条规则的意思是用户到负载为443端口的请求转发到后台服务器的443端口。
3.继续添加监听规则,使用http监听,监听端口80,健康检查端口80。(当然这步是没有用到主备服务器组的,用的是后端服务器组,因为主要流量需要通过主服务器,这时可以设置权重1:100来解决,因为对于https的我们公司业务来说,基本都是https访问的,这一步主要针对直接用http协议访问的用户。没办法,试过1.https监听,2.http监听,3.全tcp监听,4.https和http重定向结合监听,5.一个tcp443端口监听等多种监听搭配都不能访问或不能用http直接访问,问题提交工单也没解决,这算是一个折中的办法吧——在很少的http直接请求用户中,又只有很少一部分请求会转给备机,综合基本99%的请求还是直接通过主业务机,基本达到要求吧)
这条规则的意思是用户到负载为80端口的请求转发到后台服务器的80端口,后台接受到80端口的信息,也就是http非ssl证书请求会自动转发给https(前提是需要在绑定ssl证书时在后台设置tomcat请求转发),最终可以实现一些http请求重定向到https
结果如下:
4.解析域名到负载公网IP上
5.https访问即可,也可直接通过http访问(安装ssl证书时别忘了做http跳转https的设置,详见https://cloud.tencent.com/document/product/400/4143)
访问www.danny.com即可自动补全跳转到https://www.danny.com
总结:监听设置有很多坑,理论上可以实现,实际却不一定,比如说设置一个https监听,后端80,理论上是可以访问https页面的,但是我测试的时候不能,网页打不开,其他监听规则一样。以上方法是结合多种失败总结出来的,记录一下。当然也可能是我的web是tomcat有关,不同的web如nignx,设置方式也不同。
注意:
负载均衡监听规则很多,分别有http、https、TCP、UDP监听,四层监听为TCP和UDP;七层监听为http和https。具体使用什么监听规则看具体网站所用协议,底层监听适用范围大于高层监听。比如上面提到的https协议网站就可以用TCP监听,当然前提是绑定安装了ssl证书。