29、Windows Server 2016 集群存储与高可用性技术详解

Windows Server 2016 集群存储与高可用性技术详解

在当今数字化的时代,服务器集群的高可用性和数据存储管理至关重要。Windows Server 2016 提供了一系列强大的功能来满足这些需求,下面将详细介绍其中的一些关键技术。

1. 跨站点集群与存储复制

假设有一个包含四个节点的集群,使用同一数据集。其中两个节点位于纽约的分支机构,另外两个位于旧金山的总部。纽约的节点作为故障转移备份,以防旧金山办公室遭遇灾难。

每个站点为其两个节点提供共享存储,但无法访问对方站点的存储,这被称为非对称存储。为了使两个站点成为真正的故障转移集群,它们必须拥有相同的数据。Storage Replica 可以在两个站点之间同步或异步复制数据。

2. 云见证的实现

云见证是故障转移集群的一种新型仲裁见证方式。与将见证存储在磁盘或文件共享上不同,它存储在 Windows Azure 存储账户的云中。其功能是确保即使集群中一半的节点出现故障或处于脑裂状态,集群仍能继续运行。

在以往的故障转移集群中,当集群在两个站点之间平均分割时,必须将见证存储在其中一个站点,这实际上就指定了一个主站点和一个次站点。另一种选择是在另一个位置创建第三个站点,专门使用一台服务器来存储见证,但这成本高昂。

在 Windows Server 2016 的故障转移集群中,如果见证存储在云中,只要幸存的集群能够连接到互联网以获取见证投票,那么无论哪一半集群出现故障,另一半都可以继续运行。微软建议在所有节点都能访问互联网的故障转移集群中使用云见证。

创建云见证的步骤:
  1. 创建存储账户
    • 在 Azure 门户中,选择“新建”|“存储”|“存储账户”。
    • 在“名称”字段中,为账户输入一个名称。
    • 在“账户类型”下拉列表中,选择“Blob 存储”。
    • 在“复制”下拉列表中,选择“本地冗余存储 (LRS)”。
    • 点击“创建”。
    • 当存储账户创建完成后,在 Azure 仪表板上选择它并点击“密钥”图标。
    • 记录页面上显示的以下信息,用于配置见证:
      • 存储账户名称
      • 密钥
      • Blob 服务端点
  2. 配置集群使用云见证
    • 在故障转移集群管理器中,在集群的主页面上,选择“更多操作”|“配置集群仲裁设置”,启动“配置集群仲裁向导”。
    • 在“选择仲裁配置选项”窗格中,选择“选择仲裁见证”选项。
    • 在“选择仲裁见证”页面上,选择“配置云见证”。
    • 在“配置云见证”页面上,输入从 Azure 门户收集的信息。
    • 点击“完成”。

使用 PowerShell 配置云见证的命令示例:

set-clusterquorum -cloudwitness -accountname clusterstorage1 -accesskey oyhmhpi1x9q5htonrcxhcnpz0xzw2zgf49lgdwmexn5lr7xcdrenuxtlxujdpfwcqckn
3. 虚拟机弹性的实现

集群的主要目的是提供能够在灾难性事件发生时仍能继续运行的服务。然而,在当今环境中,局部的临时故障比重大灾难更频繁发生。因此,Windows Server 2016 故障转移集群版本通过多种方式增强了单个虚拟机的弹性。

集群节点通常需要持续通信,但单个虚拟机临时与集群失去联系的情况很常见。可能的原因包括:虚拟机上的集群服务因内存或软件问题而关闭;由于驱动程序或 IP 寻址问题导致网络通信中断;或者网络电缆损坏或被拔出。

为了帮助管理员解决这些问题,Windows Server 2016 引入了新的虚拟机状态,在故障转移集群管理器中显示为角色或节点的状态:
- 未监控 :表示拥有某个角色的虚拟机未被集群服务监控。
- 隔离 :表示节点当前不是集群的活跃成员,但仍拥有一个角色。在临时故障期间,虚拟机首先进入隔离状态,从活跃集群中移除后进入未监控状态。
- 隔离检疫 :表示节点在一小时内离开并重新加入集群三次后,其角色被清空,并在指定的时间内从集群中移除。

