乐生活与爱IT

聊IT,生活,心灵成长.关注软件定义、云计算和大数据.喜欢音乐,尝试美术;爱看书、电影;对萨提亚、正念、禅修感兴趣.关注幼儿教育....

赠书名单公布 & 在 vSAN 上部署、管理和运行 MongoDB 实例

【编者按】

在这个微信公众号"乐生活与爱IT"上,已经将《vSAN权威指南(第2版)》第5章《vSAN架构细节》的全部如下文章转载完毕:

vSAN架构细节-分布式RAID

vSAN架构细节(2) - 对象和组件

vSAN架构细节(3) - 软件组件

留言点赞获赠书 | vSAN架构细节(5) - vSAN I/O流

vForum 2017视频回看的地址 以及 vSAN架构细节(4) - 磁盘格式

其中,留言点赞获赠书的活动也已经揭晓,获得赠书的名单在文章末尾公布。


2017年8月20日,"乐生活与爱IT"曾从 VMware研发中心 转载过如下文章:

Kubernetes 、MongoDB和VMware vSAN在一起,会发生什么呢?》,主要讲述的是在 Kubernetes 集群上, 如何使用容器技术运行 MongoDB 实例。今天将要转载的另一篇文章,是如何使用vSAN上的vSphere虚机来运行MongoDB实例。可以看出在不同读写比的工作负载下,MongoDB 集群扩展会随着vSAN集群主机数的倍增,取得1.35~1.8倍不等的性能提升。下面这篇文章的作者是vSAN解决方案团队(Product Enablement,PE)中国研发中心的陈实、洛婧。


---Begin---


VMware vSAN 是业界领先的超融合基础架构(HCI)解决方案。HCI,或者说超融合基础架构将传统的IT基础架构集成到行业标准服务器上,并实现虚拟化,以帮助客户轻松扩展其基础架构。


自从 vSAN 的初始版本发布以来,人们都在想,是否可以在vSAN上部署一些无共享架构 (Shared Nothing Architecture) 的应用程序。这样的应用程序包括非关系型数据库应用程序,如 MongoDB/Cassandra,以及大数据应用程序,如 Apache Hadoop 等。


今天,我们发布了一个参考架构,验证了在 VMware vSAN 上运行 MongoDB 是一个可行的解决方案,并且性能能够得到很好的保证。此外,我们还在 vSAN 端和 MongoDB 端调整了各种参数,以实现更好的性能。最后,我们进行了各种故障场景的测试,证明在 vSAN 上运行 MongoDB 是健壮而灵活的。我们在白皮书中提供了最佳实践,展示了如何在 VMware vSAN 上完美地运行 MongoDB。



 概 述 


本参考架构展示的是在 vSphere 环境中使用 vSAN 作为部署 MongoDB 的存储层,本文:


  • 展示了部署的架构。

  • 验证了在vSAN上运行MongoDB服务的基本性能级别。

  • 比较了不同参数设置对性能的影响。

  • 进行了各类故障测试,并得出了恢复方法。

  • 通过性能比较,提出了最佳实践。


 架 构 


我们创建了一个 4 节点的 vSphere and vSAN 集群,然后在集群中部署启用了分片 (Shard) 功能的 MongoDB 服务。解决方案架构如下图所示:


0?wx_fmt=jpeg


我们部署了四台虚拟机作为 Mongos 服务器,四台虚拟机作为 Mongod 服务器,并以此作为基础架构和性能基准。在生产系统中,用户可以横向扩展 Mongos 服务器和 Mongod 服务器,以满足特定需求。


我们在 MongoDB 配置中启用了 journaling 日志功能, 以便确认任何数据都将写入磁盘而不是内存,以达到数据持久化的目的。


在架构图中,ConfigDB 代表 MongoDB 集群内部使用的配置数据库。它是分片 MongoDB 集群的必要组件。它存储分片信息、Mongos 状态等。


 硬件组件


性能是与硬件高度相关的。下表为我们使用的 4 个物理主机和其他硬件信息:


0?wx_fmt=jpeg


 软件组件


操作系统以及软件信息如以下表格所示:


0?wx_fmt=jpeg


 MongoDB 虚机


如架构图所示,所有的 mongodb 服务都在虚拟机中运行。基于 MongoDB 的不同功能,虚拟机配置如下:


0?wx_fmt=jpeg


 性能结果示例


我们通过调整参数进行了多次测试,以验证各参数对性能的影响。基于这些性能结果,我们可以调整 MongoDB 和 vSAN 并获得最佳实践。


对于每次测试,我们使用雅虎的 YCSB 基准测试工具,并针对 YCSB 中的工作负载 A 和工作负载 B 运行:


  • 工作负载A(重更新工作负载):50%/50% 的读写组合

  • 工作负载B(读为主工作负载):95%/5% 的读写组合


以下是各参数调整如何影响整体性能的两个示例。


第一个性能示例的是 MongoDB 的不同 “持久性选项” 的影响。我们在所有测试中始终启用 MongoDB 的 journal 日志。但是,更新操作并不一定需要 journal 确认:


  • 如果更新操作需要 journal 确认,我们称之为 “为持久性优化”,在此情况下,设置 MongoDB 连接 URL 选项 “w = 1” 和 “j = 1”。

  • 如果更新操作只需要内存确认而不是 journal 确认,则称为 “为平衡优化”,在此情况下,设置 MongoDB 连接 URL 选项 “w = 1” 和 “j = 0”。

  • 如果更新操作根本不需要确认,我们称之为 “为最大吞吐量优化”,在此情况下,设置 MongoDB 连接 URL 选项 “w = 0” 和 “j = 0”。结果如下图所示:


