本文提供了 Azure Stack Hub 存储基础结构信息,可帮助你决定如何将 Azure Stack Hub 集成到现有网络环境中。 在提供有关扩展数据中心的常规讨论后,本文介绍了两种不同的方案。 可以连接到 Windows 文件存储服务器。 还可以连接到 Windows iSCSI 服务器。
将存储扩展到 Azure Stack Hub 的概述
在某些情况下,将数据置于公有云中是不够的。 也许你有计算密集型虚拟化数据库工作负荷、对延迟敏感以及公有云往返时间可能会影响数据库工作负荷的性能。 也许有本地数据,保存在文件服务器、NAS 或 iSCSI 存储阵列上,需要由本地工作负荷访问,需要驻留在本地以满足法规或合规性目标。 这些只是本地数据驻留的两种方案,对于许多组织来说仍然很重要。
那么,为什么不在 Azure Stack Hub 上的存储帐户中托管这些数据,或者托管在 Azure Stack Hub 系统上运行的虚拟化文件服务器中呢? 嗯,与在 Azure 中不同,Azure Stack Hub 存储是有限的。 可用的容量完全取决于你选择购买的每节点容量,以及你拥有的节点数。 由于 Azure Stack Hub 是一种 Hyper-Converged 解决方案,因此,如果希望扩展存储容量以满足使用需求,还需要通过添加节点来增加计算占用空间。 这可能会使成本过高,特别是当需要额外容量用于冷存档存储时,因为这些存储可以以低成本添加到 Azure Stack Hub 系统之外。
这让你了解了下面介绍的方案。 如何将 Azure Stack Hub 系统、在 Azure Stack Hub 上运行的虚拟化工作负荷连接到 Azure Stack Hub 外部的存储系统(可通过网络访问)。
用于扩展存储的设计
此图描绘了一种方案,其中,单个虚拟机、运行工作负荷、连接到外部(VM 和 Azure Stack Hub 本身)存储,以便进行数据读取/写入等。在本文中,你将重点介绍简单的文件检索,但你可以扩展此示例,了解更复杂的方案,例如数据库文件的远程存储。
              
              
            