可以使用 Windows PowerShell 中的以下设置来配置集群使用这些状态的方式:
| 设置名称 | 说明 | 默认值 |
| ---- | ---- | ---- |
| ResiliencyLevel | 值为 1 时,仅当节点提供与集群断开连接的已知原因时,才启用隔离状态;否则,节点立即失败。值为 2(默认值)时,允许自由使用隔离状态,并允许节点有时间恢复。 | 2 |
| ResiliencyDefaultPeriod | 指定整个集群中的节点允许在隔离状态下停留的时间(以秒为单位)。 | 240 |
| ResiliencyPeriod | 指定特定组中的节点允许在隔离状态下停留的时间(以秒为单位)。值为 -1 时,该组将恢复为 ResiliencyDefaultPeriod 设置。 | 240 |
| QuarantineThreshold | 指定节点在一小时内可以经历的故障次数,超过该次数将进入隔离检疫状态。 | 3 |
| QuarantineDuration | 指定节点处于隔离检疫状态的时间长度(以秒为单位)。 | 7200 |

以下是使用 PowerShell 设置这些参数的示例:

(get-cluster).resiliencylevel = 2
(get-cluster).resiliencydefaultperiod = 240
(get-clustergroup "group1").resiliencyperiod = 240
(get-cluster).quarantinethreshold = 3
(get-cluster).quarantineduration = 7200
4. 为来宾集群实现共享 VHDX 存储解决方案

在现有故障转移集群上创建来宾集群会使共享存储问题变得复杂。不过,可以使用物理集群提供的共享存储为来宾集群创建共享 VHDX 文件。

在这种场景中,有两个或多个物理 Hyper - V 服务器作为故障转移集群的节点。这些物理服务器通过 iSCSI、SAS 或光纤通道连接到共享存储硬件,共享存储配置为集群共享卷或 SMB 3.0 共享。

为了创建来宾集群,每个 Hyper - V 服务器托管一个虚拟机。可以在物理集群的 CSVs 上创建共享 VHDX 文件,以提供来宾集群所需的共享存储。

Windows Server 2016 支持两种类型的共享虚拟硬盘文件:
- VHDX :在 Windows Server 2012 R2 中引入,在共享存储基础架构上创建的 VHDX 文件可以在来宾集群的虚拟机之间共享。为了与现有集群保持向后兼容性,Windows Server 2016 仍然支持共享 VHDX 文件,但微软建议为新文件创建 VHD 集。
- VHD 集 :在 Windows Server 2016 中引入,由一个 260 KB 的 VHDS 文件(包含元数据)和一个 AVHDX 文件(包含实际数据)组成。VHD 集提供了在线调整大小的功能,并且支持基于主机的备份,而 VHDX 文件则不具备这些功能。

可以使用 Windows PowerShell 中的 Convert - VHD cmdlet 将 VHDX 文件转换为新的 VHD 集格式。示例命令如下:

convert-vhd -path disk.vhdx -destinationpath disk.vhds

创建新的共享 VHDX 或 VHD 集文件的步骤:
1. 在故障转移集群管理器中打开“设置”对话框。
2. 选择“SCSI 控制器”,选择“共享驱动器”,然后点击“添加”。
3. 启动并运行“新建虚拟硬盘向导”,与在非集群的 Hyper - V 服务器上操作相同。唯一的区别是有一个“选择磁盘格式”页面,在该页面上指定要创建 VHDX 还是 VHD 集文件。

5. Storage Spaces Direct 的实现

