本文章已收录至本站专栏
服务器集群系列
1、实现原理
摘自:宝塔论坛
https://www.bt.cn/bbs/thread-58436-1-1.html
负载均衡的简单原理大概如下图:
需要安装专业版插件:宝塔负载均衡,
如果没有正版授权,可参考文章:
安装宝塔7.7.0企业版
https://blog.tsinbei.com/tw/archives/7/
安装宝塔7.9.0企业版
https://blog.tsinbei.com/tw/archives/293/
如果有能力,建议支持正版!
2、添加节点
这里使用三台机器进行负载均衡配置,
负载均衡服务部署在192.168.100.3,以下简称主控。
后端节点192.168.100.1,192.168.100.2,以下简称节点。
由于我们的负载均衡是使用Nginx来搭建的,要先在主控机器上安装Nginx,然后安装宝塔负载均衡插件。
安装好插件之后打开插件,
添加负载:
参数说明:
- 域名:填网站域名
- 负载名称:自定义,建议填写网站域名,方便区分
- 会话跟随:一般选择Cookie即可,如果有特殊需求就选择IP,静态网站选择关闭
节点配置:
如果你按本系列的教程走,那么IP地址填之前组网的虚拟IP。如:192.168.100.1
组网参考教程:
服务器集群(二)WireGuard组网
https://blog.tsinbei.com/tw/archives/621/
如果云厂商自带内网互联,则填内网VPC的IP。如:172.20.0.1
如果以上都没有,那就填公网IP,记得开放防火墙。如:1.1.1.1
如果只需要HTTP,添加节点就用80端口,否则用443端口。
注意:如果用非标准端口,那么会被默认识别为HTTP,造成添加失败。
解决方法:在使用非标准端口的节点,打开网站配置,编辑配置文件:
1 | listen 8080; listen 8443 ssl http2; |
先关闭强制SSL,再替换为:
1 | listen 8080; listen 8443; |
注意:等主控端添加完成后,要再改回去。
原因:宝塔负载均衡默认是协议跟随,即使用HTTPS访问主控,主控也用HTTPS回源节点,因此相当于使用HTTPS协议访问HTTP站点,自然会报错。
3、高级设置
3.1、Cookie设置
添加完成后,还可以点击修改,再次设置配置。
如果在前面选择Cookie跟随,会看到:
建议更改Cookie标识,只能小写字母或下划线。其他可自定义。
如果需要更安全,建议开启Secure保护。
3.2、节点设置
节点类型有三个:参与、备用和停用。
备用:
假设我有2个负载均衡主控(M1,M2),4个负载均衡节点(S1,S2,S3,S4),
其中M1和S1,S2在同一区域(如:都在中国境内),M2和S3,S4在同一区域(如:都在美国境内)
那么可以如此设置:
M1设置S1,S2为参与,S3,S4为备用,
M2设置S1,S2为备用,S3,S4为参与,
这样既保证了回源速度,又保证了高可用性。
停用:
如果一个节点正在调试,那么可以临时设置为停用。一段时间内回源错误率太高,也可以停用排查。
其他设置有权重和恢复时间。
权重:
权重越高,该节点就越被频繁访问。
例如S1权重为2,S2权重为3,那么访问5000次,会有2000次分配给S1,3000次分配给S2。
如果节点就在本地,可以按照上文的方法使用非标准端口(建议部署在Docker内),节点IP设置为127.0.0.1。
访问本地资源,自然是更快的,因此可以设置更高的权重,例如2或3。
注意:如果一个节点返回50x,如果满足特定条件,那么在返回给客户端前,主控会查询下一个节点,丢弃该节点的内容;
如果不是50x,则会返回该节点的内容;
如果仍是50x,那么继续查询下一个节点,如果“参与”节点没有了,就查询“备用”节点,如果全部查询完毕,则使用最后一个节点返回的内容。
宝塔负载均衡称这为一次“并发”。
这样可以避免一个节点的问题引起客户端访问返回50x,但是在调试时也会导致50x错误页面返回缓慢。
因此调试时建议停用所有节点,只启用一个最快的,调试完成再改回去。
恢复时间:
一个节点返回50x后,会自动停用,过一段时间再启用。这段时间被成为恢复时间。
但是,恢复也不是直接启用,会对正常节点和恢复节点同时发出请求,如果恢复节点仍然返回50x,那么再次停用该节点。
宝塔负载均衡也称这为一次“并发”。
注意:插件内,并发数和错误数似乎是实时的,因为有时我看到是2,过一会儿变成了0。
也有可能是点进去“日志”之后被标记为了“已读”,总之这个数字会被清零。
4、使用场景
如果只有一台主控,一台节点,建议直接用NGINX反向代理,无需用这个插件。
但是,可能会出现DNS问题:主控不断请求自己。
因此建议配合Dnsmasq或腾讯云PrivateDNS私有域使用,参考文章:
服务器安全(二)内外网防御
https://blog.tsinbei.com/tw/archives/140/
服务器集群(六)宝塔专业版网站负载均衡
评论