一、写在前面
- 本教程最重要还是在建设理念与思路,部分步骤中,因网上可轻松查到的资料,故会省略不详谈。
- 实际搭建过程中,几乎每个步骤均有多重选择,笔者会适当的描述这些选择项。
- 本文着重讲解利用家用组装机+pfsense软路由的方式搭建集群。
二、为什么要搭建个人虚拟化集群?
做为一个开发,你是不是有以下几个痛点:
- MQ,mysql,redis等开发用软件越装越多,已经感觉到计算机明显变卡
- 开发环境软件本身以及其下载的文件诸如maven缓存等,占用大量磁盘空间,硬盘严重告急
- 开发软件所需配置也越来越多,已经记不清自己曾经配置过什么,甚至出现配置互相覆盖影响的问题
- 为了做技术架构探索选型,不得不在本地先安装许多软件,设置很多配置,完结后还得删掉以免影响系统运行速度,浪费诸多时间。
- 安装了vmware workstation,就为了能跑几个linux系统做实验,导致计算机内存告急,运行缓慢。
- 出差时,带性能好的笔记本太重,带轻薄的本子又太卡。更麻烦的是,你得在你每台计算机上重复配置一次,有时候还会遗漏配置项导致出错。
笔者也曾遇到过此类问题,并困扰了笔者很久。为了解决这个问题,我们可以提升单机的性能,但提升单机性能只能解决部分问题,并不能根本性的解决问题,诸如解决不了环境变量污染的问题。亦或者,我们也可以在云平台购买按量计费的云主机或者saas服务,此方法好处是能快速的得到你想要的机器,而且可供给的数量几乎是不限的,但缺点也很明显,如果你需要长期运行或者所需数量较多,该方法成本会变得相当高昂。
笔者最终解决该问题的方案是,搭建自己的虚拟化集群。
整体的网络拓扑结构很简单,如下图:
三、优势与劣势
- 优势:
- 虚拟化集群可以7x24小时不间断的提供你所需的环境。
- 多重选择,非常自由的配置,从网络到主机,从硬件到软件,基本上你可自主决定。
- 性价比较高,首次成本几千即可,后续成本基本是电费,根据你设备多少决定,低至大概30+元/月。
- 劣势:
- 需要暴露在公网环境下,必然会遭受各种网络攻击。
- 可靠性问题,因为只是个人搭建,在控制成本的前提下,可靠性稍弱,但因为个人使用,影响面不大。
- 需要你懂得一些的基础运维和网络的知识,诸如设备选型,设备安装,防火墙配置,网络环境架设,虚拟化软件的使用等一系列技能。
- 如果不想托管在专业机房或者单独隔离的房间,谨慎考虑购买企业级服务器,噪音跟飞机起飞一样,芜湖。。。没听过的朋友建议上B站感受一下。
- 与生产服务器集群的区别
- 本方案,基本没有考虑高可用,所以可靠性相比真正的生产集群会偏低。
- 投入费用较低,1台全新的Dell服务器的价格,少说也要几万元。而家用PC一台价格在6-7千之间的,性能就相当不错了。
- 家用组装机没有带外管理功能,发生故障时,可能需要到现场处理。
- 真正的服务器噪音比较大,而家用组装机噪音比较小。
- 生产服务器是需要放置到无尘且带有空调的机房的。
总之,可以这么理解,这个方案其实就是拿普通的机器当服务器使用。价格虽然低了,但维护成本高了,可靠性低了,只是因为个人使用,即使出现问题,影响的也只是自己而已,所以可靠性低一些可接受,个人搭建规模不会太大,维护成本总体可控。
四、关键性步骤
- 准备公网IP与域名
- 购买服务器、路由器、交换机等设备
- 安装并配置路由器、交换机等设备
- 安装ESXi与vCenter
- 在开始愉快的玩耍之前的准备工作
五、准备公网IP与域名
5.1 局域网还是广域网?
首先需要明确的是,你要搭建的虚拟化集群,是只想在局域网内使用,还是可以在广域网上连接?
先说说只是在局域网内使用,建设难度会低一些,但同时,你也丧失了诸多特性。
如你把整个集群建设在公司局域网网内,离开了公司,你就连不上集群了,或者需要依赖于第三方的设备或者软件才能连的上。当然,很多公司特别是需要做二次验证的公司,未必会同意你自行接入私人的设备。亦或者,你把集群建设在家里,情况也类似,你在公司就连不上了。
总之,笔者不推荐只搭建在局域网内,本文也只针对于可在广域网上连接的方案进行介绍。
5.2 注册域名
注册域名非常的简单,网上的教程也很多,可以在阿里云上注册一个域名并做好备案工作,本文不再赘述。
5.3 准备公网IP地址
你需要能在广域网上连接到集群,那么你必定会需要一个公网的IP地址。
5.3.1 如何判断你是否拥有公网IP地址呢?
- 通常在专业的机房,或者你能拉企业专线,那么你大概率会有固定的公网IP地址。
- 如果你是在家中搭建集群,利用的是家庭宽带,那么你大概率只能有动态的公网IP地址(可能需向宽带运营商申请)。
5.3.2 如何申请公网IP?
- 如果你搭建在专业的机房,那么请联系机房管理员为你提供固定公网IP。
- 如果你是家庭宽带,那么你需要致电你的宽带运营商,申请获得一个公网IP,这通常需要几天时间,会有专人联系你,后续可能会有专业人员到你家中帮你配置光猫。笔者建议是,鉴于运营商提供的路由器相当一般,功能很少,而且安全性也不是很好,容易受到攻击。笔者建议自购路由器,运营商专业人员到家中时,你跟专业人员说会用自己的路由器拨号上网,专业服务人员会帮你把光猫配置好,你用自己的路由器拨号可上网即可。
如果能有固定的公网IP,是最好的选择。因为你向运营商申请的公网IP,它是动态的,更换的频率各地可能不一致,也许是一周,或者是一个月。这也意味着你需要定期更新域名所绑定的IP地址。因为偶尔会出现更新不及时的情况,特别跨省连接的时候,可能会有一小段时间(可能是几秒钟到几分钟),会出现连接不上的情况。笔者测试过,最多发现会有15分钟的中断时间。
5.3.3 如何更新域名绑定IP地址?
如果你已经有固定公网IP地址,你只需要在域名解析处一次性配置好你的IP地址即可,你可以跳过本小节。
举个例子,比如你的域名是托管在阿里云上的,你可以使用树莓派或者ESXi上的一台linux虚拟机,定时执行一个脚本,获取公网IP地址,而后利用阿里云SDK更新域名绑定的IP地址。
具体步骤如下:
所需软件安装与环境配置
大致步骤如下:
安装 python3,virtualenv,创建隔离的python运行环境1
2
3
4
5
6
7
8
9yum install -y python3
pip3 install virtualenv
mkdir ~/ddns
cd ~/ddns
~/.local/bin/virtualenv venv
source venv/bin/activate
pip3 install requests
pip3 install aliyun-python-sdk-alidns==2.6.29编写Python脚本
请参考 https://help.aliyun.com/document_detail/29777.html
主要思路是获取域名当前的解析记录,和实时获取到的公网IP地址做对比,如果不一致,则更新域名的解析记录。
脚本如下,”xxx”处是需要你自行修改的部分:
1 | #!/usr/bin/env python |
- 编写sh脚本
1 | cd ~/ddns |
- 添加定时任务
定时任务配置为每5分钟运行一次1
2crontab -e
*/5 * * * * sh ~/ddns/alidns.sh
六、购买设备
6.1 概要
搭建之初,你会需要购买一些的设备,大致有以下三大类:
- 网络设备,如路由器,交换机,网线
- 服务器机柜
- 计算机设备,如服务器,树莓派,NAS
6.2 网络设备
6.2.1 路由器
这里所说的路由器可不是家用的带wifi功能的路由器,而是企业级的路由器或者工控机。某宝或者某东上面都有售卖TPLINK,华为,H3C等企业级路由器。笔者的建议是,可以购买一台工控机,自行安装pfsense软路由系统,它既有路由的功能,也有防火墙的功能,安全上能有一定的保障。
要点:
- 不要购买普通的家用路由器,功能较少且难以保障稳定性与安全性。应该买带有线千兆网口的企业级路由器,如果买带耳朵能固定在机架上面的那就更好了
- 可以考虑买工控机,诸如倍控。自己安装软路由系统,诸如pfsense,iKuai,RouteOS等等。
- 性能上,根据自己需要的带机量而定,一般价格在大几百元到1千多的区间的即可。
6.2.2 交换机
要点:
- 考虑到未来的拓展性,建议你买16口或者24口全千兆的二层交换机。
- 如果交换机可以上机架,那就更完美了。因为不论是16还是24口的交换机,必定会有很多条网线,不上机架的话,网线容易乱糟糟一团,不利于打理。
- 除非你的确有需要,否则不一定要买网管型的交换机。
6.3 服务器机柜
如果你打算托管在机房,请跳过本小节。
不管搭建在家里,或是在公司,总会需要有个地方放置所有的设备,这时会需要一个机柜。某宝或者某东上面有很多机柜选择,而且基本都可送货到楼下。如果你不买机柜,网络、电源线必然会杂乱无章,很不好打理,各类设备所占的面积也大,所以还是购买一个机柜为佳。
6.4 计算机设备
6.4.1 服务器的选择与购买
服务器的选择非常的多样,你可以购买家用组装机当服务器使用,也可以购买真正的服务器。从大类来说,可以有以下三种方案可选择
选择家用组装机
好处:价格低廉,简单粗暴,噪音小,适合家庭环境
坏处:长时间运行可能会有可靠性的问题,没有故障指示灯等相关的设备,难以巡检,而且因为没有带外管理,出现故障无法远程处理。体积较大,浪费机柜空间选择塔式服务器
好处:一定的拓展性,各方面都比较中庸
坏处:性价比比机架式服务器低,体积较大,浪费机柜空间。噪音虽然没用机架式那么大,但也不小。选择机架式服务器
好处:高性能,拓展性好,体积小,可以托管在IDC机房
坏处:噪音大,不适合家庭环境
注意点:
在你选择了一种方案后,后续最好延续使用该方案。特别的,如果你选择了家用组装机,CPU一开始买的是AMD,那么后续最好也都统一买AMD的CPU,否则会导致DRS、vSan都做不了。
关于真正的服务器,你可以买全新的,或者某宝上面也有很多二手的服务器。不过二手服务器虽然价格低,但可能会有坑,就看你敢不敢买了。
这里主要介绍下利用家用的组装机做虚拟化。网络上有很多教你购买和组装的教程,这里只说一些重点注意事项。
如何选择CPU?
家用组装机的cpu,一般无非就是 Intel 和 AMD 两种,从性价比角度来看,目前的zen2、zen3架构如日中天,AMD性价比无疑比Intel更高。如何选择主板?
主板尽量不要购买小板,可以选择ATX,或者E-ATX的板型,因为板型小的主板,也意味着所提供的接口少,不利于将来扩展。另外,有个特别需要注意的点是,主板上的网卡芯片,一般有”Intel”和”Realtek瑞昱”两种,如果你买的是AMD的CPU,那么对应的一般价格的主板,大概率是Realtek芯片的板载网卡,而Realtek芯片的网卡,ESXi是识别不到的,这样一来你会需要额外购买Intel芯片的网卡。如何选择内存?
根据你买的CPU和主板类型不同,购买合适的内存即可。如何选择硬盘?
推荐购买 nvme协议 m.2接口 的ssd硬盘,因为速度真的很快。一般来说,计算机的瓶颈点会卡在IO上面。如果磁盘空间不够,可配合购买HDD硬盘,不需要联机的数据可以放NAS。如何选择网卡?
笔者的建议是无论你板载的网卡的芯片是Intel还是Realtek,你最好都额外购买一张pcie的有两个网口以上的Intel芯片的网卡。为什么要这么做呢?首先,利于远程配置(笔者有一次配置虚机网络的时,需要网卡先断线再连接到正确的虚拟网络,但在断开那张网卡后,远程就再也连不上了),其次两个网卡利于增强可靠性,最后两个网卡才能让管理的流量和普通流量分开,彼此不会互相影响(迁移主机的时候,会有大量的管理流量产生,而如果你只有一张网卡,可能会影响到业务的正常通讯)。如何选择显卡?
如果你的cpu是不带核显的,那么会需要你额外购买一张显卡,建议买一张最低配的显卡即可,我们只是需要能显示而已。当然如果你有用GPU进行计算的需求,那么可根据实际需求选择显卡。如何选择散热器?
一般来说,风冷就足够使用了。如果cpu自带的风扇太弱,像Intel盒装cpu自带的小风扇就比较鸡肋,你可以自行购买风扇,价位在百元左右即可。至于是否上水冷,就看各位自己评估了,笔者的实践经验是如果搭载的不是发热量很大的CPU,又没有大量的计算需求,就不需要上水冷了。另外,请注意购买的风扇的接口是否兼容你买的cpu型号。如何选择机箱?
尽量买可以装三个HDD硬盘以上的机箱。尽量不要买小型的机箱,否则后续拓展麻烦且小机箱散热效果也不好。另外,如果你有服务器机柜的话,可以考虑买机架式的机箱,3U或者4U的,肯定比买普通机箱省空间,某宝上面很多。如何选择电源?
选择合适的电源即可,但要注意留一定冗余量,便于后续添加组件。选择电源未必非要追求金牌不可,功率合适,能稳定输出就好。
1 | 配置示例: |
该配置在21年6月价格总共在6k至7k左右。
6.4.2 树莓派
树莓派是一种基于linux的单片机电脑,功耗较小,适合做一些简单的任务,价格在5百元左右。如果你的IP是动态公网IP,那么你可以考虑买一台树莓派,用于执行更新域名绑定IP的任务。当然你也可以不买树莓派,在虚拟机上创建一台linux主机来运行该任务,但有个问题是,假如承载该linux虚机的计算机发生宕机等的故障,很可能会导致更新任务无法执行,进而导致你连接失败。所以,从可靠性可用性的角度上看,把此任务单独放到树莓派上是有利于增强可靠性和可用性的。
6.4.3 NAS
如果你有大量文件需要存储,那么买一台NAS无疑会更加保险。如果买的是支持万兆网卡的nas,后续可以升级做存算分离。
6.5 关于搭建的成本
搭建的成本主要是第一次的购买设备的成本和平时的维护成本。
第一次的购买设备的成本 = 路由器 + 交换机 + 服务器机柜 + 服务器x台数 + 树莓派 + NAS(含硬盘)
集群搭建后,平时的成本主要是电费和维护费。举个例子,如果你按本文的家用配置搭建服务器,在不做大量密集计算的时候,功率大概在90w左右。机器24小时开机,一度电按照5毛来算,一天的一台服务器的电费成本大概是1块出头。维护费指的是,诸如硬件损坏,比如常见的硬盘长时间运行后损坏需更换的成本。
七、网络环境配置
如果你买的是工控机想安装pfsense软路由系统,下载pfsense安装包时,记得Architecture选”AMD64 (64-bit)”,Installer选”USB Memstick Installer”,Console选”VGA”。使用pfsense的时候,我遇到过一个情况,当开机启动时VGA接口没有接入显示器,路由器工作不正常,这时候你只需要在启动路由器的时候接入显示器,等启动完成后再拔掉即可,或者你直接在某宝上面买个支持集显的VGA的伪装器。
除了pfsense之外,你也可以选择安装iKuai,RouterOS,OpenWrt等。
主要的步骤是
- 配置wan口,家庭线路主要是配置拨号上网账号密码,企业专线可能是配置一个固定的ip即可
- 配置端口转发策略
- 配置防火墙策略
八、安装ESXi与vCenter
关于什么是 ESXi 与 vCenter ?
https://docs.vmware.com/cn/VMware-vSphere/index.html
你需要在新装的电脑上安装 ESXi,安装后,将机器连接到交换机上。注意,你需要另一台pc机或者mac同时接到交换机上,这样你才能访问ESXi的web页面。
具体怎么安装ESXi,网上已经有很多教程,我不再赘述。
是否一定要安装vCenter?
答案是不一定要安装的,如果你有2台以上,或者单台机器但内存充足,但笔者建议安装。如果你只是简单使用,不需要经常创建虚机,那么不装vCenter也无妨。
vCenter能提供的是更多的配置项,最重要的是能把虚机转成模板,这样你每次新建机器就不用重新做各种配置,而是从模板直接生成虚机,大大减少交付一台虚机的时间。是否需要组DRS或者vSan?
都不一定。组vSan的前提是3台以上的机器,且每台机器上都至少有1个SSD和3个HDD硬盘。到目前为止,我们所有的机器都是没有组raid的,硬盘损坏的时候会有丢失数据的风险,如果你对可靠性可用性和数据的安全性有一定的要求,那么你可以考虑组vSan集群,或者你可以利用nas+万兆网络做存算分离。
九、在开始愉快的玩耍之前
前面的步骤做完后,我们已经基本上做完了整个环境的搭建,不过别着急,以下几点值得你注意一下
关于磁盘制备的选择
在新建虚拟机的自定义硬件步骤,会有磁盘制备方式的选择,建议选择”精简制备”,默认的厚置备,会导致预先把划走你设置大小的磁盘空间。制作主机模板
你可以新创建虚拟机,安装linux系统,对系统进行安全加固等其他的初始化操作后,关机,并将主机转成模板。这样以后你新建虚拟机,就可以从模板部署了。关于管理网络与普通网络
如果你有两个甚至三个以上的网口,做好kernel端口与普通network端口的隔离与高可用的配置设计IP地址的规划方案
正常我们家用的时候,tplink路由器默认的网段规划是192.168.1.0/24,不过这时候我们会面临一个问题,当你虚机越来越多的时候,IP地址可能会不够用。所以,你应该提前规划好IP地址,掩码不再使用24,你可以使用10.0.0.0/20,这样一个网段内第一个可用IP是10.0.0.1,最后一个可用IP是10.0.15.254,一共有4094个可用IP了。你可以访问 https://www.w3cschool.cn/tools/index?name=ipcalc 来辅助计算规划IP地址。谨慎使用端口转发
你在内部搭建的各类系统,不要随意通过端口转发对外暴露,尤其是不要对0.0.0.0开放,系统难免有漏洞,容易被攻击,特别是在我们并没有专业安全防护解决方案的情况下。如果一定要对外暴露,可以考虑限制在一定的IP范围内。
十、写在最后
到目前为止,你已经完成搭建工作了,接下来怎么用就看你的想象力了。以一个开发的视角来看,你可以搭建各类服务来辅助你的开发,比如搭建gitlab存储你的代码,搭建jenkins做CI/CD,部署mysql数据库,搭建nexus服务器加速jar包下载,搭建prometheus监控虚机状态。
HAVE FUN BE HAPPY!!!