每天约 14 万次访问量,只返回访问者的 IP 地址,应该如何部署更节省成本?

2016-05-03 23:11:30 +08:00
 abelyao

有这样一个需求,每台机器每 30 秒通过访问一个特定的页面,来获取外网 IP 地址,大概会有 50 台机器运行;

返回的内容大概就是 {'ip':'123.123.123.123'} 而已,因为需要服务端来判断来访者 IP ,所以没办法直接部署到 CDN 或者做缓存(这个 IP 必须得是实时的,如果来访者 IP 换了也得给出新的结果);

目前考虑的是部署一个 node.js 来跑(据说高并发很好?),每天 14 万次请求,除了购买一个 VPS 还有什么更好的办法吗?

PS. 考虑过通过网卡来获取 IP ,但机器都在路由器后面,网卡信息是没有外网 IP 地址的;
PPS. 也考虑过直接抓网络上其它 IP 查询网站的结果,但这些网站有时会触发保护系统,返回了错误的结果;

16727 次点击
所在节点    DevOps
112 条回复
Bryan0Z
2016-05-04 07:53:57 +08:00
@kofip 没有公网 ip 的宽带, ip 会不一样到处,另外
tracert baidu.com
我这里一直没什么问题呀
kofip
2016-05-04 08:14:26 +08:00
@Bryan0Z 我通过路由器上网的,路由跟踪 获取不到 自己公网 IP 。
kofip
2016-05-04 08:16:18 +08:00
@c3538378 很多服务都是通过 TCP 中转到后端服务器的,获取不到客户 IP ,只能拿到中转服务器的 IP 。
kofip
2016-05-04 08:17:39 +08:00
@c3538378 我的做法是,直接让客户端获取到自己的公网 IP ,当作参数传过来。
clino
2016-05-04 08:19:33 +08:00
28 楼应该是最快并发量最大的
kofip
2016-05-04 08:27:43 +08:00
怎么就没有一个基础服务提供查询公网 IP 的呢?
abelyao
2016-05-04 08:35:24 +08:00
@c3538378
@clino
@msg7086

28 楼提到的 nginx 方案在 7 楼就有人提了, 9 楼就给出实例了。而 nginx 也需要跑一个才有,不管是 vps 还是 docker 。在现有方案中找到更降低成本,更提高稳定性的,怎么就变成幻想了?
msg7086
2016-05-04 08:53:48 +08:00
@abelyao 没看懂你想表达什么观点。
kofip
2016-05-04 09:02:50 +08:00
@msg7086 服务器要钱的!
msg7086
2016-05-04 09:06:47 +08:00
@kofip 这么一丁点钱都不肯出的话真的就别做项目了。
我是很认真的说的,不是开玩笑。
kofip
2016-05-04 09:08:48 +08:00
telnet smtp.gmail.com 25

220 smtp.gmail.com ESMTP qb1sm978569pac.44 - gsmtp

EHLO smtp.gmail.com

250-smtp.gmail.com at your service, [61.49.62.100]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8

quit

221 2.0.0 closing connection qb1sm978569pac.44 - gsmtp

我通过 这种方式 获取公网 IP 是不是有点怪异!
kofip
2016-05-04 09:12:41 +08:00
@msg7086 能省则省,想要各地响应都快速,还真不是小钱能搞定。

上面那个 Gmail 方式完全是搞笑的,不会真那么干,没梯子根本访问不了。
Livid
2016-05-04 09:14:34 +08:00
如果只是为了获得外网 IP 的话,用别人的服务吧:

http://httpbin.org/ip

https://httpbin.org/ip
jedyu
2016-05-04 09:14:57 +08:00
nginx 不是一行配置的事吗?维护代理池?
msg7086
2016-05-04 09:19:18 +08:00
@kofip 我随便举个例子。
IDCF 最低配置我现在开的是 200 日元一个月,折合软妹 13 只,大概是一顿饭钱。
Ping 可以保持在 100 内。
内存给了 1G ,硬盘配了 5G ,这已经远远超过跑这套系统的硬件需求了。
拿我 Linode 1G 配置的机子来算好了,上面用 Nginx+Lua 跑了一个 BT Tracker ,每 10 分钟就有 14 万请求, CPU 占用 30%不到, Nginx 进程内存吃了 15M 。想来这配置拿来直接返回一个 IP 的话一天跑几亿请求应该是轻而易举了吧。

一个月 13 软妹币……真的有那么负担不起吗……
yepinf
2016-05-04 09:21:20 +08:00
GTim
2016-05-04 09:21:52 +08:00
@jedyu 支持 nginx + echo 扩展 一台就足以应付
abelyao
2016-05-04 09:23:49 +08:00
@Livid 是的,只是为了获取外网 IP 地址,如果现有服务能稳定(其实我觉得应该比自己部署稳定)而且能被持续查询(每 30 秒查询一次)那当然是更好,自己也省事。
kofip
2016-05-04 09:25:46 +08:00
@Livid PING 345ms
abelyao
2016-05-04 09:29:25 +08:00
@msg7086 @kofip

谢谢两位朋友,都是热心的帮忙出办法。 @msg7086 说的对,随便一个最低配置的 VPS 确实已经能满足要求,价格也完全可以接受。但同时也像 @kofip 说的,需要考虑各地的访问情况和在线率的保障。

这也是发帖的原因,如果只是随便找个 VPS 甚至虚拟主机,返回一个 IP 地址,那我都不好意思发帖问,只是想在这个层面上,再寻找一种更可靠稳定的方案,比如楼上有人提到的,加层 CF 做前端之类的。

还是要感谢两位朋友帮忙出谋划策!

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

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

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

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

© 2021 V2EX