WSFC与DFS
WSFC里面的文件服务器群集,文件始终是一份,数据始终存放在群集磁盘中,通过群集来维持文件服务器这项服务始终持续可用,在2012之前同一时间WSFC只能有一台节点对外提供文件服务,2012开始群集引入SOFS,同一时间多个节点都可以对外提供服务,但是注意,数据仍然是一份,2012是根据服务器连接随机决定访问到的节点,2012R2开始根据share目录来决定随机访问到的节点,即是说,数据还是一份,只不过后来多个节点同时对外提供服务,但都是访问的不同节点。
相比较而言,WSFC文件服务器群集是一种高可用架构,DFSR则是一种复制架构,同一份数据会被复制到多个成员服务器上,然后用户通过DFSN的一个逻辑名称去访问复制目标,后台由DFSR机制去驱动数据复制
每种方案都有自己的利弊,用户在实际环境使用时可以根据需要选择适用于自己的方案
DFS:适用于存放文件,应用,图片,等小文件,DFS复制不适用于复制打开后不会关闭的文件,例如VM,SQL文件,DFS复制最好是结果集文件,不建议频繁增删改的目录进行DFS复制,DFS复制通过DFS特有机制实现,管理员需要熟悉DFS复制原理,通过DFS可以针对复制时间进行控制,可以和AD集成控制不同站点子网客户端定位不同DFSR服务器,当侦测到一台DFSR成员服务器宕机,DFS可以自动完成切换,复制期间所有DFSR成员服务器都可以读写。
WSFC 传统文件服务器群集:简称TFSC(Traditional file server cluster),不同于DFS,如果将文件共享部署为TFSC架构,那么同一时间将只有一台节点对外提供服务,另外节点待命,当对外提供服务节点宕机,其它节点完成故障转移,TFSC支持和BranchCache整合,利用缓存提高用户对文件的访问速度,如果用户比较熟悉WSFC,那么可以考虑使用WSFC架构来为运营文件服务器群集,文件集中存放在共享存储,如有必要可以针对共享存储进行统一备份,不需要再单独学习其它功能。理论上来说传统文件服务器群集支持存放文件,应用,图片,大文件,数据库文件,虚拟机磁盘文件,ISO等,但是针对于数据库文件,虚拟机磁盘文件最佳还是建议存放至SOFS目录,因为可以结合SMB witness,DNS轮询等技术实现所有节点的AA架构,再配合SMB多通道,RDMA技术,性能更好,故障转移时间更短,TFSC只能做到AP架构。
WSFC 横向扩展文件服务器群集:简称SOFS(Scale-Out File Server),它最大的优势就是可以实现所有节点的AA模式,同一时间所有节点都可以对外提供服务,这样带来的好处就是故障转移时间更短,仅是一个重定向服务器的过程,对于存放虚拟机,数据库文件,性能更好,它的劣势就是对于信息工作者的文件,例如文档,图片等小文件并不适用于,这类文件在SOFS上面性能会缓慢,有时还会出现问题,因为SOFS不支持文件服务器的任何缓存,SOFS目前为止还是专门为虚拟机,数据库文件设计。
从归档的角度来说不论是SOFS还是TFSC都可以存放虚拟机磁盘文件,数据库文件,但是从正在使用的角度来说,假如是正在使用的虚拟机或数据库,则还是SOFS更加实用,因为SOFS底层是CSV,TFSC底层直接是群集磁盘,当发生故障转移时TFSC需要经过卸载挂载磁盘过程,SOFS底层是CSV,因此故障时间要短很多。
存储复制:Windows Server 2016新增技术,DFS复制是文件目录级别,存储复制是分区级别,DFS只支持复制关闭的文件,存储复制无此限制,DFS是分布式的,各个节点都可以读取,存储复制备站点暂时不可以读取,DFS可以提供统一对外名称,名称访问与复制功能分离,存储复制不提供统一对外名称,DFS主要用于复制关闭的文件,信息工作者文件,存储复制主要用于Hyper-V,SQL,文件服务器,大文件,私有云场景,存储复制可以在单机场景下帮我们保证分区级别的数据复制,也可以在群集场景下和WSFC整合,帮助我们跨站点的复制群集磁盘,保证计算+存储的双重高可用。
具体大家可以根据自身的场景选择合适的方案
上面我们说了一下WSFC和DFS以及最新的存储复制,所适用的不同场景,接下来我们再看WSFC和DFS的契合点
WSFC和DFS有关系的地方有三点
DFS独立根命名空间群集角色
DFS复制群集,通过DFS群集向外面成员服务器复制
文件共享见证
之前老王曾经有篇文章和大家提到过DFS的一些基础知识,故不再做过多赘述,简单来说DFS命名空间有两种,一种是域命名空间,这种架构,当用户访问的时候会通过域控制器查询命名空间服务器,根据算法挑选一台节点进行访问,当一台域命名空间服务器宕机,自动切换至其它节点,另外一种是独立根命名空间,这种架构就是我们不把命名空间数据写入域数据库中,可以选择单机或群集,用户每次查询DFS路径时,由单机或群集来提供服务器路径,单机就是仅一台机器提供空间服务,群集就是我们在群集中创建一个独立根命名空间的角色,然后通过AP架构,同一时间只有一台节点提供命名空间查询,该节点宕机后切换至其它节点,由于根保留在群集中因此它具有高可用性。此外,存储在群集上的文件共享上的任何数据也是高度可用的,在此实现中使用DFS的价值在于名称空间和链接高度可用,但缺点在于故障转移切换时间对比域命名空间架构略长。
除了直接在群集中部署共享和DFS独立根命名空间角色外,我们也可以部署域命名空间架构,但是添加已经部署在群集里面的文件共享作为目标,这样既保证了文件共享的高可用,也利用域命名空间提供的快速切换。
DFS复制群集,国内比较冷门的一个场景,从Server 2008R2开始引入,其大概意思是在群集节点上面配置DFS复制目标,让群集作为复制组成员,将TFSC里面的共享复制到远程的单机DFS,或远程DFS群集,远程单机不知道我这面是单机或是群集,只知道来自这个群集计算机给我发送复制 或 我需要向它提供复制,但其实背后是经过群集引擎协调,当其中一个群集节点宕机,远程DFS依然可以和群集计算机复制,只不过已经切换到另外一个节点提供复制服务。
操作步骤如下
为每个群集节点安装文件服务器,DFS管理工具
为群集配置TFSC角色,向导将自动配置DFS复制服务以实现高可用性
输入客户端访问点,远程DFS将通过此名称连接群集DFS,
选择群集DFS要使用的群集共享磁盘
在TFSC主节点开启DFS管理工具
创建DFS复制组,选择复制模型,来源目标,复制策略
应用场景
中心收集:各个分支机构汇总数据复制到总部,总部目标是群集架构,数据存放总部共享磁盘统一备份
灾难恢复:核心业务除了在总部机构通过群集实现高可用,将文件服务器设计成群集DFS目标,并且复制一份数据到远程DFS
文件共享见证,老王之前看到一些国内博客在WSFC上面使用DFS复制来提供文件共享见证,看起来高可用,但其实这不是被推荐的做法
弊病体现在跨站点群集最明显,以下图为例,当前SiteA SiteB两个站点各自两个节点,站点间通过Server 2016存储复制实现存储HA,每个站点内部有两台DFS复制服务器,两个站点DFS目标服务器组成复制组进行复制,提供的复制路径作为群集文件共享见证。
这样运作看起来没问题,但一旦发生网络分区的情况,就会遇上脑裂,我的意思是指SiteA与SiteB站点网络上失去链接,两个站点各自都拥有到各自站点DFS目标见证的资格,因此两站点内的群集分区都会以为自己是可用的,每个站点都将正常执行SQL客户端连接和编写/更新数据库,当网络恢复正常,存储开始复制的时候,一个非常可能的结果是,一方写的所有内容现在都消失了,强制仲裁启动后,被强制启动的一方所更新的内容将完全盖过另外一方。
因此对于文件共享见证来说,在多站点的情况下,在每个站点放置DFS复制服务器是很危险的事情,极有可能会导致群集脑裂,到时候就不好玩了,因此群集文件共享见证,DFS非常有讲究,为了避免脑裂,可以选择仅部署DFSN不配置DFS复制,或在一个第三方站点部署DFS复制,当两个站点发生灾难的时候,谁能联系上第三个站点的DFS复制路径谁就能获得启动群集。
即便是在单站点数据中心内,如果要使用DFS复制作为群集文件共享见证,也一定要确保不会发生网络分区的情况,不会出现网络不通了但部分群集节点可以联系到一台DFS节点,部分节点可以联系到另外一台DFS节点的情况,否则在这段时间内其中一方产生的数据,会在下次网络恢复时被消失。
在WSFC 2008R2 - 2016中我们可以为群集指定经过复制或未经过复制的DFS路径作为文件共享见证,WSFC 2019开始配置文件共享见证时将进行IsAlive检测,一旦检测到是DFS路径,则直接报错,DFS路径在WSFC 2019中被直接禁止作为见证,WSFC 2019中可以选的见证架构:TSFC共享,单机共享,磁盘见证,云见证,具体大家可以根据自身环境,以及需要见证来完成的事情来选择合适的见证架构。
在WSFC2019之前,只要设计得当,仍然可以使用DFS路径作为文件共享见证,WSFC 2019之前微软只是说不推荐这样做,很大程度上会发生脑裂,但老王认为设计得当仍是可行的,因为文件共享见证里面仅用于存放群集数据库配置log,记载着当前那个节点的群集数据库paxos标记为最新,这个数据WSFC 2008之后是可以实时从各个节点捞的,节点更新群集数据之后会自动更新log至文件共享见证,即便共享里面log不是最新,也可以随时从节点上获取最新的配置数据 。
转载于:https://blog.51cto.com/wzde2012/2165660
WSFC与DFS的更多相关文章
- BZOJ 3083: 遥远的国度 [树链剖分 DFS序 LCA]
3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 1280 MBSubmit: 3127 Solved: 795[Submit][Status][Discu ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)
来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS Memory Limit: 65536 ...
- 深度优先搜索(DFS)
[算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...
- 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序
3779: 重组病毒 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 224 Solved: 95[Submit][Status][Discuss] ...
- 【BZOJ-1146】网络管理Network DFS序 + 带修主席树
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3495 Solved: 1032[Submi ...
随机推荐
- 1053 Path of Equal Weight (30分)(并查集)
Given a non-empty tree with root R, and with weight Wi assigned to each tree node Ti. The weig ...
- HDU1158:Employment Planning(暴力DP)
Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Flask 入门 (十一)
上篇文章讲的是一对多,这篇文章应该说多对多了 但是多对多无法用两张表来实现,因为外键......,你懂,哈哈哈!,所以中间需要加一张表来实现 承接上文,修改main.py中的代码如下: #encodi ...
- Vue-CLI 3.x 自动部署项目至服务器
前言 平时部署前端项目流程是:先部署到测试环境ok后再发布到生产环境上,部署到测试环境用 xshell 连上服务器,然后用 xftp 连接服务器,然后本地 build 项目,接着把 build 好的文 ...
- Array(数组)对象-->concat() 方法
1.定义和用法 concat() 方法用于连接两个或多个字符串. 语法: string.concat(string1, string2, ..., stringX) 举例: var str1='hel ...
- std::string::insert函数
string& insert (size_t pos, const string& str); string& insert (size_t pos, const string ...
- C语言折半查找法练习题冒泡排序
C语言折半查找法练习题 折半查找法: 折半查找法是效率较高的一种查找方法.假设有已经按照从小到大的顺序排列好的五个整数num[0]~num[4],要查找的数是key,其基本思想是: 设查找数据的范围下 ...
- 新手必须知道的13个Xcode小技巧
当谈论到iOS开发工具时,有一个肯定是所有iOS开发者都熟悉的,那就是Xcode.Xcode是使所有令人赞叹的iOS app成为可能的驱动力. Xcode能帮助我们完成非常多的事情,但是这也有点让人头 ...
- AJ学IOS(27)UI之iOSUIKit字符属性NSAttributedString概述
AJ分享,必须精品 UIKit字符属性NSAttributedString概述 字符属性 字符属性可以应用于 attributed string 的文本中. NSString *const NSFon ...
- Android MonkeyTalk测试
Android MonkeyTalk测试 MonkeyTalk可以用于压力测试,正因为这点所以才选择MonkeyTalk进行测试,相对于Monkey测试,目前个人发现的有点在于,MonkeyTalk是 ...