基于多租户的高可用云基础设施管理系统
技术领域
本发明涉及云计算基础设施管理领域,具体地,涉及基于多租户的高可用云基础设施管理系统。
背景技术
IaaS(Infrastructure as a Service),即基础设施即服务,是一种通过互联网提供数据中心、基础架构硬件和软件资源的服务。但是,目前国内在云基础设施管理方面存在资源服务模式落后,资源服务模式仍然采用基于虚拟机租赁的基础设施资源服务模式;对于异构的虚拟化技术平台统管能力不足,主要依托于以OpenStack为主的开源云计算平台做定制化开发;系统缺乏全面的监控能力以及系统在可用性和安全性等诸多问题。因此,提供一种在多租户场景下满足用户高可用、高安全性需求的云基础设施管理系统,已经成为亟待解决的问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于多租户的高可用云基础设施管理系统。
根据本发明提供的一种基于多租户的高可用云基础设施管理系统,包括:
租户与用户创建模块:租户以项目组为单位进行建立,项目组向管理员提出创建申请,管理员根据创建申请,通过控制台创建租户和用户,同时由后台程序自动创建租户网络环境;
云主机创建模块:用户通过控制台以自助服务方式创建云主机,在控制台查看云主机的信息,通过控制台提供的IP地址使用云主机;
云硬盘创建与挂载模块:用户在控制台以自助服务的方式创建云硬盘,将云硬盘挂载到云主机上,用户登录云主机后对云硬盘进行操作。
优选地,所述的基于多租户的高可用云基础设施管理系统,还包括租户变更模块:租户提交变更请求,在变更请求获得所需批准后,由管理员通过控制台完成租户成员或资源配额变更。
优选地,所述的基于多租户的高可用云基础设施管理系统,还包括:
云硬盘卸载与删除模块:用户通过控制台以自服务的方式卸载与删除云硬盘;
云主机删除模块:用户以自服务的方式完成删除前准备,卸载云主机上挂载的云硬盘,通过控制台完成云主机的删除。
优选地,所述后台程序自动创建租户网络环境采用通用网络配置,提供独立的租户网络和子网,租户内的云主机能够互相访问;
所述网络环境的物理网络部署采用双份冗余设计,通过服务器中网卡和交换机配置网口聚合,实现双活高可用网络。
优选地,所述云主机创建模块能够同时支持X86和Power架构,支持在多个数据中心中部署OpenStack,所述部署的OpenStack统一管理,以同一个入口提供控制台服务。
优选地,所述控制台结合使用OpenStack的组件管理、基于Zabbix的主机服务监控以及使用ELK集中式日志管理,从多个角度实现对监控和管理。
优选地,所述服务器中的系统盘使用RAID配置,非系统盘不做RAID配置或者使用RAID 0配置。
优选地,采用三活的控制器和网络节点高可用配置,所述OpenStack的部署采用Ceph 分布式存储。
优选地,所述不同租户之间二层网络隔离,三层网络由防火墙规则限制,外网通过VPN接入控制;
不同租户之间采用数据隔离,所述数据包括云主机、云硬盘、对象存储数据。
优选地,所述用户通过用户密码访问云主机,所述用户密码加密后存储在数据库中,用户登录时通过用户密码进行密码校验,用户登录后获得固定生命周期的令牌。
与现有技术相比,本发明具有如下的有益效果:
本发明满足用户对云基础设施管理系统的高可用、高安全性需求,保障物理环境的网络高可用和服务器存储高可用,保障OpenStack高可用,保障多租户场景下的网络安全性、数据安全性、用户访问安全性。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为租户与用户创建流程图;
图2为系统管理员创建租户子流程图;
图3为用户创建或用户加入租户子流程图;
图4为租户变更流程图;
图5为云主机创建流程图;
图6为云硬盘创建与挂载流程图;
图7为云硬盘卸载流程图;
图8为云主机删除流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于多租户的高可用云基础设施管理系统,包括:
租户与用户创建模块:租户以项目组为单位进行建立,项目组在提供必要租户信息、用户列表、资源需求并获得所需审批后,项目组向管理员提出创建申请,管理员根据创建申请,通过控制台创建租户和用户,同时由后台程序自动创建租户网络环境;
云主机创建模块:用户通过控制台以自助服务方式创建云主机,在控制台查看云主机的信息,通过控制台提供的IP地址使用云主机;用户在控制台中选择创建云主机,并选择云主机配置(虚拟机或容器、镜像、云主机配置)后提交,后台完成云主机创建。用户可以在控制台查看云主机的信息,并通过控制台提供的IP地址开始使用云主机。
云硬盘创建与挂载模块:用户在控制台以自助服务的方式创建云硬盘,将云硬盘挂载到云主机上,用户登录云主机后对云硬盘进行操作。用户在控制台中选择创建云硬盘并输入云硬盘配置(大小)后创建;创建后的云硬盘可以在控制台中查看,并由用户选择挂载到哪个云主机上。云硬盘挂载到云主机上之后,需要用户登录到云主机完成云硬盘的格式化等操作后使用。
具体地,所述的基于多租户的高可用云基础设施管理系统,还包括租户变更模块:租户提交变更请求,在变更请求获得所需批准后,由管理员通过控制台完成租户成员或资源配额变更。租户变更包括成员变更和资源需求变更。
具体地,所述的基于多租户的高可用云基础设施管理系统,还包括:
云硬盘卸载与删除模块:用户通过控制台以自服务的方式卸载与删除云硬盘;用户首选需要登录云主机完成操作系统层面硬盘卸载的准备工作,特别是数据备份;之后在控制台中将云硬盘从云主机上卸载。卸载后的云硬盘可以再次挂载到云主机上;对于不需要的云硬盘,用户可以选择删除。所述云硬盘卸载与删除模块支持数据备份功能。
云主机删除模块:用户以自服务的方式完成删除前准备,卸载云主机上挂载的云硬盘,通过控制台完成云主机的删除。
具体地,所述后台程序自动创建租户网络环境采用通用网络配置,提供独立的租户网络和子网,租户内的云主机能够互相访问;
所述网络环境的物理网络部署采用双份冗余设计,通过服务器中网卡和交换机配置网口聚合,实现双活高可用网络。
具体地,所述云主机创建模块能够同时支持X86和Power架构,即具有管理X86和Power两种服务器作为虚拟资源池的能力,支持在多个数据中心中部署OpenStack,所述部署的OpenStack统一管理,以同一个入口提供控制台服务。即用户可以在同一控制台中完成多个数据中心中云资源的申请、使用和删除操作。而对管理员而言,仅使用逻辑上同一套管理体系。
具体地,所述控制台结合使用OpenStack的组件管理、基于Zabbix的主机服务监控以及使用ELK集中式日志管理,从多个角度实现对监控和管理。管理员可以针对不同场景,选择使用不同工具。
具体地,所述服务器中的系统盘使用RAID配置,非系统盘不做RAID配置或者使用RAID 0配置。
具体地,采用三活的控制器和网络节点高可用配置,所述OpenStack的部署采用Ceph 分布式存储。
具体地,所述不同租户之间二层网络隔离,三层网络由防火墙规则限制,外网通过VPN接入控制;
不同租户之间采用数据隔离,所述数据包括云主机、云硬盘、对象存储数据。
具体地,所述用户通过用户密码访问云主机,所述用户密码加密后存储在数据库中,用户登录时通过用户密码进行密码校验,用户登录后获得固定生命周期的令牌。
本发明在物理环境高可用方面具体包括以下两个方面:
网络高可用:在系统的物理网络部署设计中,采用双份冗余的设计方案,即两个交换机、服务器中管理网和业务网各使用两个物理网口(且两个网口分布在两块物理网卡上);通过服务器中网卡和交换机配置网口聚合,实现双活高可用网络。这就保证了在一台交换机、一根网线、或一个网口/网卡发生故障时,管理网和业务网都至少有一条物理链路联通,实现了物理网络的高可用。
服务器存储高可用:服务器硬盘是系统中非常容易发生故障的部件,因此,在本发明中,所有服务器的系统盘都使用了RAID配置(根据服务器情况不同,选择了RAID 5 或RAID 1)。这就保证了当一台服务器有单块硬盘故障时,服务器可以继续运行,且不会有数据丢失。由于非系统盘供OpenStack的分布式存储和对象存储使用,这两者均有软件层面的高可用保障,因此对非系统盘不做RAID或使用RAID 0,以提高性能、节省空间。
本发明在OpenStack高可用方面主要包括以下三个方面:
存储的高可用:OpenStack的镜像、计算、云硬盘都依赖于存储,因此,在OpenStack部署设计中,采用了Ceph分布式存储方案。Ceph是使用多台服务器的裸硬盘作为资源组成分布式硬盘池,将需要存储的对象分块并保证每块都有指定数量副本,且副本分布于不同的服务器上。这就保证了在出现单块硬盘或单台服务器故障时,存储仍可以正常工作且不会丢失数据。
OpenStack控制器和网络节点的高可用:在本发明中,采用三活的控制器和网络节点高可用配置,即同时在三个物理服务器上部署三个OpenStack控制器虚拟机和三个网络节点虚拟机,这六台虚拟机同时处于激活状态。不论对于单台控制器虚拟机、网络虚拟机或某物理服务器出现故障时,至少保证仍然有其它两个控制器虚拟机和两个网络节点虚拟机提供服务,OpenStack仍然处于可用状态。
OpenStack对象存储的高可用:OpenStack对象存储(Swift)本身的设计就是分布式、高可用的架构,因此在本项目中并不需要做出特别设计和配置,只需要保证使用的节点数量多于三个即可。
本发明在多租户场景下的安全性设计方面主要包括:
网络安全设计:首先是租户间二层网络隔离。在系统中,通过使用OpenStackNeutron 实现的虚拟二层网络,为不同租户分配不同的二层网络,并保证其隔离性,即不同租户之间,网络二层不连通。其次是租户的三层网络防火墙支持。通过使用OpenStack实现的“安全组”功能,支持用户自定义三层网络防护墙规则,同时支持租户网络间、租户网络内部、外网与租户网络间的网络进、出流量限制。第三,外网VPN接入控制。在本发明中,默认的服务仅能通过VPN接入后访问,这就保证了系统的服务、资源并不直接暴露在互联网上,极大的降低了被攻击的可能性。而在VPN配置上,可以支持不同VPN 用户组的网络访问范围,也可以限制VPN接入的用户无法访问到未授权资源。另外,VPN 由于采用加密传送(如SSLVPN),本身可以保证传输链路的安全性,防止数据在传输过程中被窃取或篡改。最后,对于互联网服务部分,通过前置防火墙提供保护。任何直接通过互联网可访问的资源,均需要通过在防火墙上做IP地址和端口映射,一般情况下仅暴露标准服务端口(如Web服务的80和443端口)。这种方式可以保证只有少数资源可以通过互联网访问,另一方面,通过互联网访问的流量必须经过防火墙的过滤。
数据安全设计:数据隔离设计是保证不同租户间无法互相访问对方的数据,包括云主机、云硬盘以及对象存储中的数据。对于云主机(虚拟机或容器),一个租户无法查看其它租户云主机的访问信息,如IP地址。即使通过猜测IP地址直接访问云主机,系统提供安全组规则设置加以防护,即租户可以设置其云主机只能够允许从某个IP地址段的客户端访问其远程访问端口(如SSH端口)。这就避免了未授权用户对云主机内数据的窃取。对于云硬盘,只有本租户的用户才能够将其挂载到租户内的虚拟机上并加以使用。不同租户或非系统用户,无法访问云硬盘、挂载云硬盘。因此也就无法窃取云硬盘中的数据。在对象存储方面,不同租户的数据(对象)被存储在不同的对象容器中,并只对本租户的用户开放访问权限。因此,不同租户之间无法直接访问其它租户的对象存储。
用户访问信息安全设计:用户密码以单向加密方式存储于数据库中。即在用户设置密码时,本发明仅会将密码经过单向加密算法加密后的值存储于数据库中。每次用户登录时,将用户输入经过同样的单向加密算法加密后的值与数据库中存储的值比对。这是目前主流的密码存储和验证模式。用户密码仅会在用户登录时经过HTTPS协议传输一次,保证了密码的传输安全。用户登录成功后,系统会分配一个短生命周期的令牌,用户的后续操作均携带该令牌以证明其身份。这就保证了只有被验证过的用户才能访问系统。而令牌的生命周期较短,在过期时会由系统重新分配新的令牌。这就保证了用户在使用系统的过程中,不会因令牌被窃取,而被冒用身份的情况。
如图1所示,租户与用户的创建流程采用线上与线下结合的方式,某些步骤需要通过邮件等方式完成。项目组首先通过提交租户名称、说明、成员信息,在线下完成租户建立的申请和审批流程,并将审批通过的申请以邮件形式发送给系统管理员。审批邮件中应包含租户名称、租户描述信息;成员的列表和每位成员的邮件地址;租户期望的资源使用配额信息。系统管理员收到审批邮件后,根据邮件中的信息建立该租户。建立新租户的具体步骤在后面的子流程中详细描述。系统管理员根据审批邮件中的用户列表建立用户并加入该租户中,具体步骤在后面子流程中描述。完成前两步操作后,系统管理员邮件通知项目组租户创建完毕,并包含租户名称信息。项目组向租户成员单独发送邮件,告知其用户已建立并被加入租户,以及用户信息。由于用户信息中包含初始访问密码,此邮件必须单独、直接发送给每个用户。
如图2所示,管理员创建租户子流程中,系统管理员登录到系统控制台后,选择新建租户页面,并输入租户的名称、描述,为租户设置配额。这些信息都包含在审批邮件中。系统控制收到管理员的请求后,完成OpenStack中租户的建立。系统更新租户的配额信息。系统为该租户建立其网络环境。
如图3所示,由于同一个用户可能属于多个租户,因此系统管理员在管理租户中的用户时,需要首先确定用户是否已经存在,之后采用不同的步骤。系统管理员通过邮件地址来确定该用户是否已经存在。如果该用户已经存在,通过控制台的租户编辑页面,将该用户加入到租户的成员列表中。后台会自动完成租户列表和用户角色的更新。如果该用户并不存在,通过控制台的新建用户页面,创建该用户。在创建用户时使用用户的邮件地址作为用户名,并将用户的首选租户设置为当前创建的租户。后台会完成用户的创建、租户列表和用户角色的更新。
如图4所示,租户在建立之后,可以有管理员对其进行配置的变更,可变更的内容包括租户的描述、用户成员列表以及资源配额。项目组以邮件形式描述需要进行的变更并获得相应的审批后,将批准后的请求发送给系统管理员。系统管理员通过控制台,选择编辑租户页面,并根据邮件在页面中完成所需的变更配置,即修改相应的属性值。系统管理员提交后,后台会相应完成租户描述、用户列表以及租户配额的更新。在新增租户成员的时,系统管理员可能会遇到用户不存在的情况。在此情况下,可以使用图3所示的用户创建子流程。
本系统提供虚拟机和容器两种计算资源,统称为云主机。如图5所示,云主机创建中,用户申请云主机的流程是通过Web控制台的自服务流程,中间不需要其它人为参与。用户在控制台页面上选择创建云主机,之后在弹出页面中选择需要的具体配置,包括操作系统类型、体系架构、镜像和配置,之后提交。后台收到请求后,根据用户所对应的租户确定使用的私有网络和子网。后台使用用户选择的配置以及查询得到私有网络和子网信息,确定OpenStack创建虚拟机或容器的参数列表,并启动云主机。云主机启动后,创建一个外网IP。将外网IP与云主机关联,完成云主机创建流程。
在这一云主机创建的流程中,从用户操作的方便性上考虑,扩展了OpenStack默认的云主机启动的步骤。首先,在用户选择配置的页面,扩展了对体系架构的选择(X86、Power),并预留了对加速器的支持,并且通过使用不同镜像的属性值,根据用户的选择调整可用镜像列表,提升用户体验。其次,不需要用户指定私有网络和子网的ID,由后台自动完成映射。最后,对创建出来的云主机,自动创建并关联外网IP地址,方便用户访问和使用。
云主机创建流程的一个特殊情况就是租户配额用尽。在这种情况下,用户会发现其控制台上创建云主机的按钮不可点击。出现这种情况时,需要用户在项目组内部进行沟通,释放不必要的资源占用,在腾出足够配额后再创建云主机。对于项目实际需要资源确实不足时,可以通过“租户变更”流程,增加租户配额。
云硬盘是为了扩展云主机的存储空间,并能够保存持久性数据,即云主机删除后仍需要保留的数据。云硬盘的申请和使用与云主机类似,也通过控制台以自服务的方式进行,不需要其他人工介入,如图6所示。用户在控制台中点击创建云硬盘。在弹出页面中输入云硬盘配置(名称和大小)并确认创建。后台会根据用户输入创建云硬盘。后台创建成功后,用户可以在控制台上看到新建的云硬盘,再选择挂载到云主机上(并在页面中选择希望挂载的云主机名称)并确认。后台根据用户选择,将云硬盘挂载到云主机上。用户登录云主机,可以正常使用新挂载的云硬盘(如格式化、建立文件系统)。
当用户不需要云硬盘时,可以将云硬盘从云主机上卸载并删除。这里需要用户考虑的一个问题是,云硬盘中的数据是否需要保留。对于需要保留的情况,用户可以仅将云硬盘从云主机上卸载,而不删除云硬盘。在希望读取该云硬盘上的数据时,只需要将其挂载到某个运行的云主机上,就可以读取。这就实现了持久数据的长期保存,而不依赖于云主机的生命周期。云硬盘的卸载流程如图7所示。用户首先登录到云主机上,完成操作系统中需要的操作,如umount文件系统等。这一步骤保证云主机的操作系统不会因为云硬盘的卸载而收到损坏。用户在控制台选择该云硬盘并确认从云主机上卸载。后台完成云硬盘的卸载操作。用户判断是否需要保留数据。如果需要保留数据,则保留云硬盘,不做后续操作。如用户确定云硬盘中数据不会再被使用,则选择删除云硬盘并确认。后台完成云硬盘的删除操作。
用户可以在不需要云主机的时候删除云主机,释放出租户配额,也节省系统的物理资源。删除云主机的标准流程如图8所示。如果云主机上有挂载的云硬盘,用户首先根据“云硬盘的卸载与删除”流程,将云硬盘从云主机上卸载。用户选择删除云主机并确认。后台完成云主机的删除操作。后台完成云主机所关联的外网 IP的删除操作。在这一流程中,第一步并不是强制的。换言之,用户可以选择直接删除云主机而不先卸载云硬盘。这种情况下,云硬盘会自动从云主机上卸载,用户可以在云硬盘列表页面上查看被卸载的云硬盘,其状况也变为可用的状态。但是,标准流程仍然建议首先进行卸载操作。这是因为在卸载流程中,包含了对云硬盘中数据是否需要长期保存的判断,以及相应的后续云硬盘操作。如果不进行云硬盘卸载的流程,容易造成的情况是,用户忽略被自动卸载的云硬盘,或不及时进行相应操作。结果是可能造成资源浪费,即无用的云硬盘占用租户配合和系统物理资源。也可能在用户积累多个云硬盘想统一清理是,发生误操作(误删除),造成数据丢失。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。