单个网关下可以负载均衡多个 upstream service
这个好理解
但是如果存在多个网关节点,用户流量是怎么负载上去的呢
网关节点可以动态扩容吗?还是说网关就是不可变的?
1
locoz 2020-07-14 21:56:48 +08:00 via Android 1
我的理解是多个网关前面也会有个负载均衡措施,比如按照地域划分、按照运营商划分。
简单粗暴点的实现方式就是在 DNS 记录里直接写上多个 IP,现在 DNS 解析服务商基本都支持按地域和运营商区分不同的解析结果。在这个基础上做动态扩容也是一样的,就是在 DNS 解析里加 IP 。 然后普通的 DNS 又会有实时性问题,所以如果要高实时性的话又可以加个 HTTP DNS 。 不是做后端的,所以只了解到这么多,还有别的点的话楼下补充吧 hhh 。 |
2
yanshenxian OP @locoz dns 负载均衡是个好想法 ~
但是 dns 是不是会受到浏览器缓存的影响,如果一个网关挂了,用户还在使用缓存的结果导致请求失败 |
3
locoz 2020-07-14 22:10:25 +08:00 via Android
@yanshenxian #2 据我所知,在一个解析记录里有多个 IP 的情况下,如果第一个 IP 请求失败了,应用会自己再尝试第二个 IP 。具体这个重试机制是在哪一层做的、会不会有别的问题我就不清楚了,只是知道有这么个事。
|
4
40huo 2020-07-14 22:17:26 +08:00 1
LVS 四层负载均衡
|
5
opengps 2020-07-14 22:36:12 +08:00 via Android
常年帮用户上云,对这个问题总结的简略回复:
你需要学习的是负载均衡,参考阿里云 slb 帮助文档,再进一步了解下弹性伸缩 ess 。 实现了云架构之后,负载量就跟服务器数量成正比了,来的用户量大,只需要增加对应的服务器数量即可。ess 可以根据设定的监控指标自动增加机器数量 |
6
xuanbg 2020-07-15 08:57:25 +08:00
1 楼的方法是根据用户线路就近访问,一定程度上起到了负载均衡的作用。一般就是在网关前面放 Nginx 做负载均衡,根据 upstream iphash 转发到不同的网关。结合起来使用效果更佳
|
7
saltbo 2020-07-15 16:32:26 +08:00
基本就两种方案
1. 网关前面放一个四层的负载均衡 2. DNS 轮训 |