2020-03-03 VMwarevSAN双活(延伸集群)站点间带宽设计(转载)

如题所述

第1个回答  2022-07-01
原文地址:
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=Wb md mr

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=320Mbps 1.4 1.25=560Mbps

因此,在这个负载情况下,vSAN数据站点之间需要的带宽至少应为560Mbps。

案例2.

vSAN运行负载为3万全写IOPS,4KB block size,这需要120MB/s(960Mbps)跨站点写数据吞吐量。

按照公式:

B=960Mbps 1.4 1.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=3 2 1*166.

我们用1000进行计算:B=1138B 8 1000/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个组件的状态信息。3 2 2 1 1500=18000
按照案例1中的算法:
B=1138B 8 18000/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=4 2+2 2。25个虚拟机组件总量为300=25 12。
使用通用公式:300/1000 2Mbps=600Kbps。因此,在这种场景下,数据站点与仲裁站点之间的带宽应为600Kbps。
案例2:
在2-Node配置中,每个主机上有100个虚拟机,每个虚拟机有1TB的VMDK,FTT和stripe width均为1。 那么,组件的总量为:(1000/255+1+1) 2 100(VMs) 2(Hosts)=2400
按照通用公式,2400个组件,需要的带宽为2400/1000 2Mbps=4.8Mbps。因此在这个场景中,仲裁站点到数据站点之间的带宽需要4.8Mbps。
需要注意的是,如果一套vSAN延伸集群承担多个类型的业务负载,那么需要把这些业务负载先单独计算其需要的带宽,然后将其累加在一起。
相似回答