如何做隧道的负载均衡?

2018-01-09 16:58:21 +08:00
 deepkolos

内网一个网站但是多个服务器主机, 大概有 3 台可用的, 部分时间段会开启 6 台, 来应对并发高峰, 现在先假设只有 3 台是可用的

202.192.xxx.129
202.192.xxx.131
202.192.xxx.134

一台可以访问内网也可以访问外网的隧道客户端主机 (上下行 100 兆)
端口设置:

81 -> nginx 反代到 202.192.xxx.129
82 -> nginx 反代到 202.192.xxx.134
83 -> nginx 反代到 202.192.xxx.131
84 -> nginx 反代到 202.192.xxx.134

81 隧道到服务端主机 1 的 8081
82 隧道到服务端主机 2 的 8081
83 隧道到服务端主机 3 的 8081
84 隧道到服务端主机 4 的 8081

4 台有公网 ip 的隧道服务端主机 (均为上下行 1 兆) (师弟手里的服务器)
服务主机 1,2,3,4
8081 -> http
8083 -> ngrok controll link

分配一批子域名到对应的主机的公网 ip
主机 1: ngrok-1.xxxx.cn
主机 2: ngrok-2.xxxx.cn
主机 3: ngrok-3.xxxx.cn
主机 4: ngrok-4.xxxx.cn

还有一个爬虫(缓存)主机, 目前部署在的云服务器里面, 然后通过隧道爬虫内网的网站, 再对外提供服务

那么如何做这样的隧道结构的负载均衡?

在爬虫那里做一层? 然后内网隧道客户端主机做一层?

爬虫否应该搬到隧道客户端主机?

3921 次点击
所在节点    程序员
20 条回复
defunct9
2018-01-09 17:07:09 +08:00
看得我头晕,画个图吧
deepkolos
2018-01-09 17:29:04 +08:00
defunct9
2018-01-09 17:46:07 +08:00
折腾这个就为了避过备案?老老实实备案去吧
defunct9
2018-01-09 17:49:35 +08:00
感觉这个架构太累了。
直接外网找单独一个服务器做 openvpn server, 装 nginx 和 openvpn。
内网的三台直接拨通 openvpn,或者中间那台代理 haproxy,拨出去,然后就内外可见了。用 nginx 代理即可。
N0stalgia
2018-01-09 18:04:56 +08:00
做个 DNS 的解析负载均衡岂不是美滋滋?
deepkolos
2018-01-09 18:49:44 +08:00
@defunct9 不是哈, 教务系统爬虫来的
deepkolos
2018-01-09 18:54:36 +08:00
@defunct9 现在用的是 ngrok 做内网穿透, 但是云服务器带宽只有一兆, 所以想叠加几台, 期末查成绩会并发和流量都比较大大, 因为成绩是以图片的形式展示的, 课表也是
hljjhb
2018-01-09 19:33:53 +08:00
为什么要把内网服务器反代到多个端口?
deepkolos
2018-01-09 19:42:28 +08:00
@hljjhb 教务系统有多个内网地址, 129 是学校官网暴露出去的, 134, 131 是遍历 ip 测出来的, 有就拿来用嘛
hljjhb
2018-01-09 19:47:04 +08:00
@deepkolos 😂直观想法难道不是挂到 nginx 负载均衡上吗
likuku
2018-01-09 19:54:33 +08:00
结构不作大的变更的话,那就:

所有可被访问到的 web 主机前面都放负载均衡器(nginx,haproxy,F5,netscaler 等等),无论内外网,无论哪里访问。

宗旨:把负载均衡插入 web 服务器 与 发起 web 访问的客户端(人类,机器,爬虫,balala) 就可以了。
okletswin
2018-01-09 19:55:53 +08:00
爬虫(缓存)主机是关键点吧?外部云主机的数据来源是此缓存主机吧?要是的话,和云主机放同一个内网
另外,云主机只有 1M 带宽?现在流行的方案是云主机只有内网 IP,在云主机前加负载均衡,按需调整整体带宽,教务系统这种,其实按流量计费就足够了吧
为什么要把内网服务器反代到多个端口?
deepkolos
2018-01-09 20:40:50 +08:00
@okletswin @hljjhb
没没经验, 所以跑来问嘛😂
defunct9
2018-01-09 21:38:54 +08:00
@deepkolos 恩。那就按我上条来呗。ngrok 维护带宽和 openvpn 相比是大的。
hljjhb
2018-01-09 22:52:44 +08:00
@deepkolos 建议找个对象存储,七牛或腾讯都有免费额度

把内网服务器负载均衡到隧道客户端主机,同时在此主机上跑爬虫,缓存的图片都扔到对象存储,隧道到外网云服务器提供 web 或 api 服务
just1
2018-01-09 23:05:05 +08:00
简单的方法:
4 台隧道的服务器(ngrok-xx)设置同一个域名。
爬虫本地开 nginx 反代这个域名,4 均衡负载
但是这不好,这是 4to4,内网对应服务器 down 了这台云服务器也没用了。

好的办法:
内网 100m 服务器 nginx 均衡负载,6ip ( nginx 会自己决定走哪个)。4 台 1m 用 nginx 外代,对外暴露域名一致。
爬虫本地开 nginx 反代这个域名,4 均衡负载
litter123
2018-01-09 23:29:41 +08:00
@deepkolos 又是一个学校相关信息微信公众号大佬
nadoo
2018-01-10 00:24:28 +08:00
爬虫直接放在内网爬
flowfire
2018-01-10 10:57:41 +08:00
emmm 我比较想问的是 202 开头的内网地址。。。。?
deepkolos
2018-01-10 11:06:08 +08:00
@flowfire 广东的教育网 202.192.0.0 ~ 202.199.255.255

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/421419

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX