分类: 架构设计与优化
2017-01-06 16:58:10
阿里云云服务器(Elastic Compute Service,简称 ECS)是一种简单高效、处理能力可弹性伸缩的计算服务,帮助客户快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本,使您更专注于核心业务创新。而阿里云块存储(Block Storage),是阿里云为云服务器ECS提供的低时延、持久性、高可靠的数据块级随机存储。块存储支持在可用区内自动复制数据,防止意外的硬件故障导致数据不可用,以保护您的业务免于组件故障的威胁。就像对待硬盘一样,客户可以对挂载到ECS实例上的块存储做格式化、创建文件系统等操作,并对数据持久化存储。
对ECS来说,当前阿里云能提供的两种云服务的规格列表参数如下:
表1-1 ECS在专有云和公共云最大规格对比
|
最大CPU数 |
最大内存 |
网络带宽 |
最大云盘数量 |
专有云(v2) |
16 |
64GB |
万兆网络 |
4 |
公共云 |
40 |
224GB |
万兆网络 |
4 |
表1-2. 块存储规格对比
|
最大容量 |
最大吞吐量 |
最大IOPS |
最小响应时间 |
专有云本地SSD磁盘 |
800GB |
>200MB/s |
12000 |
0.5ms |
专有云 普通云盘 |
2000GB |
40MB/s |
数百 |
5ms |
专有云 SSD云盘 |
2048GB |
256MB/s |
20000 |
0.5ms |
公共云 普通云盘 |
2000GB |
40MB/s |
数百 |
5ms |
公共云 高效云盘 |
32768GB |
80MB/s |
3000 |
1ms |
公共云 SSD云盘 |
32768GB |
256MB/s |
20000 |
0.5ms |
显然,公共云环境的云资源的计算能力能力高于专有云,而专有云上运行一些对性能要求非常严格,且非常关键的应用,比如Oracle数据库,该如何在阿里云平台上提供对应的资源且保证容量、性能都能满足业务需求呢?我们做了如下测试进行验证。
我们在阿里云公共云华东1区申请了5台ECS,模拟专有云平台的环境进行测试。兼顾效率和与专有云的环境的兼容匹配,这5台ECS的配置和用途分别是:1台16核CPU 64GB的ECS作为数据库服务器,3台2核8GB外加2个2TB SSD云盘的ECS作为存储服务器,1台2核8GB的ECS作为压力测试服务器。
表2-1.测试环境系统配置
编号 |
配置 |
数量 |
用途 |
1 |
独占实例,16C 64G,不带系统盘 |
1 |
数据库服务器 |
2 |
非独占实例,2C 8G,2TB SSD云盘*2数据盘 |
3 |
存储服务器 |
3 |
非独占实例,2C 8G,不带数据盘 |
1 |
压力测试服务器 |
数据库我们做单实例部署,同时因为专有云暂时只有2TB的最大单盘容量,所以我们需要在多台ECS搭建分布式存储系统,为数据库提供超出云平台单台ECS所能挂载的块存储容量。
阿里云块存储(云盘)基于盘古分布式文件系统,数据保存3份副本,具有99.9999999%的数据可靠性,且后端全部使用PC服务器,廉价且易维护。阿里云公共云提供单盘32TB的SSD磁盘,单个ECS最大可挂载4个云盘,最终提供客户128TB的高速大容量空间。
glusterfs是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。
iSCSI是一种基于TCP/IP 的协议,用来建立和管理IP存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。
阿里云专有云最新v2版本最大支持2TB的SSD云盘单盘容量,预计会在v3版本开放支持32TB。所以,我们舍弃在公共云上直接使用超过2TB SSD云盘的方案。glusterfs和iSCSI两种开源方案我们也分别进行了测试:两种文件系统都能将分布在多台服务器上的存储资源(磁盘)集中到一台服务器上,存储容量最大支持到PB以上。glusterfs理论上更适合于存放不经常读写的大文件,我们在实测中发现使用gluster搭建的存储稳定性欠佳,数据文件部署在glusterfs中在大规模并发读写下容易导致数据库hang住并频繁报错。而iSCSI则是更成熟的方案,与传统的数据库使用的SAN存储网络更接近。最终,我们选定使用iSCSI方案将3台存储服务器的6个2TB SSD云盘通过网络iSCSI协议共享给数据库服务器,实现12TB大容量存储。
测试方案架构最终确定:
图2-1.测试环境系统架构
swingbench生成测试数据,然后模拟指定数量的客户端对数据库的并发访问压力,最终记录测试结果。swingbench可以通过多台服务器对同一个数据库同时加压,本测试我们模拟使用1台并发加压。