构建安全可靠的云计算基础架构

作者:顾炯 暂无评论

以前,我们的系统都是烟囱式的,一个系统就是一个完整麻雀,虽然很小,但是五脏俱全:有独立的网络、安全、存储设备、服务器等,相互之间基本没有什么关联,很少出现集体故障。但是大部分设备的利用率很低,建设周期也很长。于是按照IT资源“集中建设,资源共享,按需分配的原则”,建设了共享资源、统一云计算资源池(即IaaS,基础设施即服务)。“云”理念的出现导致了IT生态的巨大变革,资源池是实现生态变革的基础架构提供者:可根据用户的需求,快速提供各种规格的计算、网络、存储等基础资源,可以弹性伸缩能力;可以“不停机”维护…..资源池的特点极大满足了“云”的快速部署、推广的需要。


图1

     云计算资源池本质是通过“共享”来实现提高资源利用率。为了达到这个目的,在原有传统的物理设备上引入了虚拟化,通过软件将物理设备进行重新分配和复用。用户使用资源的方式发生了改变,加之虚拟化所带来的一些新特性,使得很多用户对资源池可靠性期望过高,甚至不少业务维护人员认为系统迁移到了资源池内,就可以“免维护”。和大部分人的认识恰恰相反,云计算资源池由于引入了虚拟化和共享,加之使用大量廉价的X86设备构建基础资源,硬件故障势必会常态化,仅从这一点上推断,云计算资源池就不是保险箱。怎样提供一个安全可靠的云计算基础架构,是云计算“化云为雨”真正能落地的基础,是云计算生态变革创新的重要契机。


云计算资源池存在的安全问题

     资源池的安全可靠不仅仅是传统意义上网络的安全,包含的内容很多,是一个广义的安全概念,包括了计算、网络、存储和数据的安全,如图2:

图2

 计算不可用是云计算资源池中最常见的故障。物理服务器的硬件故障或驱动、应用软件的BUG,都会导致虚拟机故障甚至物理机的故障,虽然大部分情况都可以利用集群HA或人工介入的虚拟机“冷迁移”快速恢复,但是也有些故障迁移手段也爱莫能助,比如集群性的硬件故障,用户操作系统重启失败等。特别是被大家津津乐道的虚拟机“迁移”功能,并不是百试百灵的神奇法宝,在实际运营中发现,不少物理主机的故障并不会触发HA,将虚拟机从故障的物理机迁走;也发现热迁移的也会失败。而且除了物理服务器故障外,网络故障和存储故障都也会导致计算不可用,特别是存储故障会导致的计算不可用往往不会触发主机的HA,导致出现应用中断的严重故障。

 资源池内的网络往往是采用虚拟化堆叠技术,多台网络设备虚拟化成为一台,多条链路捆绑聚合成为一条链路,增加了网络的安全性和提高了带宽。所以传统网络设备出现问题导致资源池出现故障的案例不多,但也有网络设备本身软件存在BUG被触发导致的网络故障。资源池内除了传统的南北向流量,还有东西向流量,这些流量是传统流量的几十倍、几百倍,同样是因为“共享”,一旦发生拥塞,影响就是“一片”,且虚拟网络引起的故障往往较难快速定位,对资源池上业务时间和空间影响都较大。

网络安全问题从来就不能被忽视,对于云计算资源池,因为承载的业务众多,所面临的安全问题更加严峻:内部业务系统的BUG、漏洞、木马等威胁;外部的DDOS攻击,可能会轻易的将网络带宽或防火墙连接数占满。一般情况下,虚拟机的安装、维护都是通过统一的跳板机进行的,会存在很严重的后门漏洞,病毒、木马、攻击都可以通过后门进入。

存储设备本身是一个单点设备,也是整个资源池唯一的单点物理设备。存储和存储网络的故障概率虽然很小,但是一旦发生故障,破坏性是巨大的。虚拟机的系统盘、数据盘都依赖共享存储的提供,一旦存储系统故障,所有挂载在故障存储下的虚拟机都会故障,影响面极大。

 数据丢失或数据误删是系统的重大故障。传统的业务系统中,都有一个“数据备份”的工作,将数据定时备份到不同存储介质中。这项工作在虚拟环境上也一直在继续,但是备份的数据和运行的数据在都在同一个存储上,甚至在同一个LUN上,数据备份的安全性就打了折扣。


提高云计算安全的措施

      我们可以借助传统的思路解决虚拟化后带来的部分安全问题,比如日常对主机的安全扫描;通过引入虚拟堡垒机弥补后门漏洞;通过虚拟防火墙、虚拟的IPS/IDS和无代理的防病毒软件等手段提升虚拟网络安全等级;通过优化调整南北防火墙策略、部署数据清洗设备,将资源池公网地址纳入到中国电信云堤上进行分布式的防范,公网流入数据进行清洗,出口部署NETFLOW设备,能快速跟踪攻击源、目标IP地址后配置黑洞路由等。通过引入“叠加网络”方式的软件定义网络(SDN),将网络“划小”,提供每个租户独立的网络环境和软件定义的网络设备功能。让用户的网络都运行在“包厢”里,减小故障影响面。

     但是有些安全问题或故障在“共享”的虚拟化环境下破坏力会被放大,而这些问题是无法 真正被克服,比如说物理服务器和存储设备存在的问题,需要通过增加应用主机的数量、降低故障影响面和故障发生概率等方法进行防范。

      传统的建设模式中,一个服务器中往往就部署1种或几种应用,服务器存在的缺陷被触发的概率很小。但在资源池内一台服务机承载了十几个虚拟机,每台虚拟机又承载了不同应用,缺陷被触发的概率大大增加。同时为了提高机架利用率,资源池内往往部署集成化程度很高的刀片服务器,但刀片背板交换机的故障、机框故障,总是导致整框一起退出服务,影响的是整框十几台甚至几十台的物理服务器,受到波及的虚拟机会几百台上千台。服务器的故障总是不可避免的,缩小服务器故障导致的影响面是解决此类故障的方法之一,即一台服务器上在允许下尽量少运行虚拟机,服务器出现故障也就影响一小部分。经过实践,采用2路8核的定制化计算型独立服务器可以平衡服务器的各种优缺点,既可以向刀片服务器一样节约机架空间,也可以进一步节约投资和节能降耗。采用小颗粒度的计算型服务器贴合云计算资源池的需要。同时过应用也可以做一些改造,将应用的HA改造成为“负载均衡”的方式。原来1台主机工作,1台监控改为多台都同时服务。并将主机部署在不同的安故障域内,提高应用的安全性。

  另外,资源池内的存储往往是一个共享的中高端FC存储,并还有一张单独、昂贵的FC网络。由于FC存储价格很高,存储本身的可靠性也较高,存储设备都是单点设置。但是一旦存储网络或存储本身故障,给资源池带来的是灾难性的故障,影响的是几百甚至上千台虚拟机。我们通过X86服务器+廉价的SATA盘组成的分布式块存储(SRVSAN),采用分布式机头,没有单点故障;分布式IO多副本读写,保证数据安全性;强一致性保证数据准确性;存储自动管理,数据自动修复都确保了存储和数据的安全。软件定义的SRVSAN可以大幅度提高存储的性能、进行线性扩容和提供高可靠性,还可以用传统的以太网替代FC网络,降低了成本和维护门槛,减少故障点。

 

图3

   不管采用什么措施,服务器、存储、网络总还是会发生安全问题或者故障。建设一个异地双活的云计算资源池可以进一步提高资源池内应用的安全、可靠和连续性。如图3,利用核心交换机远距离虚拟化堆叠,形成跨域的大二层网络,形成统一双活资源池。由于远距离的不同物理节点的资源池采取完全独立电源系统、有相对独立的网络架构、网络出口、服务器和存储,这样,同时发生故障的概率几乎不可能,云计算资源池变得更安全。

推荐业务系统采取双活部署,通过将应用部署在2个独立的物理环境中,可以大大降低资源池故障带来的对业务的影响,这也是我们认为能真正提高系统高可用性的根本性解决方案。充分利用资源池的资源优势、架构优势,将业务系统的架构变成真正的“云”系统,利用分布式、多节点、负载均衡来部署业务节点,使用全局域名来提供业务接口,从而规避资源池的部分失效对业务系统的整体影响。我们认为,在条件允许的情况下,双活部署可以取代大部分容灾部署的功能,相比传统的容灾还有出现故障不中断业务、成本低等特点。但是静态数据的容灾功能也不能完全取代,比如当数据被误删,双活就不可能恢复。这样看来,数据的备份,也是确保安全的重要环节。我们和中国电信北京研究院研发的蓝存,经过几年的实践,能实现数据的异地自动备份和灾难时系统的快速恢复。                              

   通过基于开源ceph的对象存储为基础的蓝存,可以提供资源池内每台或每个用户一个备份路径,用户可以按照原有的备份习惯定义自动或手动的备份任务,实现数据的容灾备份。系统还根据虚拟机特有的特性,利用VMWARE提供的VDP工具,对虚拟文件(VMDK)进行自动全量或增量备份。目前可以支持8000台虚拟机的备份,IO性能超过300MB/s。蓝存还可以通过NFS接口封装,提供NAS服务,用于日志、话单和视频存储等。

      虚拟机是由CPU+内存+虚机文件组成的。把资源池内的虚机文件都备份在另外节点的蓝存中。并根据原有系统的虚拟机配置,在异节点利用蓝存的NAS接口和备份的虚拟机文件配置同样的虚拟机。但这些虚拟机日常是不开机的,并不消耗资源,在灾难发生的时候能快速开启虚拟机,提供服务。通过蓝存提供的容灾方案是低成本的,避免了以前容灾方案中所有设备都必须冗余的高成本。

       双活和容灾全方面保障了资源池安全稳定的运行,大大减小了在单节点下虚拟化带来的不可靠性,保证了重要业务连续性运行。 

=====================================

   顾炯,自媒体“顾炯的云世界”作者,任职于中国电信浙江公司。中国电信云计算实验室、SDx创新实验室专家委员。牵头的多个项目获得过浙江省、中国通信学会、中国电信集团公司科学技术进步奖一、二等奖。