原文地址:
https://www.tinymind.net.cn/articles/98e64d56d38a52
笔者之前也分享过vSAN延伸集群的一些资料。在双活的设计中,站点之间带宽预估、脑列处理等问题,都是需要重点考虑的。本次向大家分享一下vSAN带宽带宽的设计原则。建议读者参照此前我分享过的《VMware的灾备与双活----我在vForum 2015分会场的分享(2)》一起进行阅读,这篇文章中已经包含的内容,本文将不再进行赘述。
一. 总体架构
vSAN延伸集群整体架构如下:一个有三个故障域,两个数据站点分别是一个故障域,仲裁站点是一个故障域。需要注意的是,vSAN延伸的三个故障域都属于是一个vSAN集群,而不是三个。
二.常规建议
两个数据站点之间的带宽很大程度上取决于vSAN承担的负载、总体数据量、可能的故障场景。
通常的建议参考如下:
(1)vSAN的数据站点之间,或者数据站点和仲裁站点之间的网络,二层和三层网络都可以支持,这降低了对大二层的要求。但是,我们推荐在数据站点之间使用二层网络。
(2)数据站点站点之间小于5ms之间的延迟(RTT)。数据站点与仲裁站点之间200的延迟不能超过200ms。
(3)数据站点和仲裁站点之间的带宽最不小于50-100Mbps.
(4)网络划分
管理网络:连接三个站点。二层或者三层网络
vSAN网络:连接三个站点。数据中心之间建议二层网络,与仲裁站点之间使用三层网络。
VM network:连接数据中心。建议二层网络,这样当虚拟机从一个数据站点vMotion或HA到另外一个数据站点时,IP地址不变。
vMotion网络:连接数据中心。二层,三层网络都可以。
三.数据站点之间的带宽需求
1.计算公式
在真实的业务场景中,全读或者全写的情况很少。更多的时候,用读写比率来衡量业务I/O特性是比较格式。以VDI场景的负载举例子。在负载峰值的情况下,读写比率通常是3:7。
例如:业务需要求IOPS的总量是10万,读写比率为3:7。由于vsan延伸集群本地读的特性,读操作不需要跨站点,因此考虑数据站点之间带宽只考虑跨站点写即可。
数据站点带宽计算公式是:
B=Wbmdmr
B:Bandwidth。数据站点之间的带宽。
WB:Write Bandwidth数据站点之间的写带宽。
MD: Data Multiplier:数据乘数
MR:Resynchronization multiplier 再同步乘数
其中,数据乘数由vSAN元数据跨站点写开销等相关的操作组成的(除了数据意外,元数据也需要跨站点写)。VMware建议将这个数值设置为1.4。
再同步乘数指的是数据站点之间同步事件(例如vSAN组件的状态信息)的所需要的总开销。这是数值VMware建议设置为1.25。再同步乘数和数据乘数其实都是跨站点写数据的额外开销。这两个数值使用vSAN推荐值即可。
2.案例分析
案例1.
vSAN运行一个IOPS为1万的全写负载业务。写的block为4KB。这需要消耗40MB/s的数据站点间的带宽(4KB*10000),也就是320Mbps。
按照上一小节的计算公式:
B=320Mbps1.41.25=560Mbps
因此,在这个负载情况下,vSAN数据站点之间需要的带宽至少应为560Mbps。
案例2.
vSAN运行负载为3万全写IOPS,4KB block size,这需要120MB/s(960Mbps)跨站点写数据吞吐量。
按照公式:
B=960Mbps1.41.25=1680Mbps约等于1.7Gbps.
因此,在这个案例中,数据站点之间的带宽至少应为1.7Gbps.
四.数据站点与仲裁站点之间的带宽需求
1.计算公式
数据站点并不存放虚拟机的数据,只是用于投票使用,因此数据站点与仲裁站点之间的带宽计算公式与上面的不一样。
我在之前的文章提到过,vSAN是基于策略驱动的分布式存储。数据是以对象的方式存储在vSAN中的,一个VM在vSAN存储中的数据由一个或者多个组件组成,组件有如下类型:
VM Folder
VMware swap file
VMDK
快照
在vSAN中,当一个对象的大小大于255GB的时候,就会被自动划分成多个组件。仲裁站点与数据站点之间的计算公式如下:
1138B*NumComp/5seconds
其中,1138B这个数字是:当主站点down,备站点接管所有组件所需要的时间。我们想象一下,当主站点down,备站点将成为master。仲裁站点将会向新的master发送确认信息,确认master的角色已经发生了变更。从本质上讲,1138B是当主站点down以后,仲裁站点需要从元数据信息中获取主站点上所有组件已经failed并且随后由备站点take ownership的状态信息更新开销。当主站点down以后,仲裁站点与数据站点之间的带宽应足以让集群中所有部件的master ownership变更在5秒内发变更完成。
2.案例分析
案例1:
虚拟机由如下内容组成:
三个对象:
VM namespace
VMKD(小于255GB)
VM Swap file
FTT=1
Stripe width=1
以上配置的虚拟机数量是166个,那么仲裁站点就需要获取到996个组件信息。996=321*166.
我们用1000进行计算:B=1138B81000/5s=1820800bps=1.82Mbps
VMware推荐预留10%的额外带宽用于信息双向传输:1.82*1.1=2Mbps。因此,在这个场景下,数据站点与仲裁站点的带宽应为2Mbps。
案例2:
虚拟机由如下内容组成:
三个对象:
VM namespace
VMDK(小于255GB)
VM Swapfile
此外:
FTT=1
Stripe width=2
如果具有以上配置的虚拟机数量为1500,那么仲裁站点将会维持18000个组件的状态信息。32211500=18000
按照案例1中的算法:
B=1138B818000/5s=32.78Mbps
B*1.2=36.05Mbps
因此,在这个场景下,数据站点与仲裁站点之间的带宽需要36.06Bbps。
根据上面的算法,可以提炼一个简单的公式用于在日常的评估,那就是2Mbps带宽可以维系1000个组件的状态信息。因此,在这个场景下,维系18000个组件,所需要的带宽是:18000/1000*2Mbps=36Mbps。
七.2-Node vSAN配置仲裁站点的带宽
在vSAN6.1中,支持2节点的vSAN集群。也就是我在< VMware的灾备与双活----我在vForum 2015分会场的分享(2)>中提到的vSAN延伸集群最小1+1+1,最大15+15+1的配置。
案例1:
2-Node配置中的虚拟机特性如下:虚拟机数量:25;VMDK/VM:1TB;FTT=1;Stripe width=1
上面我们提到过,vSAN中,一个vmdk组件最大为255G,因此每个VMDK由4个组件组成,此外由于FTT=1,在包含副本的情况下,每个vmdk由8个组件组成。加上VM namespace和swap文件(有副本),那么一个虚拟机的组件总数为12=42+22。25个虚拟机组件总量为300=2512。
使用通用公式:300/10002Mbps=600Kbps。因此,在这种场景下,数据站点与仲裁站点之间的带宽应为600Kbps。
案例2:
在2-Node配置中,每个主机上有100个虚拟机,每个虚拟机有1TB的VMDK,FTT和stripe width均为1。 那么,组件的总量为:(1000/255+1+1)2100(VMs)2(Hosts)=2400
按照通用公式,2400个组件,需要的带宽为2400/10002Mbps=4.8Mbps。因此在这个场景中,仲裁站点到数据站点之间的带宽需要4.8Mbps。
需要注意的是,如果一套vSAN延伸集群承担多个类型的业务负载,那么需要把这些业务负载先单独计算其需要的带宽,然后将其累加在一起。