Storage Spaces Direct (S2D) 是软件定义存储技术的下一阶段,该技术最初在 Windows Server 2012 中以 Storage Spaces 的形式出现在服务器中。Storage Spaces 可以创建包含多个物理磁盘驱动器空间的池,然后从池化存储中创建虚拟磁盘,而不受物理磁盘边界的限制。Storage Spaces Direct 在集群环境中提供了相同类型的服务,使得可以使用集群节点内的标准本地 SAS、SATA 或 NVMe 驱动器创建共享存储池。首次无需购买昂贵的外部存储阵列即可部署故障转移集群。

5.1 确定实施 Storage Spaces Direct 的场景要求

虽然 Storage Spaces Direct 提供了许多与 Storage Spaces 相同的好处,如数据冗余和分层存储,并且使用标准的现成磁盘驱动器和常见的网络组件以软件方式实现,但它也有一些特殊要求:
- 服务器 :一个 Storage Spaces Direct 集群最多可以由 16 个节点和最多 400 个驱动器组成。尽管 S2D 可以使用标准组件运行,但集群中的服务器必须能够支持大量驱动器和多个网络接口。
- 磁盘驱动器 :S2D 集群中节点的推荐驱动器配置是至少有六个驱动器,其中至少有两个固态硬盘 (SSD) 和至少四个硬盘驱动器 (HDD)。无论驱动器外壳是内部还是外部形式,都不能有无法禁用的 RAID 或其他智能功能。S2D 提供容错和高性能,竞争的硬件只会对集群的整体功能产生负面影响。为了让 S2D 检测并使用这些磁盘,磁盘必须初始化(通常使用 GPT),但不能进行分区。有分区或卷的磁盘将不被视为可用于 Storage Spaces Direct。
- 网络 :Storage Spaces Direct 的关键是软件存储总线,这是一个逻辑网络通道,连接所有集群节点中的本地数据驱动器。该总线理论上位于服务器和内部磁盘驱动器之间。由于 S2D 从不同计算机的内部存储创建一个池,所有存储流量都通过使用 SMB3 和 RDMA 的标准以太网网络传输。没有传统的存储网络结构,如 SAS 或光纤通道,消除了距离限制和对不同类型电缆的需求。然而,流量管理因此成为任何生产 S2D 集群部署的关键部分。物理实现的逻辑软件存储总线必须像处理单个实体一样传输各个集群节点中的磁盘数据。此外,网络必须承载从池中创建的虚拟磁盘的镜像和奇偶校验安排生成的冗余数据。因此,高效的 S2D 性能需要节点内以太网通信提供高带宽和低延迟。在物理层,微软建议每个节点至少使用两个 10 Gbps 以太网适配器,最好是使用 RDMA 的适配器,以便它们可以减轻服务器的部分处理器负担。S2D 使用 Server Message Block 版本 3 (SMB3) 进行集群节点之间的通信,并尽可能采用该协议的高级功能,如 SMB Direct 和 SMB 多通道。

5.2 使用 Windows PowerShell 启用 Storage Spaces Direct

使用 Storage Spaces Direct 的集群的大部分部署过程与其他集群几乎相同。需要在集群节点上安装 Windows Server 2016,进行相同的更新,添加故障转移集群功能和 Hyper - V 节点,然后创建集群。

与标准过程的一个重要区别是,虽然可以使用故障转移集群管理器中的图形化“创建集群向导”创建集群,但必须阻止系统自动搜索并添加存储。因此,必须使用 Windows PowerShell 创建集群,示例命令如下:

new-cluster -name cluster1 -node server1,server2,server3,server4 -nostorage

NoStorage 参数很重要,缺少存储会在创建集群时产生错误。当启用 Storage Spaces Direct 时将添加存储。为此,可以不使用任何参数运行 Enable - ClusterStorageSpacesDirect cmdlet:

enable-clusterstoragespacesdirect

这个 cmdlet 执行了对 S2D 部署至关重要的几个任务:
- 定位磁盘 :系统扫描集群中的所有节点,查找本地未分区的磁盘。
- 创建缓存 :系统根据每个节点中磁盘的总线和介质类型对其进行分类,并在它们之间建立绑定,以在每个服务器中创建使用较快磁盘进行读写缓存的配对。
- 创建池 :系统将所有节点中的所有可用磁盘添加到一个全集群范围的存储池中。

创建存储池后,可以在其上创建虚拟磁盘(就像在独立服务器的服务器管理器中的 Storage Spaces 中一样)。在故障转移集群管理器中,选择存储池,然后启动“新建虚拟磁盘向导 (Storage Spaces Direct)”。在向导中指定大小,它将使用默认的双向镜像弹性设置创建磁盘。

不过,S2D 虚拟磁盘可以支持简单、镜像和奇偶校验弹性类型,以及自定义存储分层。为了在创建虚拟磁盘时获得更多的灵活性,可以使用 Windows PowerShell 中的 New - Volume cmdlet。这个 cmdlet 可以在一步中执行以前需要多个单独操作才能完成的任务,包括创建、分区和格式化虚拟磁盘,将其转换为 CSVFS 文件系统,并将其添加到集群中。

例如,要创建一个使用奇偶校验弹性和两个分层(SSD 的默认友好名称为“Performance”,HDD 的默认友好名称为“Capacity”)的虚拟磁盘,可以使用以下命令:

new-volume -storagepool "s2d*" -friendlyname vdisk1 -filesystem csvfs_refs -resiliencysettingname parity -storagetiersfriendlynames performance, capacity -storagetiersizes 10gb, 100gb

创建虚拟磁盘后,可以将它们添加到集群共享卷中,以便在每个节点中都可以访问。

5.3 在集群中实现分离式 Storage Spaces Direct 场景

在微软定义的两种部署场景中,Storage Spaces Direct 的指定应用是支持 Hyper - V 集群。在第一种场景(称为分离式或融合式部署)中,有两个不同的集群。第一个是使用 Storage Spaces Direct 为第二个集群(托管虚拟机的 Hyper - V 集群)提供存储的横向扩展文件服务器集群。

在这种场景中,S2D 集群的功能是为 Hyper - V 集群的虚拟机提供所需的存储。因此,S2D 本质上是 SAN 的替代品。由于它需要两个单独的集群,这种模型需要更多的服务器,因此实施成本更高。然而,这种部署类型的优点是 S2D 集群和 Hyper - V 集群可以独立扩展。

Storage Spaces Direct 创建了一个高度可扩展的环境,可以向节点添加驱动器或向集群添加节点。无论哪种方式,S2D 都会将检测到的任何新存储整合到池中。在分离式部署中,可以向 S2D 集群添加存储而不影响 Hyper - V 集群,同样,可以向 Hyper - V 集群添加节点而不影响存储基础架构。

实现分离式场景的步骤:按照前面描述的方法创建集群、启用 S2D、创建虚拟磁盘并将它们添加到 CSVs 中。然后添加横向扩展文件服务器角色,以完成存储集群的配置。第二个集群是一个标准的 Hyper - V 集群,使用 SoFS 集群提供的共享来存储其虚拟机。

5.4 在集群中实现超融合式 Storage Spaces Direct 场景

第二种 Storage Spaces Direct 场景称为超融合式,因为它将 Storage Services Direct 与 Hyper - V 集成在一个集群中。这种解决方案涉及的硬件更少,产生的网络流量也更少,成本更低,维护也更简单。无需配置文件服务器权限或监控两个集群。

在 Windows Server 2016 中,为了测试和教育目的,可以在单个 Hyper - V 服务器上创建超融合式 S2D 集群。安装故障转移集群和 Hyper - V 后,可以创建两个或多个带有多个 VHDX 文件的虚拟机,对它们进行集群化,并启用存储。

综上所述,Windows Server 2016 的这些集群存储和高可用性技术为企业提供了强大而灵活的解决方案,可以根据不同的需求和场景进行选择和配置,以确保服务器系统的稳定运行和数据的安全存储。

Windows Server 2016 集群存储与高可用性技术详解

