在前一篇文章中我们讨论了搭建家庭数据中心的硬件选择,这一篇文章我们主要讨论下软件环境的选择。
Contents
部署方式选择
目前部署应用我们有2种主流的方式:LNMP(LAMP)或者docker。
1、用LNMP(LAMP)
就是我们通常说的源码部署,适合在裸服务器上直接部署,这种方式对服务器而言不会有性能损失,应用相互之间调用互访也很方便,缺点是前期部署准备工作复杂,需要各种编译,并且后期迁移起来很不方便。
2、docker
这种方式在部署灵活性、可迁移性方面大大增加,并且可以和k8s之类的容器集群管理系统联合使用,实现容器集群的自动化部署、自动扩缩容、维护等功能,缺点是对性能有少量损失。
在家庭数据中心的应用部署方式上,明显docker方式优势完爆LN(A)MP方式,所以我们在后续部署家庭数据中心应用的时候就以docker方式为主(也有例外,我们以后会提到,比如负载均衡的部署,这个就不适合用docker方式)。
虚拟技术
至于虚拟技术的选择,我将采用虚拟机和LXC配合的方式。LXC是正常情况下最推荐的方式,毕竟既实现了应用隔离,又不像虚拟机那样有模拟底层硬件带来的性能消耗,正好满足我的需求(从另一方面来说,LXC方式的缺点就是隔离得并不彻底,不管是应用层面还是硬件资源层面。对真正的企业生产环境,省那点硬件消耗其实意义并不大,毕竟硬件现在便宜得要死,所以也只能说是适合家庭数据中心的需求),而虚拟机(Linux)是用来提供给一些需要完全资源隔离的特殊应用使用(这个我们以后会说到),并且我也需要一个24小时在线的win系统来做远程运维设备(win的RDP的确是所有远程访问中体验最好的,VNC真的一言难尽。。。当然mac-mini其实也可以,用Jump Desktop配合mac-mini的远程体验也不错,win是考虑没有带终端在身边的时候,随便网吧找一个机器用远程桌面也能连),所以最终我选择了PVE来做虚拟平台。
虚拟平台为啥不选Esxi?其一这是收费软件,我搭建家庭数据中心一个原则就是免费,这个肯定不行;其二,Esxi没有可玩性,PVE本身就是一个debian 11,可以安装各种软件,可玩性非常高;其三,PVE直接支持LXC;其四,PVE免费提供集群,备份功能。。。
实际环境展示
给大家看看我现在的实际环境:
1、主力容器运行环境,mac-mini:
其中停止状态的elasticsearch就是用于在nextcloud上进行全文检索的,由于太耗内存被我禁用,准备以后迁移到备用平台上去。
2、备用容器运行环境:
3、PVE虚拟机:
bt-only是我专门用来跑一个宝塔面板的LXC,这个LXC承载了家庭数据中心3个入口的反向代理工作,负责将3个WAN口进来的请求转发到后台WAF。后台WAF采用了长亭雷池的社区版(免费又好用),负责将请求过滤以后转发到后台负载均衡设备。负载均衡采用zevenet社区版(免费又好用),负责将请求转发到合适的docker上,以上就是家庭数据中心内部请求转发的流程。