私有云集群的技术方案

Downloads Downloads Downloads

前言

虚拟化技术是对多服务器管理的核心技术,可以说是必不可少的一项关键点。任何数据中心但凡对超过一台物理机进行管理如果没有虚拟化技术支持那么该数据中心便只能提供基本的软件服务,任何系统服务的编辑与修改势必会影响其他系统服务的运行导致系统无法实现大规模修改;即便是上了K8S架构实现集群也会受限制于Linux本身,使得很多基于Windows应用无法使用,典型情况如AD域管理。

虚拟化技术有两种做法一种是应用层的虚拟化技术,另一种是系统层的虚拟化技术。很明显桌面端虚拟化大多数是应用层虚拟化,但是服务端的虚拟化技术大概率会上系统层的,这是因为对底层应急的调度能力会远远高于应用层也就带来了很低的资源占用和更加强大的功能。

所以自建机房或者数据中心只要稍微专业一点的网管都会为服务器搭建一套虚拟化方案,后续无论是何种情况下的应用都可以依靠虚拟机实现,集群内部实现资源的部分共享(比如说分布式存储),虚拟机的跨主机迁移等等。无论是后续的拓展性还是功能性都可以得到保障。

虚拟化技术其实最终表现上来讲,可以说我们将一个云平台给本地化了,利用自己的服务器硬件实现了网络管理、存储管理、弹性拓容等云平台常规功能,想想还是非常美好的。

技术选型

技术选型上其实是麻烦的一个事,从结果上来说最终的选型是虚拟化全球老大VMWare的产品,下面就说说竞品和对比。

首先我选型的范围无法就是就是商用和开源两种,对应的技术体系还是比较多的,但是涉及到虚拟化的体系一般都是非常庞大的项目,那么可维护性与稳定性就是非常重要的两个点。综合下来最终入围的有三个技术,也可以说是各个领域的代表:

  • OpenStack:开源技术的代表,实现云计算的基本功能,完全免费。
  • VMWare Sphere:商用技术的代码,完整的云计算功能,功能强大,价格不菲。
  • Kubernetes:新的云计算思路,直接面向应用,轻量级,免费。

首先OpenStack其实是我一开始的首选技术体系,但是在实际使用了之后发现这个东西存在很多缺陷,简单的总结有三个点:1、极其复杂的部署于运维;2、云计算核心功能缺失;3、维护体系复杂,维护成本巨大。这一块可以去看看文档你就知道为什么这么说了,主要原因在于开源项目贡献代码过于臃肿涉及到三方开源项目数量庞大想要熟悉他的完整体系是非常困难的,任何一个不超过5年的专业运维说他可以搞定OpenStack基本上都是在吹B,这样一来直接问的在于这个东西的使用成本与风险都被放大了,在有相当的支撑面前简直不敢用他。

其次 Kubernetes也就是K8S,这是我个人最喜欢的集群技术,配合RancherOS简直不要太好用。整套体系的学习成本与维护成本大体都在可控范围之内,相关的组件非常成熟可以说是面前的首选技术体系。但是Docker本身的设计局限也导致这个东西与我们的运维体系不是非常匹配,原因在于我们现在不是说要对应用进行部署而是需要对硬件进行虚拟化以实现各个体系的支撑,这样一来K8S只能被排除了。但是虚拟化集群搭建完毕之后我可以使用虚拟机做K8S集群。

VMWare Sphere的选型可以说是没有什么悬念的,一方面强大的组件完善了云平台的几乎所有功能;同时整体符合开箱既用的设计思路使其部署难度极低;完整的服务生态在运维上面也没有什么学习成本,商用软件稳定性和可用性简直可以说是世界第一。对我们这种半吊子运维是完美的方案,只有一个问题,一个License费用的都非常贵!!

组件架构

首先vSphere体系,简单架构就是这个样子:

  • ESXi:这个是物理主机的系统,能够将该物理机资源进行虚拟化,可以部署直接使用也可以接入集群进行管理,总之最小单元就是这个系统,他是实现后续所有功能的基础。
  • vCenter:这个是一套系统级服务,能够将多个ESXi主机连接在一起形成资源池然后统一管理,也是集群化的核心组件。
  • Client:这个就非常好理解了,就是对vCenter服务的管理客户端,硬要说的化有四种,第一是H5客户端;第二是Web Flash客户端;第三是桌面客户端程序;第四是VMWare WorkStation这个玩意可以连接到vChenter进行一定程度的简单管理。

