⑴ 分布式存储系统的应用方案
在一个视频监控系统中,选择什么样的存储解决方案直接决定了整个系统的系统架构以及系统的性能和稳定程度。
一种是在摄像监控前端采用有一定存储容量(如1.2T)的DVR设备,所有需要的数据均保存在前端DVR的存储设备中,比较好的方案中,后台软件可以管理和维护多台的DVR设备,包括这些DVR设备的存储数据,如录像的转存、删除和回放等功能。这种方案中所有数据主要保存在DVR中,后台主要负责维护和必要的存储。
另一种是在摄像监控前端采用DVR或者网络视频服务器,而存储主要在远端通过后台的PC或者服务器软件来将数据保存在后台的存储设备上。
上述两种存储方案均有很多弊端,尤其当监控点很多,需要的存储量又很大的情况下,这些可能的弊端包括:由于存储分散导致难以维护;由于存储的专业程度不高导致存储的可靠性不高,进而导致整个系统的可靠性不高;存储的利用率不高;存储的扩展性不好。
为了克服这些弊端,并推荐使用基于分布式存储、集中管理思路的、以及基于iSCSI技术的IPSAN来作为视频监控的存储解决方案,这个方案的主要特点包括:
1、分布式存储,集中管理;
2、基于iSCSI技术的IPSAN(STorageAreaNetwork);
3、流媒体网关可以作为存储解决方案的核心设备。 在这个方案中,共有三级:
1、上级监控中心:上级监控中心通常只有一个,主要由数字矩阵、认证服务器和VSTARClerk软件等。
2、本地监控中心:本地监控中心可以有多个,可依据地理位置设置,或者依据行政隶属关系设立,主要由数字矩阵、流媒体网关、iSCSI存储设备、VSTARRecorder软件等组成;音视频的数据均主要保存在本地监控中心,这就是分布式存储的概念。
3、监控前端:主要由摄像头、网络视频服务器组成,其中VE4000系列的网络视频服务器可以带硬盘,该硬盘主要是用于网络不畅时,暂时对音视频数据进行保存,或者需要在前端保存一些重要数据的情况。
本地监控中心的存储设备也可以用一台服务器,带SCSI磁盘阵列的形式,但由于服务器的网络收发性能有限,从而影响整个存储系统的性能,因此有建议选用专业的iSCSI存储设备。 1) iSCSI原理简介
iSCSI 是由IETF 开发的一种基于存储网络的新的Internet 协议,iSCSI 的原理是将SCSI 命令通过IP 网络传输,这样就可以使在网络上传送数据更加便利,而且可以实现远程存储管理。
iSCSI 使标准的SCSI 命令能够在TCP/IP 网络上的主机系统(启动器,Initiator)和存储设备(目标器,target)之间传送。而且iSCSI 协议支持在系统之间传送标准的SCSI 命令。在系统之间的连接是通过标准的IP 网络基础设施实现的,iSCSI 的协议模型如图1 所示。
图2 iSCSI 的协议模型
iSCSI 的工作原理是:当终端用户或应用程序(启动器)发送一个请求后,操作系统将生成一个适当的SCSI 命令和数据请求,SCSI 命令通过封装,在需要加密的时候要执行加密处理。这些命令加上TCP/IP 协议的包头,就可以在以太网上传输。接收端(目标器)在收到这个数据包后按照相反的方向进行解包,解析出SCSI 命令和数据请求,SCSI命令再发送给SCSI 存储设备驱动程序,因为iSCSI 是双向的协议,所以它可以将数据返回给原来的请求。
2) 基于IP SAN的网络存储方案
图3 基于IP SAN 的网络存储方案
在这个解决方案中,网络视频服务器需要支持iSCSI 协议,是启动器,而位于监控中心的iSCSI 存储设备则是目标器。本地监控中心的iSCSI 存储设备可以充当多个网络视频服务器的存储设备,而且iSCSI 存储设备还可以再外挂磁带设备,进一步扩大存储容量。 在网络存储方案中,每台网络视频服务器均占有一个IP,如果希望通过Internet 来进行远程监控,则网络视频服务器的IP 地址必须是公网IP,在通常情况,公网IP 地址都是稀有资源;另外远程监控受到网络容量的限制以及网络拥塞的影响,带宽通常不能保证,给远程监控带来了不便,而卓扬科技的流媒体网关可以解决这两个问题。
卓扬科技的流媒体网关是一个嵌入式的硬件设备,所有的报文转发均是基于硬件转发(如果是软件转发,性能达不到要求),报文的转发能力可以达到1Gbps 以上,卓扬科技的流媒体网关的主要功能包括:
支持NAT 转换功能
支持视频分发功能,当多个远程监控的用户访问同一台网络视频服务器的时候,均需要向流媒体网关发请求,然后流媒体网关再向网络视频服务器发出请求,当流媒体网关收到网络视频服务器的数据后(注意视频服务器与流媒体网关之间的数据流只有一份)再负责分发给远端的多个监控用户支持视频点播服务,远端用户可以通过流媒体网关完成视频点播的功能支持iSCSI 的Initiator
卓扬科技的流媒体网关可以对上述的功能进行分别进行配置。
下图是一个流媒体网关与IP SAN 结合的网络视频监控的解决方案,在方案中,流媒体网关没有使能iSCSI 的Initiator,iSCSI 的Initiator 是由网络视频服务器完成,其中iSCSI 的存储流是把监控流封装了iSCSI 而成的。
图4 与流媒体网关相配合的网络存储方案1
下图的网络存储方案中,流媒体网关使能了iSCSI Initiator 功能,而网络视频服务器与流媒体网关传送的均是原始的视频数据流(与iSCSI 存储流相比)。
图5 中,需要对数据进行存储的时候,流媒体网关首先从网络视频服务器活动数据(①),然后再通过iSCSI 存储流将视频数据保存到iSCSI 的存储设备上(②)。当A 用户需要进行远程监控的时候,首先A 用户向流媒体网关发出请求(③),流媒体网关再向视频服务器获取数据(①),然后流媒体网关把监控视频数据发送给用户A(③)。当B 用户需要进行视频点播的时候,B 用户首先向流媒体网关发出请求(④),流媒体网关再向iSCSI 存储设备获取数据(②),然后然后流媒体网关把监控视频数据发送给用户B(④)。
图5 与流媒体网关相配合的网络存储方案2
另外,在图4 和图5 中,是否进行NAT 转换视组网需求而定,可以灵活配置。
五、 后记
基于iSCSI 的IP SAN 存储方案无疑是解决存储问题的一个良方,尤其当iSCSI 的存储设备的性能不断提高、价格不断降低的时候,采用这种方式就更是必然的选择,我们深信,基于iSCSI 技术的存储解决方案会逐渐成为大型网络视频监控中存储技术的主流。
⑵ 如何在VMware环境下部署存储解决方案
在VMware环境下使用iSCSI存储的最佳实践 一旦iSCSI磁盘配置好了,虚拟机(VMs)就可以使用它们了。以下列出的最佳实践可以帮助你在VMware环境中的iSCSI数据存储获得最大的性能和可靠性。 iSCSI存储的性能高度依赖于网络的健康和使用。为了达到最佳...
⑶ ⑩ OpenStack高可用集群部署方案(train版)—OpenStack对接Ceph存储
参考Ceph官方安装文档
Openstack环境中,数据存储可分为临时性存储与永久性存储。
临时性存储:主要由本地文件系统提供,并主要用于nova虚拟机的本地系统与临时数据盘,以及存储glance上传的系统镜像;
永久性存储:主要由cinder提供的块存储与swift提供的对象存储构成,以cinder提供的块存储应用最为广泛,块存储通常以云盘的形式挂载到虚拟机中使用。
Openstack中需要进行数据存储的三大项目主要是nova项目(虚拟机镜像文件),glance项目(共用模版镜像)与cinder项目(块存储)。
下图为cinder,glance与nova访问ceph集群的逻辑图:
ceph与openstack集成主要用到ceph的rbd服务,ceph底层为rados存储集群,ceph通过librados库实现对底层rados的访问;
openstack各项目客户端调用librbd,再由librbd调用librados访问底层rados;
实际使用中,nova需要使用libvirtdriver驱动以通过libvirt与qemu调用librbd;cinder与glance可直接调用librbd;
写入ceph集群的数据被条带切分成多个object,object通过hash函数映射到pg(构成pg容器池pool),然后pg通过几圈crush算法近似均匀地映射到物理存储设备osd(osd是基于文件系统的物理存储设备,如xfs,ext4等)。
CEPH PG数量设置与详细介绍
在创建池之前要设置一下每个OSD的最大PG 数量
PG PGP官方计算公式计算器
参数解释:
依据参数使用公式计算新的 PG 的数目:
PG 总数= ((OSD总数*100)/最大副本数)/池数
3x100/3/3=33.33 ;舍入到2的N次幕为32
openstack集群作为ceph的客户端;下面需要再openstack集群上进行ceph客户端的环境配置
在openstack所有控制和计算节点安装ceph Octopus源码包,centos8有默认安装,但是版本一定要跟连接的ceph版本一致
glance-api 服务运行在3个控制节点, 因此三台控制节点都必须安装
cinder-volume 与 nova-compute 服务运行在3个计算(存储)节点; 因此三台计算节点都必须安装
将配置文件和密钥复制到openstack集群各节点
配置文件就是生成的ceph.conf;而密钥是 ceph.client.admin.keyring ,当使用ceph客户端连接至ceph集群时需要使用的密默认密钥,这里我们所有节点都要复制,命令如下
※Glance 作为openstack中镜像服务,支持多种适配器,支持将镜像存放到本地文件系统,http服务器,ceph分布式文件系统,glusterfs和sleepdog等开源的分布式文件系统上。目前glance采用的是本地filesystem的方式存储,存放在默认的路径 /var/lib/glance/images 下,当把本地的文件系统修改为分布式的文件系统ceph之后,原本在系统中镜像将无法使用,所以建议当前的镜像删除,部署好ceph之后,再统一上传至ceph中存储。
※Nova 负责虚拟机的生命周期管理,包括创建,删除,重建,开机,关机,重启,快照等,作为openstack的核心,nova负责IaaS中计算重要的职责,其中nova的存储格外重要,默认情况下,nova将instance的数据存放在/var/lib/nova/instances/%UUID目录下,使用本地的存储空间。使用这种方式带来的好处是:简单,易实现,速度快,故障域在一个可控制的范围内。然而,缺点也非常明显:compute出故障,上面的虚拟机down机时间长,没法快速恢复,此外,一些特性如热迁移live-migration,虚拟机容灾nova evacuate等高级特性,将无法使用,对于后期的云平台建设,有明显的缺陷。对接 Ceph 主要是希望将实例的系统磁盘文件储存到 Ceph 集群中。与其说是对接 Nova,更准确来说是对接 QEMU-KVM/libvirt,因为 librbd 早已原生集成到其中。
※Cinder 为 OpenStack 提供卷服务,支持非常广泛的后端存储类型。对接 Ceph 后,Cinder 创建的 Volume 本质就是 Ceph RBD 的块设备,当 Volume 被虚拟机挂载后,Libvirt 会以 rbd 协议的方式使用这些 Disk 设备。除了 cinder-volume 之后,Cinder 的 Backup 服务也可以对接 Ceph,将备份的 Image 以对象或块设备的形式上传到 Ceph 集群。
使用ceph的rbd接口,需要通过libvirt,所以需要在客户端机器上安装libvirt和qemu,关于ceph和openstack结合的结构如下,同时,在openstack中,需要用到存储的地方有三个:
为 Glance、Nova、Cinder 创建专用的RBD Pools池
需要配置hosts解析文件,这里最开始已经配置完成,如未添加hosts解析需要进行配置
在cephnode01管理节点上操作 ;命名为:volumes,vms,images
记录:删除存储池的操作
在cephnode01管理节点上操作 ;
针对pool设置权限,pool名对应创建的pool
nova-compute与cinder-volume都部署在计算节点 ,不必重复操作,如果计算节点与存储节点分离需要分别推送;
全部计算节点配置;以compute01节点为例;
Glance 为 OpenStack 提供镜像及其元数据注册服务,Glance 支持对接多种后端存储。与 Ceph 完成对接后,Glance 上传的 Image 会作为块设备储存在 Ceph 集群中。新版本的 Glance 也开始支持 enabled_backends 了,可以同时对接多个存储提供商。
写时复制技术(-on-write) :内核只为新生成的子进程创建虚拟空间结构,它们复制于父进程的虚拟空间结构,但是不为这些段分配物理内存,它们共享父进程的物理空间,当父子进程中有更改相应的段的行为发生时,再为子进程相应的段分配物理空间。写时复制技术大大降低了进程对资源的浪费。
全部控制节点进行配置;以controller01节点为例;
只修改涉及glance集成ceph的相关配置
变更配置文件,重启服务
ceph官网介绍 QEMU和块设备
对接 Ceph 之后,通常会以 RAW 格式创建 Glance Image,而不再使用 QCOW2 格式,否则创建虚拟机时需要进行镜像复制,没有利用 Ceph RBD COW 的优秀特性。
总结
将openstack集群中的glance镜像的数据存储到ceph中是一种非常好的解决方案,既能够保障镜像数据的安全性,同时glance和nova在同个存储池中,能够基于-on-write(写时复制)的方式快速创建虚拟机,能够在秒级为单位实现vm的创建。
全部计算节点进行配置; 以compute01节点为例;只修改glance集成ceph的相关配置
全部计算节点重启cinder-volume服务;
任意openstack控制节点上查看;
在任意控制节点为cinder的ceph后端存储创建对应的type,在配置多存储后端时可区分类型;
为ceph type设置扩展规格,键值 volume_backend_name ,value值 ceph
任意控制节点上创建一个1GB的卷 ;最后的数字1代表容量为1G
查看创建好的卷
openstack创建一个空白 Volume,Ceph相当于执行了以下指令
从镜像创建 Volume 的时候应用了 Ceph RBD COW Clone 功能,这是通过 glance-api.conf [DEFAULT] show_image_direct_url = True 来开启。这个配置项的作用是持久化 Image 的 location,此时 Glance RBD Driver 才可以通过 Image location 执行 Clone 操作。并且还会根据指定的 Volume Size 来调整 RBD Image 的 Size。
一直存在的cirros_qcow2镜像为对接ceph之前的镜像,现在已无法使用,所以将之删除
在openstack上从镜像创建一个Volume,Ceph相当于执行了以下指令
任意控制节点操作;
查看快照详细信息
在openstack上对镜像的卷创建快照,Ceph相当于执行了以下指令
如果说快照时一个时间机器,那么备份就是一个异地的时间机器,它具有容灾的含义。所以一般来说 Ceph Pool backup 应该与 Pool images、volumes 以及 vms 处于不同的灾备隔离域。
https://www.cnblogs.com/luohaixian/p/9344803.html
https://docs.openstack.org/zh_CN/user-guide/backup-db-incremental.html
一般的,备份具有以下类型:
在虚拟磁盘映像的计算节点上使用本地存储有一些缺点:
Nova 为 OpenStack 提供计算服务,对接 Ceph 主要是希望将实例的系统磁盘文件储存到 Ceph 集群中。与其说是对接 Nova,更准确来说是对接 QEMU-KVM/libvirt ,因为 librbd 早已原生集成到其中。
如果需要从ceph rbd中启动虚拟机,必须将ceph配置为nova的临时后端;
推荐在计算节点的配置文件中启用rbd cache功能;
为了便于故障排查,配置admin socket参数,这样每个使用ceph rbd的虚拟机都有1个socket将有利于虚拟机性能分析与故障解决;
相关配置只涉及全部计算节点ceph.conf文件的[client]与[client.cinder]字段,以compute163节点为例
全部计算节点配置 ceph.conf文件相关的 [client] 与 [client.cinder] 字段,以compute01节点为例;
在全部计算节点配置nova后端使用ceph集群的vms池,以compute01节点为例;
在全部计算节点操作;
在全部计算节点操作,以compute01节点为例;
以下给出libvirtd.conf文件的修改处所在的行num
⑷ 华为云存储的解决方案
为此,华为推出了基于云存储系统和云存储服务平台构建的端到端存储服务解决方案,帮助运营商快速、经济地提供云存储服务与发展用户。 华为云存储系统具备弹性扩展、安全可靠、自动化管理等特点,以及丰富的业务支撑能力,满足海量数据的存储以及大规模业务承载的需求。
弹性扩展:高效的存储基础架构需支持在性能和容量两个维度上进行扩展。华为云存储系统基于横向扩展(Scale-out)架构设计,对上层业务平台提供透明的存储资源服务,屏蔽底层的硬件差异,能够帮助运营商实现存储容量的扩展和业务性能的提升。
在容量扩展方面,云存储系统支持通过增加硬盘、存储域和存储节点三种方式扩展系统容量。此外,云存储系统通过统一的资源和I/O调度,使得新接入的存储域和存储节点能够与已有的域和节点一起为上层业务提供存储服务,实现整系统存储空间从TB到EB的线性扩展,再通过跨域互联、访问重定向等技术,对多个资源池进行统一部署和调度管理。
在性能提升方面,云存储系统通过分布式存储软件协调大量的存储硬件节点并行对外提供数据存储服务,海量数据均匀下发到每个存储节点的每个硬盘,充分发挥域内节点与硬盘的并行处理能力,使系统在扩展存储容量的同时,也提升存储系统的读写性能。
安全可靠:华为云存储系统从以下两方面保证用户数据在整个生命周期内的安全可靠。 通过Erasure Code技术,对文件进行条带化后生成多个数据块,并计算若干个校验块,同时将所有的数据块和校验块分别存放在不同存储节点上,若其中一个或多个存储节点发生故障,系统可在提供正常的读写服务的同时,自动在后台进行数据重构,将故障节点上的数据重构到其他节点上。这种节点间的数据保护技术确保华为云存储系统具有较高的数据可靠性。
云存储系统通过权限控制和加密来保证数据私密性。在权限控制层面,拥有存储业务的用户或系统的各类管理员的操作必须被授权,不同权限用户执行不同的操作。在加密层面,系统选择HTTP-SSL方式作为数据传输安全的技术实现方案,防止传输过程中的恶意监听与篡改,保证数据传输的私密性、一致性和不可抵赖性。对于用户的关键信息,如登录密码和系统访问等鉴权信息,云存储系统也从客户端到服务端都进行加密处理,能够有效保障用户关键信息的安全性。
自动化管理:云存储系统通过“一键部署”、“批量升级”、“智能告警”等功能实现系统的自动部署与管理。设备上电后管理软件远程对所有设备进行安装、配置,降低系统部署难度,缩短部署时间。同时,存储节点的批量升级,整个过程无需人工干预和控制,不中断业务,实现业务透明化。云存储管理系统还能够提供完整的图形化管理界面,动态反映云存储系统的拓扑结构,实现存储节点和网络设备的统一管理,提高系统运维效率,降低运营成本。
接口丰富:针对不同类型的应用对存储的访问需求,如IPTV、视频监控、网盘等,云存储系统提供了文件存储接口——NFS/CIFS、对象存储接口——REST,以及针对第三方云服务的API,满足各种终端、各种应用的存储接入。 基于云存储系统,云存储服务平台不仅可以提供空间租赁、在线存储、集中备份等服务,还具备完善的业务管理功能。
空间租赁:无论是中小企业还是大型企业,数据增长的速度远远超过了对存储设备投资的幅度。而且部署大型的存储设备,不仅降低了业务灵活性,也增加了运维成本。通过运营商提供的空间租赁服务,企业可以按需购买存储空间进行数据存储,不仅可以更灵活地满足存储需求,也免去了繁杂的自运维过程。
在线存储:在线存储服务为个人用户提供了远端大容量的存储空间。个人用户可通过web方式、PC客户端、手机客户端三种形式访问个人数据,web方式能够使浏览器和本地桌面无缝结合;PC客户端通过将网络资源本地化,不改变用户的操作习惯;手机客户端简单易操作,方便用户实时访问,多种访问方式实现用户终端的多屏互动、文件同步。
集中备份:中小企业备份系统的建设面临建设门槛高、周期长等问题,运营商提供的集中备份服务是对企业备份系统“效率”与“安全”的双重升级,通过集中备份服务能够实现本地数据共享,按需申请云端备份空间,以及对重要数据进行本地与云端的两级备份。
“两级备份”通过本地云存储网关与远端云存储数据中心共同实现。首先,本地部署的云存储网关进行本地的一次备份,保证备份效率;其次,通过本地云存储网关的数据同步功能,实现网关上的数据到云存储数据中心的二次备份,进一步提高数据的安全性。
大数据时代的到来,将促使更多的企业与个人将数据迁移到云端,这一过程为运营商向综合信息服务提供商的转型创造了良好的契机。华为云存储解决方案将致力于为运营商开展云存储服务提供良好支撑,华为已经与中国电信、中国移动就云存储服务进行了深入的合作。
⑸ 国内私有云部署解决方案有哪些
在迁移到云的过程中,很多企业选择部署私有云计算环境。这种模式的优点很多,整合了IT投资和资源、自动化任务并引入诸如虚拟化这样的新技术。通常,云模式为传统老设备和新技术的引入之间打通了道路。
公有云面临安全问题挑战,但是您应该在自己的数据中心内已经解决了大多数问题。为什么不把这些解决方案通过整合和自动化进行扩展,以降低云项目起步时的复杂性?
迁移到云并不等于虚拟化
很多企业 IT 部门在考虑迁移到云的时候总是想到虚拟化,实际上并非如此。在一些数据中心,虚拟平台都是服务提供的核心,但是云并非仅仅指技术实现方式。实际上,它们还包括了人员、流程、 整合和控制。迁移到云意味着对企业内重复服务内容的整合,以及对一些日常和傻瓜式工作 的自动化处理,可以解放员工去完成更复杂的工作。
云可以是共享架构,可能是虚拟化的,也可能包含物理硬件。例如Google 的 Gmail 和微软的SkyDrive ,这些服务并不需要虚拟化,他们都建立在大量的物理机上。企业的很多私有云也可以这样搭建,
事实上,有时候虚拟化甚至还会带来一些麻烦,比如基于如Microsoft Cluster Service 这类技术的服务,使用虚拟化环境反而可能会发生冲突。此外还包括资源争夺、安全问题、个别虚拟机管理的复杂性等等问题。
企业要实现的目标应该是整合而不是虚拟化。如果你能把50 台文件和打印服务器整合到三台集群物理宿主机上,无论是否采用了虚拟化技术,这就是一种成功的云,。
从虚拟化环境迁移到云
首先,标准化基础技术
虚拟化技术通过使用虚拟机模板和自动化部分安装部署工作,实现了操作系统配置的标准化。同时也对数据复制、防火墙和其它安全工具、OS 以及存储配置工作的标准化提供帮助。
这些标准化可能为虚拟化和云计算提供帮助。 如果您无法创建一种万能的方案,就选择多种类型,目标是一次性解决配置问题。拥有 10 种不同类型的虚拟机要比3000 个各不相同的系统好得多。
其次,自动化
自动化可以有效消除许多重复性工作。例如:通过向虚拟机模板中添加常规应用软件来避免之后安装它,不再去每台服务器上创建本地账户,而改用集中的Lightweight Directory Access Protocol 或Active Directory 实例代替,会更加高效,通过配置管理工具,如Puppet 或Chef 来自动更改和管理服务器配置的工作。
就算是一组常规的运行命令脚本都能帮助极大。系统管理员可以通过使用命令脚本大幅减少重复性工作,能只输入一次的命令,就绝不输入两次。
自动化并非提供自助服务所必需的。通常云都被看做一种自助服务,但是 IT 行业花费 很多年时间包装跟创建和管理服务器相关的流程。这些流程通常服务于如何监控服务器或服务,文件如何创建或授权如何管理等等内容。抛开这些事情去提供自助服务是一种错误。
调查调整企业内的IT服务
一旦通过标准化和自动化为云打好了基础,就可以开始进行进一步的较为复杂的工作了,调查企业中运行 的IT 服务,不要以为会很简单,这绝对是一项不小的挑战,你需要找到各项服务存在的原因。
人们总是有好的理由来复制服务。例如,企业的主Web 服务器不能支持某种技术,所以部门创建了自己的 Web 服务器。存档这些需求并努力扩展中央系统功能以满足它们。您还需要具备足够的灵活性。迁移到云需要对 IT 系统构架的长期整合过程,从中您会发现很多意想不到的惊喜。
我现在使用的是小鸟云,6月新近活动认证可获得0元服务器,建议去看看!
⑹ 如何利用Mesos持久化存储方案部署ArangoDB 集群
我们无法轻易的停止一个挂载了本地文件系统的 Docker 容器并在另一台机器上重启它。然而,出于性能的考量,分布式数据库和其他有状态的服务通常又需要使用本地存储,甚至是 SSD 盘。所以数据中心操作系统需要考虑为应用提供保留并访问本地存储的方式;确保某些任务重启后被重新调度到同一个节点,进而重新使用它的本地存储。
Mesos 0.23 的 persistence primitives 特性解决了上述这些挑战。本文中,我们首先解释下 Mesos 的 per
⑺ [转]K8S 六种存储解决方案的性能比较测试
原文地址: https://toutiao.io/posts/nmflsd/preview
大多数开发人员都认为在部署集群时选择合适的存储技术极为重要。但是,在 Kubernetes 这片市场上,人们对于存储技术的选择并没有一个标准的答案。本文将 介绍 Kubernetes 中常用的 6 种存储,分析它们的使用场景和优缺点,并对它们进行性能测试,找出哪种存储解决方案才是最理想的选择。
存储技术的选择在很大程度上取决于工程师们要运行的工作负载类型。如果你正在使用 Kubernetes,你可能偏向于通过动态配置使用 volume 来进行块存储。对于裸机集群,你就需要为你的用例选择最为合适的技术,并将其集成到你的硬件上。
此外,例如 AKS、EKS 和 GKE 等公有云可以开箱即用并带有块存储,但这并不意味着它们是最好的选择。在许多情况下,默认公有云存储类的故障转移时间较长。例如,在 AWS EBS 中存在一个故障的 VM,附在此 VM Pod 上的 volume 需要 5 分钟以上的时间才能在另一个节点上重新联机。但是,像 Portworx 和 OpenEBS 此类云原生存储就可以很快解决这种问题。
本文的目的就是寻找在 Kubernetes 中最常用的存储解决方案,并进行基本性能比较。本次测试使用以下存储后端对 Azure AKS 执行所有测试:
测试结果
*注:请将结果作为存储选择期间的标准之一,但不要仅根据本文的数据做出最终判断。
在描述过程之前,我们先总结一下最终结论。如果我们忽略本地 Azure pvc 或 hostPath,测试结果是:
那么这究竟是为什么呢?让我们从每个后端存储介绍安装说明开始,详述 AKS 测试的具体过程!
各存储解决方案的安装及优缺点
*注:本节不含 Azure hostpath 的安装介绍。
本文将把 Azure 原生 Storage Class 作为所有测试的基线。Azure 会动态创建托管磁盘并将其映射到 VM 中,其中 Kubernetes 为 Pod 的 volume。
如果只是为了使用它,你没有必要再做其他事情。当你配置新的 AKS 集群时,它会自动预定义为“default”和“managed-premium”两种存储类。Premium 类将使用基于 SSD 的高性能和低延迟磁盘。
优点:
弊端:
Ceph Rook 需要设计特定的硬件配置,根据数据类型生成 pg 组,配置日志 SSD 分区(在 bluestore 之前)并定义 crush 映射。 它是一种处理整个存储集群安装的简洁方法。
在 AKS 上安装 Ceph Rook :
优点:
弊端:
GlusterFS 是一个的开源存储解决方案。 Heketi 是 GlusterFS RESTful volume 的管理界面。它提供了一种便捷的方式让 GlusterFS 具有动态配置的能力。如果没有这种访问权限,用户就必须手动创建 GlusterFS volume 并将其映射到 Kubernetes pv 上。
*注:关于 GlusterFS 的更多信息,见: https://docs.gluster.org/en/latest/Install-Guide/Overview/
这里使用了 Heketi 快速入门指南[2]进行安装:
以下是修复该问题的 PR:
同时,动态配置问题也会对测试造成一定影响。对于 Kubernetes 控制平面,Heketi restURL 是不可用的。测试人员尝试利用 kube dns record、Pod IP 和 svc IP 来解决这个问题,但是都没有奏效。为此,他们最后选择通过 Heketi CLI 手动创建 volume。
以下是在 Kubernetes 上安装 Heketi Gluster 的更多内容:
优点:
弊端:
OpenEBS 代表了一种新的 CAS(Container Attached Storage)概念,属于云原生存储类别。 它是基于单个微服务的存储控制器和基于多个微服务的存储复制品。
作为开源项目,目前它提供 2 个后端:Jiva 和 cStor。cStor 作为控制器,它的副本部署在一个 namespace(安装 openebs 的 namespace)中,也可以说它采用的是原始磁盘而不是格式化分区。每个 Kubernetes volume 都有自己的存储控制器,它可以在节点可用存储容量范围内进行扩展。
在 AKS 上安装它非常简单:
优点:
弊端:
*注:OpenEBS 团队帮忙修改的测试用例场景,见: https://github.com/kmova/openebs/tree/fio-perf-tests/k8s/demo/dbench
最后为大家介绍一种比较新颖的解决方案。
Portworx 是另一个专为 Kubernetes 设计的云原生存储,专注于高度分散的环境。它是一个主机可寻址存储,每个 volume 都直接映射到它所连接的主机上。它根据应用程序 I/O 的类型提供自动调整。 不幸的是,它不是开源的存储方案。然而,它免费提供了 3 个节点可进行试用。
*注:关于 Portworx 更多信息,见: https://portworx.com/makes-portworx-unique/
在 AKS 上安装 Portworx 很容易,可以使用 Kubernetes 规格生成器:
优点:
弊端:
AKS 测试环境
在本次测试中,测试人员配置了具有 3 个 VM 的基本 Azure AKS 集群。为了能够连接托管的 Premium SSD,测试人员必须使用 E 类型大小的 VM。因此他们选择了 Standard_E2s_v3,只有 2 个 vCPU 和 16GB RAM。
每个 AKS 集群都会自动配置第二个资源组(RG)MC_ <name>,你可以在其中找到所有 VM、NIC 。在 RG 内部,测试人员创建了 3 个 1TB 高级 SSD 托管磁盘并手动将它们连接到每个 VM 中。
它允许我在每个专用于测试的实例中获得 1TB 的空磁盘。据 Azure 称,它的性能可以在 5000 IOPS 和 200 MB/s 吞吐量之间,具体取决于 VM 和磁盘大小。
性能结果
重要说明:单个存储性能测试的结果是无法单独评估的,它们必须相互比较才能显示出差距。测试的方法有很多种,下面是其中较为简单的一种方法。
为了进行测试,测试人员决定使用名为 Dbench 的负载测试器。 它是 Pod 的 Kubernetes 部署清单 , 同时它也是运行 FIO 的地方,并且带有 Flexible IO Tester 等 8 个测试用例。
测试在 Docker 镜像的入口点指定:
注:所有测试的完整测试输出,见:
https://gist.github.com/pupapaik/
随机读/写带宽
随机读取测试表明,GlusterFS、Ceph 和 Portworx 在读取时的性能比 AWS 本地磁盘上的主机路径快好几倍,因为它们读取的是缓存。GlusterFS 写入速度最快,它与本地磁盘几乎达到了相同的值。
随机读/写 IOPS
随机 IOPS 显示 Portworx 和 Ceph 效果最佳。Portworx 在写入时的 IOPS 与本机 Azure pvc 几乎相同,这非常好。
读/写延迟
延迟测试返回了有趣的结果,因为本机 Azure pvc 比大多数其他测试存储都慢。Portworx 和 Ceph 实现了最佳读取速度。但是对于写入,GlusterFS 比 Ceph 更好。与其他存储相比,OpenEBS 延迟非常高。
顺序读/写
顺序读/写测试显示与随机测试类似的结果,但 Ceph 的读取是 GlusterFS 的 2 倍多。除了表现非常差的 OpenEBS 之外,写入结果几乎都在同一级别上。
混合读/写 IOPS
最后一个测试用例验证了混合读/写 IOPS,即使在 mixed write 上,Portworx 和 Ceph 也提供了比原生 Azure pvc 更好的 IOPS。
以上就是所有测试结果,希望这篇文章对你有所帮助。
--
参考文献:
[1] https://github.com/rook/rook/blob/master/Documentation/ceph-quickstart.md#ceph-storage-quickstart
[2] https://github.com/gluster/gluster-kubernetes/blob/master/docs/setup-guide.md#deployment