在关系图中,你将看到 Azure Stack Hub 系统上的 VM 已使用多个 NIC 进行部署。 从冗余和存储最佳实践的角度来看,在目标和目的地之间拥有多条路径至关重要。 在更复杂的情况下,Azure Stack Hub 中的 VM 具有公共 IP 和专用 IP,就像在 Azure 中一样。 如果外部存储需要访问虚拟机,只能通过公共 IP 进行访问,因为专用 IP 主要用于 Azure Stack Hub 系统、vNet 和子网中。 外部存储无法与 VM 的专用 IP 空间通信,除非它通过站点到站点 VPN 来打入 vNet 本身。 因此,在本示例中,我们将重点介绍通过公共 IP 空间的通信。 关系图中公共 IP 空间需要注意的一点是,有 2 个不同的公共 IP 池子网。 默认情况下,Azure Stack Hub 只需一个池即可用于公共 IP 地址,但对于冗余路由,需要考虑的事项可能是添加另一个池。 目前,不能从特定池中选择 IP 地址,因此可能会导致多个虚拟网络卡上的 VM 使用来自同一池中的公共 IP 地址。
出于此讨论的目的,我们将假定边界设备和外部存储之间的路由得到处理,流量可以适当地遍历网络。 对于此示例,主干是否为 1GbE、10GbE、25 GbE 甚至更快无关紧要,但是,在规划集成时,请务必考虑这一点,以解决访问此外部存储的任何应用程序的性能需求。
连接到 Windows Server iSCSI 目标
在此方案中,我们将在 Azure Stack Hub 上部署和配置 Windows Server 2019 虚拟机,并准备连接到外部 iSCSI 目标,该目标也将运行 Windows Server 2019。 在适当情况下,我们将启用 MPIO 等关键功能,以优化 VM 与外部存储之间的性能和连接。
在 Azure Stack Hub 上部署 Windows Server 2019 VM
- 在 Azure Stack Hub 管理门户中,假设此系统已注册并已连接到市场,请选择“市场管理”,然后假设你还没有 Windows Server 2019 映像,从 Azure 中选择“添加”,然后搜索 Windows Server 2019,添加 Windows Server 2019 Datacenter 映像。   - 下载 Windows Server 2019 映像可能需要一些时间。 
- 在 Azure Stack Hub 环境中拥有 Windows Server 2019 映像后, 登录到 Azure Stack Hub 用户门户。 
- 登录到 Azure Stack Hub 用户门户后,请确保拥有套餐 的订阅,以便预配 IaaS 资源(计算、存储和网络)。 
- 订阅可用后,返回到 Azure Stack Hub 用户门户中的 仪表板 ,选择“ 创建资源”,选择“ 计算 ”,然后选择 Windows Server 2019 Datacenter 库项。 
- 在 “基本信息 ”边栏选项卡上,完成如下信息: - a。 名称:VM001 - b. 用户名:localadmin - c. 密码 和 确认密码: <所选密码> - d. 订阅: <所选订阅,包含计算/存储/网络资源>。 - e. 资源组:存储测试(新建) - f. 选择 “确定” 
- 在“ 选择大小 ”边栏选项卡上,选择 Standard_F8s_v2 ,然后选择“ 选择”。 
- 在“设置”边栏选项卡中,选择“创建虚拟网络”边栏选项卡中,将地址空间调整为 10.10.10.0/23,并将子网地址范围更新为 10.10.10.0/24,然后选择“确定”。 
- 选择“公共 IP 地址”,在“创建公共 IP 地址”边栏选项卡中,选择“静态”单选按钮。 
- 在“选择公共入站端口”下拉列表中,选择“RDP”(3389)。 
- 保留其他默认值,然后选择“ 确定”。   
- 阅读摘要,等待验证,然后选择 “确定 ”开始部署。 部署应在大约 10 分钟内完成。 
- 部署完成后,在 “资源 ”下选择虚拟机名称 VM001 以打开 “概述”。   
- 在 DNS 名称下,选择“ 配置 ”并提供 DNS 名称标签 ,vm001 并选择“ 保存”,然后选择 “VM001”。 
- 在“概述”面板的右侧,选择虚拟网络/子网文本下的 storagetesting-vnet/default 。 
- 在 storagetesting-vnet 边栏选项卡中,选择子网然后+子网,然后在新的添加子网边栏选项卡中输入以下信息,然后选择确定: - a。 名称:subnet2 - b. 地址范围(CIDR 块):10.10.11.0/24 - c. 网络安全组:无 - d. 路由表:无 
- 保存后,选择 VM001。 
- 在“概述”边栏选项卡左侧,选择“ 网络”。 
- 选择 “附加网络接口 ”,然后选择“ 创建网络接口”。 
- 在 “创建网络接口 ”边栏选项卡上,输入以下信息。 - a。 名称:vm001nic2 - b. 子网:确保子网为 10.10.11.0/24 - c. 网络安全组:VM001-nsg - d. 资源组:存储测试 
- 成功附加后,选择 VM001 ,然后选择 “停止 ”关闭 VM。 
- 停止 VM(已解除分配)后,在概述面板的左侧选择网络,选择附加网络接口,然后选择vm001nic2,最后选择确定。 稍后会将额外的 NIC 添加到 VM。 
- 仍在 “网络 ”边栏选项卡上,选择 “vm001nic2 ”选项卡,然后选择 “网络接口:vm001nic2”。 
- 在 vm001nic 接口边栏选项卡上,选择 IP 配置,然后在边栏选项卡的中心选择 ipconfig1。 
- 在 ipconfig1 设置边栏选项卡中,选择“公共 IP 地址”,然后选择“启用”,选择“配置所需设置”,选择“新建”,输入 vm001nic2pip 作为名称,选择“静态”,接着选择“确定”,最后选择“保存”。 
- 成功保存后,返回到 VM001 概述边栏选项卡,然后选择 “开始” 以启动配置的 Windows Server 2019 VM。 
- 启动后,在 VM001 中建立 RDP 会话 。 
- 在 VM 内连接后,打开 CMD (以管理员身份)并输入 主机名 以检索 OS 的计算机名称。 它应与 VM001 匹配。 请记下这一点供以后使用。 
在 Azure Stack Hub 上的 Windows Server 2019 VM 上配置第二个网络适配器
默认情况下,Azure Stack Hub 会将默认网关分配给附加到虚拟机的第一个(主)网络接口。 Azure Stack Hub 不会将默认网关分配给附加到虚拟机的其他(辅助)网络接口。 因此,默认情况下,无法与辅助网络接口位于子网外部的资源通信。 但是,辅助网络接口可以与其子网外部的资源通信,但启用通信的步骤因不同的作系统而异。
- 如果尚未建立连接,请建立到 VM001 的 RDP 连接。 
- 以管理员身份打开 CMD 并运行 路由打印 ,该输出应返回此 VM 中的两个接口(Hyper-V 网络适配器)。   
- 现在运行 ipconfig ,查看分配给辅助网络接口的 IP 地址。 在此示例中,10.10.11.4 分配给接口 6。 辅助网络接口没有返回任何默认网关地址。   
- 为了将所有发往辅助网络接口之子网范围外地址的流量路由到该子网的网关,请在 CMD 中执行以下命令: - route add -p 0.0.0.0 MASK 0.0.0.0 <ipaddress> METRIC 5015 IF <interface>- <ipaddress>是当前子网的 .1 地址,也是- <interface>接口号。  
- 若要确认添加的路由位于路由表中,请输入 路由打印 命令。   
- 还可以通过运行 ping 命令来验证出站通信: 
 - ping 8.8.8.8 -S 10.10.11.4
 标志- -S允许你指定源地址,在本例中,10.10.11.4 是 NIC 的 IP 地址,现在具有默认网关。
