我的家庭云部署思路(一):网络/存储/计算分离
授人以鱼不如授人以渔,本篇是我家庭云(泛指各种nas、各类服务集合)部署思路的第一篇,分享下我自己部署家庭设备/网络下的总体思路,给各位有同样想法还未开始部署又或者想调整家里云结构的各位童鞋一点参考。
预计本系列共四-五篇,这是首篇,为整体部署思路。本系列只会讲思路,分享下我为什么要这么做,不涉及任何实际教程。我更期望各位童鞋去思考,什么样的部署方式适合自己,而不是看到教程说什么就去做什么。
开篇我想说一下为什么我要写这个系列。其实我不是很想做这种思路上的分享,因为这种经验/思路其实是一个很空泛的东西,每个人所想又或者是具体部署情况都不一样,不如写教程来得实在(教程类看的人还多。。。。。),这种分享类的写的不好还会被喷。不过此类文章在互联网属实有限,造成了很多人只是千篇一律的照葫芦画瓢,导致整个家庭云出现各种奇奇怪怪的问题,遂写这个系列,给各位一点参考。当然如果觉得本系列有用,记得关注,转发分享。
一、前言
我部署整个家庭云思路只有一个,高稳定性、高性能、高扩展性,网络、存储、计算物理分离(特指不在同一个设备上),每个设备只负责其中一项,任何一部分下线不会对其他两部分造成影响。
当然,物理上分离设备意味着设备数量将会大幅度增加,但是对比很多人推崇的all-in-one来说,不boom稳定才是我看重的。
二、为什么要物理分离
诚然,所有的服务几乎都可以放在一台设备上实现,不管是nas还是软路由又或者各类docker,甚至一台性能够强的小主机都可以搞定,但是众所周知,all in one,all in boom,我不希望因为一个设备损坏导致所有的服务都离线。
例如我这网络部分,主路由是硬路由,软路由和各类网络服务单独部署在一个小主机上,存储有专门的nas,运算部分有专门的服务器部署各类docker/服务,所有的存储/备份全部集中在nas上,我运算服务上除了几个实验用的磁盘之外其余虚拟机/lxc容器的虚拟磁盘都是在nas上存储。
假设现在软路由崩溃了,但是我主路由依然正常,策略路由会自动关闭,整体网络依然不受影响;哪怕我主路由寄了,我软路由也可以临时充当主路由的功能,或者直接断网几天其实也没有啥影响;况且我软路由系统都是直接有备份,应急情况下让运算服务器恢复软路由系统临时用一下也行。又或者我nas崩溃了,但是磁盘有阵列,除非倒霉到家,多个盘一起坏,不然都可以直接恢复,万一真倒霉寄的很彻底,我还有OneDrive备份,恢复下也行。又或者我运算服务器寄了,更加没啥影响,我虚拟机磁盘都在nas上,我直接替换掉运算服务器再重新挂载磁盘就可以恢复所有的服务。
总之,分离的意义是在于独立运行,整体更可控。毕竟我可不想出现类似当软路由炸了后全家断网的情况。
分离后数据也更好管理,因为我所有的数据都集中在nas,只要nas不出问题,其他的几乎炸了也没影响。相对于常规每个设备单独一个硬盘存储,集中存储空间利用率高。而且选择设备就很简单了,我软路由和运算服务器买个洋垃圾都行,炸了就炸了,只要nas稳定就行,其他的炸了都可以直接挂载硬盘后恢复。
还有一点,分离后设备升级更简单了,例如我觉得之前的nas性能不够,我只要单独升级nas就行,又或者觉得运算部分性能不够,我可以直接再加一台运算服务器或者直接升级它也可以,整体横向扩展更简单。并且设备升级过程中其他服务仍然可以继续运行,不会离线。
当然,你可以说这是瞎折腾,徒增功耗。那你都要这么认为了,我觉得你是对的,说的很有道理,建议直接退出本文就行,我也不想过多争论。
三、分离后缺点
刚刚说了一堆好处,唯独没说缺点。不过这个缺点自然显而易见,要多两三个设备,不管是整体功耗又或者设备成本,都是一笔额外支出。
但我认为多设备的成本并不会高太多,首先,哪怕全部放一个设备上,那个设备性能也要足够强,价格也不会低。但是我分离后,每个设备性能就可以不用那么高,总体成本虽然会比单个设备高,但是不会高到无法接受的地步。而且刚刚也说了,这里面最重要的是存储,只要存储设备质量过关,其他的运算/网络部分全是洋垃圾也没有影响,炸了数据还在,直接恢复就完事了,成本自然可以大幅度降低。
至于功耗,增加的那些也能接受,又不是每个设备都是大火炉。每个月多掏十几块的电费都可以接受。网络和存储部分搞个低性能低功耗的,运算部分搞个高性能的,整体成本以及电费依然可接受。唯一麻烦的一点是,分离后三个设备,不管是维护或者部署都需要足够的基础,也不如all in one省心。
四、虽说如此
虽说如此,但不管是all in one还是分离部署也罢,终究不适合所有人,例如有人全部服务加一起,一个n100就可以搞定了,也不追求极端的稳定性。那也没必要做分离不是,纯让自己多买几个设备也没必要。