工作负载 A:

0?wx_fmt=png0?wx_fmt=png


工作负载 B:

0?wx_fmt=png0?wx_fmt=png


我们可以看到,对于工作负载 A 和 B,持久性选项对性能有不同的影响。因此,用户在实际应用中应该在性能和数据持久性之间的权衡,并根据需要选择适当的 “w” 和 “j” 选项。


第二个例子描述了 MongoDB 集群扩展时的性能。我们采用的是 4 个物理主机,但是我们可以根据需求调整 MongoDB 虚拟机的数量,扩展 MongoDB 的集群。 结果如下图所示:


工作负载 A:

0?wx_fmt=png0?wx_fmt=png


工作负载 B:

0?wx_fmt=png0?wx_fmt=png


我们可以看到,对于工作负载 A 和 B,每秒操作数 (ops/sec) 随着 MongoDB 节点从 2 增长到 8 而增加。读取延迟和更新延迟也会增加,但更新延迟增加得更加明显。


这里只是举了两个例子。在参考架构全文中,有关于其它各种参数设置和性能的结果图。


 故障测试


从 MongoDB 副本集设置的角度,测试分为两部分:


  • 启用 MongoDB 副本集,这意味着在每个 MongoDB 副本集中有三个虚拟机,因此我们在下文中使用 “rs = 3” 表示。

  • 禁用 MongoDB 副本集,这意味着在每个 MongoDB 副本集中只有一个虚拟机,因此我们在下文中使用 “rs = 1” 表示。


另外,从故障发生的角度,我们模拟了两种故障:


  • 物理主机故障。在此情况下,在其上的所有正在运行的虚拟机都将断电关闭。当主机出现故障时,VMware vSphere High Availability (HA) 将在另一台主机上重新启动受影响的虚拟机。这是在 MongoDB 副本集设置为 “rs = 1” 时,仍然可以保持服务高可用性的原因。

  • vSAN数据存储中的物理磁盘故障。这将导致 vSAN 对象进入降级状态。但是我们默认使用设置为 FTT=1 的存储策略,使得对象仍然可以存活并提供 I/O。因此,从虚拟机的角度来看,服务没有任何中断。


下表总结了故障测试结果,并总结了故障恢复方法:


0?wx_fmt=jpeg


 最佳实践


根据性能测试和故障测试结果,我们得出以下最佳实践:



  • 在部署前,确定数据库大小和所需的性能级别。这将确保硬件正确规划,并且软件设置是最适合服务要求的。

  • 始终使用MongoDB的分片机制,使用多个虚拟机来分担工作负载。

  • 可以选择关闭MongoDB的副本集机制,因为vSphere HA和vSAN的FTT可提供高可用性和数据保护。

  • 配置MongoDB使用的虚拟机的虚拟CPU和内存时,选择合适的CPU和内存大小,从而能够最适合用户需求。

  • 选择合适的数据持久性选项以满足数据持久性要求。需要在性能和潜在的数据丢失之间进行权衡,设置适当的写入确认值。

  • 对于vSAN策略设置,可尝试使用较大的条带宽度来实现更好的性能。

  • 对于vSAN对象校验和,用户可以在性能和数据完整性之间进行权衡。禁用校验和可以产生更好的性能。

  • 确保连接到MongoDB集群的客户端数量适中,因为太多客户端线程会导致更高的延迟。

  • 遵循MongoDB生产环境说明(MongoDB Production Notes)。



 总 结 


在 vSAN 上运行 MongoDB 是一个可行的解决方案。我们不仅可以获得良好的性能水平,还可以享受超融合基础设施(HCI)的优势。我们进行了各种性能测试,以验证在 vSAN 上运行 MongoDB 时如何调整参数以及它们的影响。此外,故障和弹性测试表明,该解决方案是健壮的,它可以容忍不同类型的故障。



---End---

留言点赞获赠书 | vSAN架构细节(5) - vSAN I/O流》的结果公布如下:

名流、mihoutao、Zeus、Jason、城市小农、陳奧勳、涂杰克、2017。

以及细心指出遗漏的 江湖一孤猪


0?wx_fmt=png


0?wx_fmt=png



0?wx_fmt=png


除了两位至今未返回联系方式和地址的朋友,其他将陆续收到赠书,其中mihoutao获赠两本,将同时收到《vSAN权威指南(第2版)》和《企业级数据中心现代化技术与实践》。


vForum 2017视频回看的地址 以及 vSAN架构细节(4) - 磁盘格式


点击左下角“阅读原文”,可以官微 VMware研发中心的原文《在 vSAN 上部署、管理和运行 MongoDB 实例》。

扩展阅读:

Kubernetes 、MongoDB和VMware vSAN在一起,会发生什么呢?

SQL Server在VMware vSAN上的性能测试 (合集,共三篇)

SQL Server在全闪存架构Virtual SAN上的性能测试(上)

SQL Server在全闪存架构Virtual SAN上的性能测试(下)

SAP HANA跑在全闪存VSAN上?性能如何呢?(上)

Virtual SAN ROBO架构在真实场景下的性能测试


阅读更多
想对作者说点什么? 我来说一句

VSAN6.6要点与最佳实践

2017年08月09日 7.15MB 下载

没有更多推荐了,返回首页

不良信息举报

赠书名单公布 & 在 vSAN 上部署、管理和运行 MongoDB 实例

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