在前面的内容中,我们详细介绍了 Windows Server 2016 中关于跨站点集群、云见证、虚拟机弹性、共享 VHDX 存储以及 Storage Spaces Direct 等技术。接下来,我们将通过流程图和更深入的分析,进一步梳理这些技术的关键要点和操作逻辑。

6. 关键技术流程梳理
6.1 云见证配置流程
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B(创建 Azure 存储账户):::process
    B --> B1(选择“新建”|“存储”|“存储账户”):::process
    B1 --> B2(输入账户名称):::process
    B2 --> B3(选择“Blob 存储”):::process
    B3 --> B4(选择“本地冗余存储 (LRS)”):::process
    B4 --> B5(点击“创建”):::process
    B5 --> B6(选择存储账户并点击“密钥”图标):::process
    B6 --> B7(记录存储账户名称、密钥、Blob 服务端点):::process
    B7 --> C(配置集群使用云见证):::process
    C --> C1(在故障转移集群管理器中选择“更多操作”|“配置集群仲裁设置”):::process
    C1 --> C2(选择“选择仲裁见证”选项):::process
    C2 --> C3(选择“配置云见证”):::process
    C3 --> C4(输入从 Azure 门户收集的信息):::process
    C4 --> C5(点击“完成”):::process
    C5 --> D([结束]):::startend

这个流程图清晰地展示了从创建 Azure 存储账户到配置集群使用云见证的完整过程。每一个步骤都紧密相连,确保集群能够顺利使用云见证来提高高可用性。

6.2 Storage Spaces Direct 启用流程
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B(安装 Windows Server 2016 并更新):::process
    B --> C(添加故障转移集群功能和 Hyper - V 节点):::process
    C --> D(使用 PowerShell 创建集群):::process
    D --> D1(执行命令: new - cluster - name cluster1 - node server1,server2,server3,server4 - nostorage):::process
    D1 --> E(启用 Storage Spaces Direct):::process
    E --> E1(执行命令: enable - clusterstoragespacesdirect):::process
    E1 --> F(定位磁盘):::process
    F --> G(创建缓存):::process
    G --> H(创建存储池):::process
    H --> I(创建虚拟磁盘):::process
    I --> J(添加到集群共享卷):::process
    J --> K([结束]):::startend

此流程图展示了启用 Storage Spaces Direct 的详细步骤。从服务器的基础安装和配置,到最终创建虚拟磁盘并添加到集群共享卷,每一步都对实现高效的软件定义存储至关重要。

7. 技术对比与选择
技术名称 优点 缺点 适用场景
跨站点集群与存储复制 提供异地备份,增强数据安全性和可用性 涉及跨站点通信,可能存在网络延迟问题 对数据安全性要求高,需要异地容灾的企业
云见证 降低成本,提高集群在脑裂状态下的可用性 依赖互联网连接 所有节点都能稳定访问互联网的集群环境
虚拟机弹性 增强单个虚拟机应对临时故障的能力 配置相对复杂 经常出现局部临时故障的环境
共享 VHDX 存储 为来宾集群提供共享存储解决方案 可能存在存储性能瓶颈 在现有故障转移集群上创建来宾集群的场景
Storage Spaces Direct 无需昂贵外部存储阵列,可扩展性强 对服务器和网络有一定要求 需要高效软件定义存储的大规模集群环境

通过这个表格,我们可以清晰地看到不同技术的优缺点和适用场景。企业在选择时,可以根据自身的实际需求、预算和基础设施情况进行综合考虑。

8. 操作要点总结
8.1 云见证操作要点
  • 创建 Azure 存储账户时,要确保选择正确的账户类型和复制方式,避免数据丢失或冗余不足。
  • 记录存储账户的关键信息(存储账户名称、密钥、Blob 服务端点)时,要准确无误,以免配置集群时出现错误。
  • 使用 PowerShell 配置云见证时,要注意命令的准确性,特别是参数的设置。
