陕西省在101个县(区)已经建立了县级农村饮水安全水质监测中心, 每个水质监测中心配备了能够满足检测需要的设备、仪器和取样车, 实现了县级农村饮水工程水质监测网络全覆盖. 这些检测信息资源若不能有效收集处理, 就会影响主管部门的决策. 为此, 建立全省范围的水质检测收集系统很有必要, 该系统能为相关部门对农村饮用水安全问题做出快速科学的决策与工程实施提供有力支持. 要建成该系统, 需要解决以下问题: 1) 该系统同时传输大量数据有共同的特性, 若开发类似的系统需要耗费大量的人力和物力资源, 如何合理共享软硬件资源需要解决的问题. 2) 该系统有上千个用户, 每个用户同时提交大量的数据集, 同时提交的数据量达到TB级别, 如何实现高效数据访问与资源分配问题.
近几年国内外云计算的发展可以用“风起云涌”来形容: 各大传统IT运营商纷纷在其核心业务上推出云计算服务; 新兴云计算服务提供商不断推出云平台基础架构和管理系统, 例如OpenStack、CloudStack及Eucalyptus等.
Eucalyptus源于美国政府支持的加州大学圣巴巴拉分校研究项目, 已转为Eucalyptus System公司商业化运作, 被HP公司收购, 但是其核心代码仍是开源, 为服务提供商及企业用户创建私有云或混合云提供了基础设施服务解决方案. Eucalyptus平台的API(应用程序接口)可以全面兼容著名云计算平台Amazon的API, 已拥有虚拟化环境的用户可使用Eucalyptus云平台增强自己的虚拟化环境. Eucalyptus平台是基于基础设施服务(IaaS)的, 本文的云平台网络拓扑结构采用桉树的EDGE 模式. Eucalyptus提供IaaS级的私有云服务. 它由云控制器(Cloud Controller, CLC)、集群控制器(Cluster Controller, CC)、节点控制器(Node Controller, NC)、存储控制器(Storage Controller, SC)以及存储服务(Walrus)组成. 云控制器为用户提供访问整个云平台的唯一接口, 接受用户请求, 并将请求转发给具体的服务组件; 集群控制器负责管理集群内的所有节点以及所有节点的资源使用情况和网络通信情况; 节点控制器部署在具体的计算节点上, 负责监控和管理本节点上的虚拟机的生命周期和资源使用情况; 存储控制器为每一个虚拟机提供虚拟磁盘, 安装存储控制器的物理机被虚拟化成一个虚拟磁盘池, 用户可为每个虚拟机挂载指定配额大小的虚拟磁盘, 并进行远程网络IO访问; Walrus以桶、对象的方式存储大容量静态数据, 为用户提供上传、下载、罗列等基本存储服务. 网络拓扑结构如图1所示.
2 多租户技术
多租户的概念最早起源于软件领域, 指一个软件实例服务于多个用户的架构. 多租户作为云计算的核心计算, 它解决了在相同的系统资源或软件应用中实现多用户共同访问和使用. 同时应该保证系统安全性, 并确保多用户之间数据的相互隔离. 在数据层面, 需要切割数据库实现多租户的数据管理[1–3].
21世纪的今天, 云计算已经成为 IT 领域一个新浪潮. 各大云计算厂商纷纷推出了自己的云战略, SalesForce的force.com是面向特定领域(CRM), 其领域客户需求共性明显, 因此采用共享数据表和Shared Everthing架构非常合适并取得巨大成功. Windows Azure 以云技术为核心提供了软件+服务的计算方法. SQL Azure采用共享数据库进程模式. Amazon推出弹性计算云(EC2)为企业提供计算服务, 和简单存储服务(S3)为企业提供存储服务. Google搜索引擎建立分布在全球 200 多个国家和地区, 超过 100 万台服务器的云计算环境下. 在 Google 的众多应用中, 多租户作为云计算的核心技术得到了更为广泛的应用, 比如我们经常使用的 Google Docs, Google App Engine 等应用, 都是多租户技术在实际应用中的应用体现.
国内主流的SaaS提供商有Xtools、阿里软件、800app、金算盘等.
随着云计算的兴起和推广应用, 多租户技术也越来越成熟, 借助多租户技术来架构农村饮水规划调查系统, 是农村饮用水规划调查快速提升信息化水平的捷径. 本文正是基于这样的背景来研究如何在农村饮用水规划化系统中引入多租户模式, 提升农村饮用水检测信息化水平, 降低农村信息化投入成本和维护成本, 提高农村饮用水质量. “陕西省农村饮水规划调查数据库系统”利用Eucalyptus云计算平台, 建立一个多租户的共享数据库共享schema水资源检测系统能解决目前存在的难题.
3 多租户关键技术研究“陕西省农村饮水规划调查数据库系统”在Windows环境下实现了农村饮用水安全的工程调查信息在网上的传输、转换、处理、汇总、查询、分析, 为省政府和相关部门在对农村饮用水安全问题做出快速科学的决策与工程实施提供了强有力的支持. 系统主要包括数据转换、数据审核、数据对比等12个功能模块. 多租户水利系统部署拓扑如图2所示. 农村饮水规划调查数据库系统的Web 前端和数据库.
3.1 模块划分
单独部署, 每个租户都有自己Web虚拟机, 分配有公有IP, 每个租户都有自己安全组和防火墙强规则, 租户的Web服务器放在自己的安全组里, 不同租户的Web虚拟机网络二层不通.
普通租户可以共享数据库服务器, 高级租户独享数据服务器. 所有数据库在同一安全组, 设定相应的防火墙规则. 整个系统部署在一个Eucalyptus Account内. Web虚拟服务器使用instance-store 的镜像, 在启动虚拟机通过user-data 自动把要使用的数据库信息传给Web server. MSSQL虚拟机可以使用EBS-base的镜像(20 G), 同时分配EBS volume用作数据盘.
3.2 多租户数据库设计数据库设计是多租户实现上的最重要技术. 租户与租户之间的数据需要相互隔离保证数据的安全性[4]. 由于各租户数据之间有共同的数据特性, 所以多租户数据的存储方式采用共享数据库共享模式(又称共享模式).
在数据库表设计方面, 本系统采用多个租户使用相同的数据库和相同的表. 为了将不同租户的数据进行隔离, 所有表包含一个Water_id字段. 在查询或存储表数据时, 需要应用Water_id字段对数据进行强制隔离. 数据库表举例: 以下两张表是本数据库用到的主要表. 表1和表2有共同的租户字段Water_ID, 表1是村庄信息表, 查询该表信息需输入租户Water_ID; 表2为饮水点情况表, 所有租户的检测信息都存放在该表中, 租户之间的通过租户Water_ID进行隔离. 当租户需要对自己的业务数据操作时, 每条操作SQL条件语句需要增加Water_ID=‘?’区分不同租户, 防止其它租户读取本租户信息. 通过租户Water_ID可以将表1和表2联系起来.
例如: 查询租户号001的隔离语句如下:
Select s1.city, s1.county, s1.town, s1.Source_Type, s1.Manage_type s2.Test_time, s2.Test_Result from s1, s2 where s1.Water_ID=s2. Water_ ID AND s1.Water_ID=“001”
3.3 多租户改进遗传放置算法当一个新租户加入时, 根据租户的用户数和服务质量要求需要计算为租户分配的资源数量, 资源数量用于保障租户的服务质量, 租户放置算法将新加入的租户放置到资源节点上, 使之既满足租户的资源需求, 同时使资源供应商的资源利用率最大化. 对于应用放置方面, 文献[5,6]对于多租户资源动态分配策略进行研究, 文献[7]对多租户安全资源分配算法和安全服务调度框架进行研究. 文献[8]对多租户系统进行动态的扩展, 运用装箱策略管理多租户云应用程序中的存储资源. 文献[9]应用遗传算法对Android设备驱动程序的未知安全漏洞进行检测. 文献[10]以完工时间、机器能耗和工人操作机器的舒适度作为柔性作业车间调度问题的多目标函数, 利用改进遗传算法对其进行优化研究. 本文在以往的研究基础上提出了多租户改进遗传放置算法(Multi-tenant Improved Genetic Placement Algorithm, MIGPA). 既满足租户的资源需求, 同时使资源利用率最大化.
通过MIGPA将租户放置到合适的虚拟机中, 生成租户放置到服务器的序列. 本文采用装箱问题中基于群体的编码方式, 对租户从1, 2到n进行编号, 采用字母A-Z来表示服务器的编号. 若有租户1, 2, 3, 4, 5, 6, 7; 服务器A, B, C, D, E, F. 若租户2, 4, 6放置到服务器B上, 则有B={2, 4, 6}; 租户1, 3放置到服务器A上, 则有A={1, 3}; 租户5, 7放置到服务器C上, 则有C={5, 7}; 则染色体可以记为BAC(B={2, 4, 6}, A={1, 3}, C={5, 7}). 执行多次租户放置算法形成多个染色体, 用遗传算法实现租户占用的服务器资源最少及利用率最高. 多租户数据库系统主要由外部负载、数据库节点和租户数据库副本等几方面构成, 其参数主要包括用于描述节点、租户以及负载的基本参数使用的一些符号如表3所示.
本系统为实现服务器资源利用率最大化, 设计了多租户改进遗传放置算法(MIGPA)算法. 其中部分参数含义见表3, 其余参数表示如下: Pc: 交叉发生的概率; Pm: 变异发生的概率; M: 种群规模; Gen: 终止进化的代数; Tf: 进化产生的任何一个个体的适应度函数超过Tf, 则可以终止进化; 适应度函数f(i)=
4 性能测试
本文研究租户放置算法目的是在保障租户服务质量的前提下提高服务器资源利用率. 采用虚拟化的方法, 在租户资源分配初期为租户分配合适的资源量, 并通过租户放置算法提高服务器使用率, 减少租户部署时期的物理服务器的使用数量, 降低服务供应商的成本. 本系统通过以下几个实验进行测试, 搭建的测试环境如下.
硬件: CC和SC部署在一台IBM X3850服务器; CLC和Walrus部署在一台IBM X3850服务器; NC节点使用30台IBM 3550服务器; 所有服务器安装centos6.5操作系统; 系统运行于NC节点的虚拟机; 本次测试采用LoadRunner.
实验一. 优化过程实验.
测试放置算法的优化过程. 用LoadRunner模拟注册50个租户, 每个租户用户数在10–50之间, 系统响应时间为0.1到2 s, 农村饮水规划调查数据库系统产生90个虚拟机分配给90个租户. 放置程序需要将90个虚拟机放置到30台服务器中. 90个租户的用户并发访问水利管理系统. 采用Matlab实现遗传算法, 设置交叉概率为0.8, 变异概率为0.09, 种群的个数为30, 遗传代数为20. 图3显示了将90个租户放置到30台服务器的优化过程. 进化次数越多, 物理服务器占用的个数就越少. 在20代之前, 物理服务器数量变化较大, 之后就逐渐稳定. 租户放置算法很快得到了最优解.
实验二. 占用服务器资源实验.
在满足租户服务质量要求的基础上, 采用Next Fit, Best Fit两种启发式算法同本文提出MIGPA进行比较, 使得需要的服务器数量最少.
Next Fit (NF)算法: 将租户和服务器编序号, 按照租户序号依次放置到各个服务器中, 若低序号服务器资源不够, 则依次比较是否能放入下一个高序号服务器中, 直到放置完成.
Best Fit (BF)算法: 将租户和服务器编序号, 依次将租户放置到剩余资源最少且能放置该租户的物理服务器中.
在25台服务器上放置租户. 四种租户放置算法的比较结果如表4所示. 本文提出的MIGPA同NF、BF和贪心算法相比, 使用的物理服务器数量最少, 当租户数量达到90个时, NF算法的服务器已经不能继续放置租户了. 但是随着租户数量增多, MIGPA优势越来越明显.
实验三. 服务器资源利用率实验.
进一步测试MIGPA的CPU资源利用率. 选取3台服务器Server1、Server2和Server3, 测试时间为30小时, 实验结果表明MIGPA可以为租户搜索到合适的服务器, CPU资源利用率高, 满足租户的服务质量要求. 结果如图3所示.
5 结论本文应用Eucalyptus的EDGE 网络模式建立了云平台, 分析了多租户共享数据库模式系统的设计与实现, 提出了多租户改进遗传放置算法, 并和Next Fit、Best Fit和贪心算法进行比较, 本文提出的放置算法在随着租户数量增加, 使用的服务器数量会相对减少, 提高了资源利用率, 为租户提供了满意的服务质量. 通过实验证明了本文提出的MIGPA可以较好地保证租户服务质量并提高服务器资源利用率.
[1] |
李响, 李彤, 谢仲文, 等. 一种面向SaaS多租户的多层模型. 计算机科学, 2017, 44(11): 56-63. DOI:10.11896/j.issn.1002-137X.2017.11.009 |
[2] |
Kuppusamy S, Kaniappan V, Thirupathi D. Design and development of multi-tenant Web framework. Procedia Computer Science, 2015(48): 180-191. DOI:10.1016/j.procs.2015.04.168 |
[3] |
李晓娜, 李庆忠, 孔兰菊, 等. 基于共享模式的SaaS多租户数据划分机制研究. 通信学报, 2012, 33(S1): 110-120. |
[4] |
Zahid F, Gran EG, Bogdański B, et al. Efficient network isolation and load balancing in multi-tenant HPC clusters. Future Generation Computer Systems, 2017(72): 145-162. DOI:10.1016/j.future.2016.04.003 |
[5] |
谭瑛, 陈宁江, 黄汝维, 等. 一种多因素博弈的多租户资源动态分配策略. 小型微型计算机系统, 2016, 37(10): 2177-2182. DOI:10.3969/j.issn.1000-1220.2016.10.007 |
[6] |
孟凡超, 周学权, 曹祖凤, 等. 基于成本优化的多租户SaaS应用优化放置算法. 计算机集成制造系统, 2014, 20(6): 1508-1518. |
[7] |
苑中梁, 陈兴蜀, 王毅桐. IaaS环境下多租户安全资源分配算法和安全服务调度框架. 计算机应用, 2017, 37(2): 383-387, 396. |
[8] |
Maenhaut PJ, Moens H, Volckaert B, et al. A dynamic tenant-defined storage system for efficient resource management in cloud applications. Journal of Network and Computer Applications, 2017(93): 182-196. DOI:10.1016/j.jnca.2017.05.014 |
[9] |
何远, 张玉清, 张光华. 基于黑盒遗传算法的Android驱动漏洞挖掘. 计算机学报, 2017, 40(5): 1031-1043. |
[10] |
王雷, 蔡劲草, 石鑫. 基于改进遗传算法的多目标柔性作业车间节能调度问题. 南京理工大学学报(自然科学版), 2017, 41(4): 494-502. |