内网PC穿透建站的三大优势和七个局限

内网PC穿透建站的方案之所以成为可能,基于以下前提:

1 家用的宽带的上传速度已经达到了70Mbps+,VPS的上行带宽通常(约等于)不设限制,而云计算VPS的下行出口带宽仍然是1Mbps、2Mbps。综合以上数据,使用内网PC穿透建站之后,出口带宽的瓶颈仍然是外网IP的出口带宽,并没有因为使用内网提供服务而有所降低(虽然网络延迟略有增加)。

2 商业用电和住宅用电的费用相比有两倍左右的差距,同样的计算如果放到内网的PC上执行,电费一项会节省开支50%(外网电费包括在总费用中,不单独体现)。

这就意味着,内网PC穿透建站的方案有可行性。

用内网PC穿透建站有三项巨大的优势。

第一个优势是:迁移方便

使用外网服务器建站如果要迁移是一件工作量巨大的事,不要说从A运营商迁到B运营商了,就算同一运营商不同数据中心之间的迁移也同样麻烦。假如:某网站有50GB数据需要迁移,而小型网站使用的最低的外网带宽是1Mbps,需要多久能迁移到新服务器呢?需要5天4夜!或者临时加钱升级带宽从1Mbps升级到10Mbps也需要11小时,哪怕临时调整到100Mbps,最快也需要1个多小时。而100M带宽的费用已经很贵了,255元/天。这么长的时间的迁移带来一个两难的困境:

为了保证服务不中断就会产生数据不一致,如果要保证数据一致就要中断服务,如果要两全其美就要让新旧服务器同时在线互为镜像,然后停掉旧的,这种方案的人工成本更高,以至于硬件成本与人工成本相比都忽略不计了。

更不要提新主机需要安装配置一系列软件:nginx、mysql、php、php-fpm……分配权限、修改配置、数据导入等一堆乱事。

再看看内网PC穿透建站如何迁移。

使用内网PC穿透建站之后,所有的数据和程序都在内网PC上,外网仅仅提供了外网IP、流量中转和热点缓存。更换服务商,新的外网服务器可以通过脚本,实现一键搭建。从购买的新主机上架到新主机正式提供服务,熟练之后只需要10分钟。而且整个迁移过程中,不管是旧外网主机还是新外网主机的服务都没有中断,切域名解析之后也是。整个迁移过程既不会丢失一个请求也不会产生数据不一致,真是轻松加愉快。

第二个优势是:维护方便

曾经有一家叫清博数控的公司把数据放在腾讯云上。本来腾讯云是提供了云盘的三副本安全机制,但是很不巧的是:在人工处理时连续几个小概率失误,导致他们的数据彻底丢失了。后来双方闹到法院打官司,但不管结果如何,丢失的数据再也找不回来了。

各大云计算运营商都提供了完备的快照备份服务,但天下没有免费的午餐,备份服务也都不便宜。尤其是想异地灾备在本地备份一下的时候,综合成本是很高的。IT界有一句谚语:不要低估一辆满载硬盘大卡车的带宽。网络不管如何方便,有些时候还是直接把硬盘插上去直接拷比较快,当数据量比较大的情况下尤其是这样。

服务器在本地,就可以有很多办法备份数据而不需要外网,比如:数据库主从复制,然后备份从数据库快照等等。

假如因为误操作导致无法远程登陆就很麻烦(需要到控制面板使用VNC方式维护),而本地PC就很方便了直接就能操作。

第三个优势是:成本优势巨大

云主机通常会提供一个20GB - 50GB不等的免费的系统硬盘,需要更大的硬盘就需要额外买。以云计算界的价格屠夫腾讯云为例,假如需要6T的存储空间,需要的费用是:21000元/年。如果自己网购一块6TB的硬盘,一次性成本仅需要1200元,就可以永远拥有直到用挂了,额外挂载一块硬盘每年的电费可以忽略不计。按照一块硬盘的寿命是三年计算,外网的费用就高了50多倍。

如果需要更高的算力也一样,自行升级CPU、内存等等只是一次性支出,而高配置的公网主机是日常性的支出。

11.jpg
美剧《硅谷》中几个主角在创业初期就是在自家车库中搭建服务器

说完了内网PC穿透建站方案的优势,再说说它的局限性。

局限一:对存储需求小的网站不适用内网穿透

如果存储的需求很小,云计算商提供的系统盘如果已经完全可以满足需求,而且数据也不经常变化(也就不需要维护成本了),那么内网穿透带来的效益就享受不到,再用内网穿透建站就是脱裤子放屁了。

局限二:内网和外网之间的网络要求通畅

如果内外网之间的网络质量不佳,经常丢包(比如:内网位于境内,外网IP位于境外)。这种情况下也不适用于内网穿透建站,因为响应时间会比较长。

局限三:对响应速度要求高的网站不适用于内网穿透

虽然家用宽带的网速要高于商用外网IP的网速,但是系统响应速度不仅仅取决于网速,还有网络延迟,而内网穿透建站的方案很显然增加了网络延迟。

局限四:噪音和空间占用

计算机24小时产生噪音,如果放在卧室会影响睡眠。同时,不管放在哪里都会占用居住空间。考虑到房价这么贵,这个问题其实挺严重的。以1万元/平米计算,一个24小时开机的电脑大约占用0.5平米的使用空间,就相当于损失了5000元的房间使用面积。我一直在尝试通过把电脑挂在墙上,挂在阳台或者放到露台等等方法解决,但是使用方便和不占地方总是无法同时满足。

局限五:可靠性下降

多了一个环节,不可避免的会降低可靠性。原来只有VPS故障才会断网,使用内网穿透后家用宽带坏了也会造成断网。

局限六:外网IP出口带宽仍受限制

按理说,这一条不应该算是局限,因为这个限制是一直存在的。可能有朋友误认为:假如外网IP出口时1Mbps,家用宽带的上行带宽是70Mbps,那内网穿透之后网站的带宽就是70Mbps。这种想法是错误的:所有的流量仍然需要通过外网出口下发给用户,所以网站的带宽仍然是1Mbps。

还有人说:出口带宽仍然受限制,就算你有6TB的存储又有什么用呢?需要一年多的时间才能下载完。这也是一种常见的误解,其实存储和带宽没有太高的相关性,并不是所有数据都是用于传输。以搜索引擎为例,我们一次简单的搜索,要支持这次搜索,可能使用到了1TB或者更大的索引,但用户只得到了几十KB的网页。除了搜索之外,还有机器学习、深度学习、大数据等等领域都需要非常大的存储,但是产出的结果并不需要很大的带宽。

局限七:不能直接获取到真实IP

不同的代理方案会在HTTP请求的头部加上真实IP的信息,常见的有:

X-Forwarded-For
Proxy-Client-IP/WL- Proxy-Client-IP
HTTP_CLIENT_IP
X-Real-IP

内网的脚本语言获取用户IP需要做一些逻辑判断,而无法直接获取。


综合考虑内网穿透建站的优势和局限,我的一个小项目(http://www.zlck.com)非常适合放到内网,它的数据量非常庞大,但是访问量不高,而且对网速要求并不苛刻。我计划在测试充分之后,陆续将服务迁至内网,未来的理想状态是:外网只提供出口IP、流量中转和热点缓存。