这三个组件可以说是核心组件了,其他你在官网或者别的地方看到的组件都是这三大组件内部的一些功能,你可以选择在这些组件部署完毕之后自行开启,只不过不同程度的租价功能与资源限制都对应不同的收费而已。

关于vShpere体系的详细介绍可以去官网看看,这里就没有必要废话了。

部署方案

服务器选型

服务器选型上,依旧没有钱去买新服务器,而是买的别人数据中心用剩下来的二手服务器。硬件部分这次选型主要想的是大内存与多核心,存储没有太大要求。因为已经想好了一定要上虚拟化技术所以没有最求单机,而是选择了传说中的四子星服务器。一个2U机箱内部有四块主板,等于说一次性其实买了四台服务器。硬盘上单独买了一套阵列卡主要是为了支持Raid5已实现冗余盘。

阵列设计

这套选型看似完美但是有一个问题,四台服务器最终算下来没台的盘位只有6个,如果按照vSphere的分布式存储标准来看,系统会用掉一个盘,其他盘可以走Raid出一个盘进行存储池搭建,但是便会导致一个抉择,如果系统盘走单盘Raid1确实是很冒险,如果走双盘Raid1,其他盘走Raid5就有三分之一的空间浪费,就很亏。毕竟用的是SAS盘还是有点心疼的。

我最终的存储方案是退一步的方案,全盘Raid 5,每台服务器有6个盘使用一个做为冗余,其他进行数据存储,也不分区了直接全部喂给ESXi,这样一来虽然导致无法启用vSpere vSan分布式存储技术但是至少无论是系统还是数据都有Raid保护心里面要踏实一点,以后有钱了我们做服务器设计的时候可以尽量走安全思路不需要想我这样节约成本。

组网设计

组网上比较简单,或者说比较单一,目前公司人员短时间之内不会超过40人,终端设备不会超过80个,我们按照100个虚拟机用量来看,目前的常规企业级路由完全没有问题,甚至都不需要二级网关。所以在组网上通过二级交换机同时并接四台服务器,上层接到路由便可以搞定问题,后续的搭建的如K8S都会基于CoreDNS所以不会有什么网络压力。目前服务器是没钱上光模块了,千兆口将就用用,由于交换机背部带宽还是比较足所以差不多了。

集群功能设计

vSphere非常的贵,功能选择上不能说什么都要,在我设计下其实是不需要虚拟机能够跨主机迁移的(毕竟存储都不通),其实只需要通过vCenter对每一台主机进行集中化管理,所以说没有任何必要上vSan(分布式存储)DRS(动态资源调配)EVC(虚拟机不关机迁移)等等功能,这些功能其实都是非常强大的,但是一般情况下小企业是不可能用得上的,好吧其实也用的上多么帅气的功能,但是用的频率绝对不会高就是了。

还有一个非常现实的问题使得我对分布式存储不算怎么报好感,原因在于我搭建私有云计算的初衷是将AD域控和DevOps体系全部部署起来,最终结果上会有大量的数据库存储,我虽然不是完全知道vSan的实现原理,但是面对大量的4k小文件估计无论什么分布式存储技术都会存在严重的性能问题,在K8S体系下,即便是Ceph在我的测试下性能方面都差点意思。

总结

私有云搭建起因很简单,那就是公有云的费用太高了,在公司老服务器上我用虚拟机搭建了K8S集群并且引入了完整的DevOps技术组件与完整发布流程。无聊的是我们无法对老服务器进行升级了,比较平台太老了,也没有横向拓容的方案,导致集群搭建好了之后服务器性能上也吃不消了,但是有这一套技术积累之后我们得到了华为云的三年补助。这个补助包含每年30万的云资源,使得整套流程可以在线上运行,缺点就是三年之后怎么办?每年扣出30万的成本来干这个事情?

所以才有搭建私有云的机会,在私有云搭建完成之后我将通过一些功能或者其他手段实现私有云与华为云集群的资源互通,这样一来开发、测试在私有云完成,生产环境由公有云搞定,可以极大降低云服务费用。不低于10倍的划算吧,整套私有云的硬件成本可以说是相当的低大概不到2万元,算上VMWare的授权费用也是远远比华为云便宜很多的。

留下回复