8.2 Storage Spaces Direct 操作要点
  • 创建集群时使用 -nostorage 参数,防止系统自动添加存储导致错误。
  • 启用 Storage Spaces Direct 后,要关注磁盘定位、缓存创建和存储池创建的过程,确保系统正常识别和配置磁盘。
  • 创建虚拟磁盘时,可以根据需求选择不同的弹性类型和存储分层,以满足性能和容量的要求。
9. 总结与展望

Windows Server 2016 的这些集群存储和高可用性技术为企业提供了丰富的选择,能够满足不同规模和需求的服务器环境。通过合理配置和使用这些技术,企业可以提高服务器系统的稳定性、数据的安全性和业务的连续性。

随着云计算、大数据和人工智能等技术的不断发展,服务器集群的需求也在不断变化。未来,我们可以期待这些技术进一步优化和扩展,以更好地适应新的应用场景和挑战。例如,云见证可能会与更多的云服务集成,提供更强大的仲裁功能;Storage Spaces Direct 可能会支持更多类型的存储设备,提高存储性能和可扩展性。

企业在部署和应用这些技术时,要密切关注技术的发展动态,不断优化和调整配置,以确保服务器系统始终保持高效、稳定的运行状态。同时,也要加强对技术人员的培训,提高他们的技术水平和操作能力,为企业的数字化转型提供有力的支持。

内容概要:本文详细介绍了一个基于C++的养老院管理系统的设计实现,旨在应对人口老龄化带来的管理挑战。系统通过整合住户档案、健康监测、护理计划、任务调度等核心功能,构建了从数据采集、清洗、AI风险预测到服务调度可视化的完整技术架构。采用C++高性能服务端结合消息队列、规则引擎和机器学习模型,实现了健康状态实时监控、智能任务分配、异常告警推送等功能,并解决了多源数据整合、权限安全、老旧硬件兼容等实际问题。系统支持模块化扩展流程自定义,提升了养老服务效率、医护协同水平和住户安全保障,同时为运营决策提供数据支持。文中还提供了关键模块的代码示例,如健康指数算法、任务调度器和日志记录组件。; 适合人群:具备C++编程基础,从事软件开发或系统设计工作1-3年的研发人员,尤其是关注智慧养老、医疗信息系统开发的技术人员。; 使用场景及目标:①学习如何在真实项目中应用C++构建高性能、可扩展的管理系统;②掌握多源数据整合、实时健康监控、任务调度权限控制等复杂业务的技术实现方案;③了解AI模型在养老场景中的落地方式及系统架构设计思路。; 阅读建议:此资源不仅包含系统架构模型描述,还附有核心代码片段,建议结合整体设计逻辑深入理解各模块之间的协同机制,并可通过重构或扩展代码来加深对系统工程实践的掌握。
内容概要:本文详细介绍了一个基于C++的城市交通流量数据可视化分析系统的设计实现。系统涵盖数据采集预处理、存储管理、分析建模、可视化展示、系统集成扩展以及数据安全隐私保护六大核心模块。通过多源异构数据融合、高效存储检索、实时处理分析、高交互性可视化界面及模块化架构设计,实现了对城市交通流量的实时监控、历史趋势分析智能决策支持。文中还提供了关键模块的C++代码示例,如数据采集、清洗、CSV读写、流量统计、异常检测及基于SFML的柱状图绘制,增强了系统的可实现性实用性。; 适合人群:具备C++编程基础,熟悉数据结构算法,有一定项目开发经验的高校学生、研究人员及从事智能交通系统开发的工程师;适合对大数据处理、可视化技术和智慧城市应用感兴趣的技术人员。; 使用场景及目标:①应用于城市交通管理部门,实现交通流量实时监测拥堵预警;②为市民出行提供路径优化建议;③支持交通政策制定信号灯配时优化;④作为智慧城市建设中的智能交通子系统,实现其他城市系统的数据协同。; 阅读建议:建议结合文中代码示例搭建开发环境进行实践,重点关注多线程数据采集、异常检测算法可视化实现细节;可进一步扩展机器学习模型用于流量预测,并集成真实交通数据源进行系统验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值