我想在 MS Windows Server 2012 R2 环境中配置文件服务器,这将负载平衡流量。
我有一个带有 2 个 SAS 控制器的 SAS 磁盘阵列,它通过 4 个冗余 SAS 多路径连接到 2 个 Hyper-V 集群节点:
控制器1<->节点1,控制器1<->节点2,
控制器2 <-> 节点1,控制器2 <-> 节点2。
我不知道 SAS 负载平衡会引人注目如果我不平衡网络,这意味着网络上只有一台服务器处理所有文件 I/O 请求。平衡网络似乎很复杂,因为我不想有 2 个文件服务器具有相同的数据副本(磁盘阵列的 RAID 级别保证冗余)。我想要的是一堆数据拆分为两不相交的范围,每个范围单独的文件服务器(集群中一个节点上的每个虚拟服务器),充当单个服务器或 SMB 共享。
用户不应该知道哪些数据在服务器 A 或 B 上,SMB 路径应该是类似的\\domain.com\home\username
,\\domain.com\share\department
并且家庭或部门应该分布在两台服务器上(例如,第一台以“AP”开头的服务器,其余的服务器在第二台服务器上)。
我有一个中央网络核心交换机,每个集群节点都有 5 GB/s 的聚合链路。其余网络连接到此交换机(每个接入交换机通过 2 GB/s 链路连接,客户端通过 1 GB/s 链路连接)。
我的问题是:
- 如果我不进行网络负载平衡并保留 SAS 负载平衡,SAS 负载平衡是否会引人注目?
- 是否存在某种网络负载平衡集群技术可以帮助我实现上述结果?
- 我知道有很多因素取决于具体情况(例如最大同时连接数或单独的、可能是短连接的频率;读取操作是否占主导地位等等),但是是否存在一般最佳实践我应该尊重吗?
- 最简单(也可能是最好的)的方法难道不是不进行任何负载平衡并进行简单的管理吗?
编辑:
非常感谢!实际上,DFS 是我搜索的第一个想法之一,但最终的结果是,我想要的东西用 DFS 是不可能实现的。
玩了一段时间后,我得到了以下配置:
一个 DFS 命名空间 HOME,两个文件服务器都作为命名空间服务器添加到其中,因此每个服务器上都有一个名为“home”的共享,物理上位于“C:\DFSRoots\home”下。每个服务器上还有一个名为“home$”的隐藏基本共享文件夹,物理上位于磁盘阵列中。在第一台服务器的隐藏共享中,我看到了一半的 HOME,另一台服务器则看到了其余的 HOME。在家庭 DFS 共享(两台服务器的)中,我只看到链接(分布到隐藏共享),但指向所有 HOME。
当客户端连接根目录 (\domain.com\root) 时,DFS 命名空间服务器之一会响应客户端。在我的情况下,它始终是同一台服务器,因为我只有一个站点。但这并不重要,因为它只列出了 DFS 根目录的内容。当客户端导航到列出的链接之一时,DFS 会与隐藏文件夹目标(即服务器之一)建立连接,这样就完成了负载平衡。
这个配置是否正确、最佳?
最后一个问题是:SAS 通常比 LAN 快多少(例如通过 LACP 聚合的 5GB/s)?
答案1
您确实应该看看 Microsoft DFS 来实现您所说的功能。
它通过将所有数据集中在一个地方来抽象数据的物理位置。
例如,你会有:
- 2 个集群节点(FSCL1、FSCL2)
- 2 个集群文件服务(FS1、FS2),在上述节点上运行
- 2 个基于域的 DFS 命名空间 (HOMES、SHARES),托管在上述节点上
每个文件服务可以拥有任意数量的共享,您只需根据需要在 DFS 中为它们创建链接即可。
这是我工作的地方的设置方式。这可能不是最好的,但对我们来说非常实用。
我们的命名空间托管在专用服务器上,但这并不是真正的要求。这只是意味着 DFS 共享和目标共享之间不存在名称冲突。
在我们的文件服务器(FS1、FS2 等)上,我们使用挂载点作为数据卷,因为否则我们会用完字母(约 28 个数据卷、约 7 个挂载点根、实用程序卷和仲裁)。假设 FS1 有 2 个数据卷,我们会得到如下结果:
磁盘
挂载点根目录:2GB 卷分配为X:\
数据卷 1:2TB,挂载为X:\FS1_VOL1
数据卷 2:2TB,挂载为X:\FS1_VOL2
分享
在每个数据卷上,所有共享(无论是组共享还是用户共享)都有一个“基础”文件夹。
对于组共享:X:\FS1_VOL1\FS1_V1_SHARE
和X:\FS1_V2_VOL2\FS1_V2_SHARE
对于用户共享:X:\FS1_VOL1\FS1_V1_HOME
和X:\FS1_V2_VOL2\FS1_V2_HOME
然后将它们隐藏共享,以创建以下 4 个共享:
\\FS1.example.com\FS1_V1_SHARE$
\\FS1.example.com\FS1_V2_SHARE$
\\FS1.example.com\FS1_V1_HOME$
\\FS1.example.com\FS1_V2_HOME$
在这些共享内部,将根据需要存在任意数量的用户或组文件夹。
\\FS1.example.com\FS1_V1_SHARE$\HR
\\FS1.example.com\FS1_V2_SHARE$\Engineering
\\FS1.example.com\FS1_V1_SHARE$\Finance
\\FS1.example.com\FS1_V2_SHARE$\ITOPS
\\FS1.example.com\FS1_V1_HOME$\John.Public
\\FS1.example.com\FS1_V2_HOME$\Barak.Obama
\\FS1.example.com\FS1_V1_HOME$\Stephen.Harper
\\FS1.example.com\FS1_V2_HOME$\Paul.Smith
DFS
这就是负载平衡的所有“魔力”发生的地方。
如果您有大量共享/用户,您可能希望在命名空间中创建文件夹结构。我们刚刚创建了 26 个顶级文件夹,AZ。
然后,您可以在SHARE
命名空间中创建指向您的共享的链接,如下所示:
\\example.com\SHARE\H\HR => \\FS1.example.com\FS1_V1_SHARE$\HR
\\example.com\SHARE\E\Engineering => \\FS1.example.com\FS1_V2_SHARE$\Engineering
\\example.com\SHARE\F\Finance => \\FS1.example.com\FS1_V1_SHARE$\Finance
\\example.com\SHARE\I\ITOPS => \\FS1.example.com\FS1_V2_SHARE$\ITOPS
命名HOME
空间看起来如下:
\\example.com\HOME\P\John.Public => \\FS1.example.com\FS1_V1_HOME$\John.Public
\\example.com\HOME\O\Barak.Obama => \\FS1.example.com\FS1_V2_HOME$\Barak.Obama
\\example.com\HOME\H\Stephen.Harper => \\FS1.example.com\FS1_V1_HOME$\Stephen.Harper
\\example.com\HOME\S\Paul.Smith => \\FS1.example.com\FS1_V2_HOME$\Paul.Smith
当客户端浏览命名空间时,您说得对,他会被放在命名空间根服务器之一上。给定的客户端并不总是会停留在同一个服务器上,但他将缓存缓存会持续一段时间,在此期间所有操作都发生在同一系统上。缓存持续时间可在 DFS 管理单元中配置。在我们的环境中,我们看到根服务器之间的分布非常平滑。
这就是它的要点。
这意味着您需要为每一个分享/用户而且还为您提供了数据驻留位置的无限灵活性,同时使所有数据看起来都在同一个位置。