- 关闭 CMD。 
配置 Windows Server 2019 iSCSI 目标
出于此方案的目的,你将验证 Windows Server 2019 iSCSI 目标是在 Azure Stack Hub 环境外部的 Hyper-V 上运行的虚拟机的配置。 此虚拟机将配置 8 个虚拟处理器、单个 VHDX 文件,最重要的是,有两个虚拟网络适配器。 在理想情况下,这些网络适配器应具有不同的可路由子网,但在本次验证中,它们将位于同一子网上。
               
              
            
对于 iSCSI 目标服务器,它可以是 Windows Server 2016 或 2019、物理或虚拟,在 Hyper-V、VMware 或所选的备用设备(例如专用物理 iSCSI SAN)上运行。 主要关注点是 Azure Stack Hub 系统的内部和外部连接,然而,最好在源和目标之间设置多条路径,因为这不仅提供额外的冗余,还可以利用更高级的功能来提高性能,例如 MPIO。
建议在继续配置文件共享之前,使用最新的累积更新和修补程序更新 Windows Server 2019 iSCSI 目标,并在必要时重新启动。
更新并重新启动后,现在可以将此服务器配置为 iSCSI 目标。
- 打开 服务器管理器 并选择“ 管理”,然后选择 “添加角色和功能”。 
- 打开后,选择“ 下一步”,选择 “基于角色”或“基于功能”的安装,然后继续选择,直到到达 “选择服务器角色 ”页。 
- 展开 文件和存储服务,展开 “文件和 iSCSI 服务 ”并勾选 “iSCSI 目标服务器 ”框,接受任何弹出提示以添加新功能,然后继续完成。   - 完成后,关闭 服务器管理器。 
- 打开文件资源管理器,导航到 C:\ 并创建名为 iSCSI的新文件夹。 
- 重新打开 服务器管理器 ,然后从左侧菜单中选择 “文件和存储服务 ”。 
- 选择 iSCSI ,然后选择右窗格中的“若要创建 iSCSI 虚拟磁盘,请启动”新建 iSCSI 虚拟磁盘向导“链接。 选择它。 会弹出一个向导。 
- 在 “选择 iSCSI 虚拟磁盘位置 ”页上,选择 键入自定义路径 的单选按钮并浏览到 C:\iSCSI ,然后选择“ 下一步”。 
- 为 iSCSI 虚拟磁盘指定 iSCSIdisk1 的名称,并根据需要提供说明,然后选择“ 下一步”。 
- 将虚拟磁盘的大小设置为 10GB ,然后选择 “固定大小 ”,然后选择“ 下一步”。   
- 由于这是一个新目标,请选择 “新建 iSCSI 目标 ”,然后选择“ 下一步”。 
- 在 “指定目标名称 ”页上,输入 TARGET1 并选择“ 下一步”。 
- 在“ 指定访问服务器 ”页上,选择“ 添加”。 这将打开一个对话框,用于输入有权连接到 iSCSI 目标的特定 发起程序。 
- 在“添加发起程序ID”窗口中,选择“输入所选类型的值”,然后在“类型”下确保选中IQN。 输入 - iqn.1991-05.com.microsoft: ,其中- computername - computername - 是 - VM001 的计算机名称,然后选择- 下一步 。  
- 在 “启用身份验证 ”页上,将框留空,然后选择“ 下一步”。 
- 确认选择并选择“ 创建”,然后关闭。 应会看到在服务器管理器中创建的 iSCSI 虚拟磁盘。   
配置 Windows Server 2019 iSCSI 发起程序和 MPIO
首先,若要设置 iSCSI 发起程序,请重新登录到 Azure Stack Hub 系统上的 Azure Stack Hub 用户门户,并导航到 VM001的概述边栏选项卡。
- 建立与 VM001 的 RDP 连接。 连接后,打开 服务器管理器。 
- 选择 “添加角色和功能”,然后接受默认值,直到到达 “功能” 页。 
- 在 “功能 ”页上,添加 多路径 I/O ,然后选择“ 下一步”。   
- 如果需要,请 勾选“自动重启目标服务器 ”框,然后选择“ 安装”,然后选择“ 关闭”。 可能需要重新启动,因此完成后,重新连接到 VM001。 
- 返回 服务器管理器,等待 MPIO 安装完成,选择 关闭,然后选择 “工具 ”,然后选择 “MPIO”。 
- 选择“发现多路径”选项卡,勾选添加对 iSCSI 设备的支持复选框,选择“添加”,接着选择“是”来重新启动 VM001。 如果未收到窗口,请选择“ 确定”, 然后手动重新启动。   
- 重新启动后,建立 与 VM001 的新 RDP 连接。 
- 连接后,打开 服务器管理器,选择 “工具 ”并选择 “iSCSI 发起程序”。 
- 当Microsoft iSCSI 窗口弹出时,选择“ 是 ”以允许 iSCSI 服务默认运行。   
- 在 iSCSI 发起程序属性窗口中,选择“ 发现 ”选项卡。 
- 现在将添加 2 个目标,因此首先选择“ 发现门户 ”按钮。 
- 输入 iSCSI 目标服务器的第一个 IP 地址,然后选择“ 高级”。   
- 在 “高级设置” 窗口中,选择以下内容,然后选择“ 确定”。 - a。 本地适配器:Microsoft iSCSI 发起程序。 - b. 请求方 IP:10.10.10.4。 
- 返回“ 发现目标门户 ”窗口,选择“ 确定”。 
- 使用以下方法重复此过程: - a。 IP 地址:第二个 iSCSI 目标 IP 地址。 - b. 本地适配器:Microsoft iSCSI 发起程序。 - c. 发起者 IP:10.10.11.4。 
- 目标门户应如下所示,在 “地址” 列下有自己的 iSCSI 目标 IP。   
- 返回“ 目标 ”选项卡,从窗口中间选择 iSCSI 目标,然后选择“ 连接”。 
- 在连接到目标窗口中,选择启用多路径复选框,然后选择高级。   
- 输入以下信息,然后选择“ 确定”,然后在“ 连接到目标 ”窗口中,选择“ 确定”。 - a。 本地适配器:Microsoft iSCSI 发起程序。 - b. 发起者 IP:10.10.10.4。 - c. 目标门户 IP: <你的第一个 iSCSI 目标 IP/ 3260>。   
- 对第二个发起程序/目标组合重复此过程。 - a。 本地适配器:Microsoft iSCSI 发起程序。 - b. 发起者 IP:10.10.11.4。 - c. 目标门户 IP:<你的第二个 iSCSI 目标 IP / 3260>。   
- 选择“ 卷和设备 ”选项卡,然后选择“ 自动配置 ” - 应会看到一个 MPIO 卷:   
- 返回“目标”标签页,选择“设备”,您应看到 2 个连接到之前创建的单个 iSCSI VHD 的连接。   
- 选择 MPIO 按钮 以查看有关负载均衡策略和路径的详细信息。   
- 选择 “确定 ”三次退出窗口和 iSCSI 发起程序。 
- 打开磁盘管理(diskmgmt.msc),应该会弹出 “初始化磁盘”窗口。   
- 选择“确定”以接受默认值,然后向下滚动到新磁盘,右键单击并选择“新建简单卷” 
- 依次完成安装向导,接受默认值。 将卷标更改为 iSCSIdisk1,然后选择完成。   
- 然后,应设置驱动器的格式并显示驱动器号。 
- 打开 文件资源管理器 ,然后选择 “此电脑 ”以查看附加到 VM001 的新驱动器。 
测试外部存储连接
若要验证通信并运行基本的文件复制测试,请先登录到 Azure Stack Hub 系统上的 Azure Stack Hub 用户门户,并导航到 VM001的概述边栏选项卡
- 选择“连接”以建立到 VM001 的 RDP 连接 
- 打开 “任务管理器 ”选择 “性能 ”选项卡,然后将窗口贴靠到 RDP 会话的右侧。 
- 以管理员身份打开 Windows PowerShell ISE ,并将其贴靠到 RDP 会话的左侧。 在 ISE 右侧,关闭 “命令 ”窗格,然后选择“ 脚本 ”按钮,以展开 ISE 窗口顶部的白色脚本窗格。 
- 在此 VM 中,没有用于创建 VHD 的本机 PowerShell 模块,我们将将其用作大型文件来测试文件传输到 iSCSI 目标。 在这种情况下,我们将运行 DiskPart 来创建 VHD 文件。 在 ISE 中,运行以下命令: - Start-Process Diskpart
- 此时会打开一个新的 CMD 窗口,然后输入: 
 - **Create vdisk file="c:\\test.vhd" type=fixed maximum=5120**
   - 创建需要一点时间。 创建后,若要验证创建,请打开 文件资源管理器 并导航到 C:\ - 应会看到新的 test.vhd 存在,大小为 5GB。
   - 关闭 CMD 窗口并返回到 ISE,然后在脚本窗口中输入以下命令。 将 F:\ 替换为之前应用的 iSCSI 目标驱动器号。 
- Copy-Item "C:\\test.vhd" -Destination "F:\\"
- 选择脚本窗口中的行,然后按 F8 运行。 
- 在命令运行时,观察两个网络适配器,并查看在 VM001 中这两个网络适配器之间发生的数据传输。 还应注意到,每个网络适配器应均匀共享负载。 
   
此方案旨在突出显示在 Azure Stack Hub 上运行的工作负荷与外部存储阵列(在本例中为基于 Windows Server 的 iSCSI 目标)之间的连接。 这不是一项性能测试,也不是反映在使用基于 iSCSI 的替代设备时需要执行的步骤,但它确实强调了在 Azure Stack Hub 上部署工作负载时要做出的一些核心注意事项,并将其连接到 Azure Stack Hub 外部的存储系统。