本文提供了 Azure Stack Hub 存储基础结构信息,可帮助你决定如何将 Azure Stack Hub 集成到现有网络环境中。 在提供有关扩展数据中心的常规讨论后,本文介绍了两种不同的方案。 可以连接到 Windows 文件存储服务器。 还可以连接到 Windows iSCSI 服务器。
将存储扩展到 Azure Stack Hub 的概述
在某些情况下,将数据置于公有云中是不够的。 也许你有一个对延迟敏感的计算密集型虚拟化数据库工作负荷,而公有云的往返时间可能会影响数据库工作负荷的性能。 也许有本地数据,保存在文件服务器、NAS 或 iSCSI 存储阵列上,需要由本地工作负荷访问,需要驻留在本地以满足法规或合规性目标。 这些方案显示了为什么将数据驻留在本地对于许多组织来说仍然很重要。
那么,为什么不直接将这些数据托管在 Azure 上的存储帐户中,或者托管在 Azure Stack Hub 系统上运行的虚拟化文件服务器中呢? 嗯,与在 Azure 中不同,Azure Stack Hub 存储是有限的。 可用的容量完全取决于你选择购买的每节点容量,以及你拥有的节点数。 由于Azure Stack Hub是一种超聚合解决方案,因此,如果希望增加存储容量以满足使用需求,则还需要通过添加节点来增加计算占用空间。 此要求可能会导致成本高得令人难以承受,尤其是在额外容量是用于冷归档存储的情况下,因为这类容量原本可以在 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 中一样。 如果外部存储需要访问 VM,则只能通过公共 IP 执行此操作,因为专用 IP 主要用于Azure Stack Hub系统中、vNet 和子网内的Azure Stack Hub系统中。 外部存储无法与 VM 的专用 IP 空间通信,除非它通过站点到站点 VPN 来打入 vNet 本身。 因此,对于此示例,侧重于通过公共 IP 空间进行通信。 需要注意的是,图中的公共 IP 空间包含两个不同的公共 IP 池子网。 默认情况下,Azure Stack Hub只需一个池即可用于公共 IP 地址,但要考虑的一些事项是添加另一个池进行冗余路由。 但是,目前无法从特定池中选择 IP 地址,因此,可能最终会有多个虚拟网络卡中同一池中具有公共 IP 的 VM。
出于此讨论的目的,假设边界设备和外部存储之间的路由得到处理,流量可以适当地遍历网络。 对于此示例,主干是否为 1 GbE、10 GbE、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数据中心映像。
下载Windows Server 2019映像可能需要一些时间。
将Windows Server 2019映像添加到Azure Stack Hub环境后,登录到Azure Stack Hub用户门户。
登录到Azure Stack Hub用户门户后,请确保拥有允许预配 IaaS 资源(计算、存储和网络)的产品/服务的订阅。
获取订阅后,返回到Azure Stack Hub用户门户中的仪表板,选择“创建资源”,选择“计算”,然后选择Windows Server 2019数据中心库项。
在 “基本信息 ”边栏选项卡上,输入以下信息:
名称:VM001
用户名:localadmin
密码 和 确认密码: <所选密码>
订阅: <所选订阅,包含计算/存储/网络资源>。
资源组:存储测试(新建)
选择 “确定”
在“ 选择大小 ”边栏选项卡上,选择 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 边栏中,选择 子网,然后选择 + 子网。 在“新建 添加子网 ”边栏选项卡中,输入以下信息,然后选择“ 确定” :
名称:subnet2
地址范围(CIDR 块):10.10.11.0/24
网络安全组:无
路由表:无
保存后,选择 VM001。
在概述的左侧,选择“ 网络”。
选择 “附加网络接口”,然后选择“ 创建网络接口”。
在 “创建网络接口”上,输入以下信息:
名称:vm001nic2
子网:确保子网为 10.10.11.0/24
网络安全组:VM001-nsg
资源组:存储测试
附加网络接口后,选择 VM001 ,然后选择 “停止 ”关闭 VM。
VM 停止(解除分配)后,在“概述”左侧选择 网络,选择 附加网络接口,然后选择 vm001nic2。 选择“确定”。 几分钟后,会将额外的 NIC 添加到 VM。
仍在“ 网络 ”边栏选项卡上,选择 “vm001nic2 ”选项卡,然后选择 “网络接口:vm001nic2”。
在 vm001nic 接口边栏选项卡上,选择 IP 配置,然后在边栏选项卡的中心选择 ipconfig1。
在“ipconfig1 设置”边栏选项卡上,选择“为公共 IP 地址 启用 ”,然后选择“ 配置所需设置”。 选择 “新建”,输入 vm001nic2pip 以获取名称,选择 “静态”,然后选择“ 确定”。 选择“保存”。
保存设置后,返回到 VM001 概述,然后选择“开始”以启动配置的Windows Server 2019 VM。
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 Target 是一台运行在 Hyper-V 上、位于 Azure Stack Hub 环境之外的虚拟机。 可以使用 8 个虚拟处理器、单个 VHDX 文件以及最重要的是两个虚拟网络适配器来配置此虚拟机。 理想情况下,这些网络适配器应连接到不同的可路由子网,但在此次验证中,它们位于同一子网。
对于 iSCSI 目标服务器,可以使用Hyper-V、VMware 或所选备用设备(例如专用物理 iSCSI SAN)上运行Windows Server 2016或Windows Server 2019、物理或虚拟。 重点在于连接进出Azure Stack Hub系统。 但是,在源和目标之间具有多个路径是可取的,因为它提供了额外的冗余,并且它允许使用更高级的功能来提高性能,例如 MPIO。
在继续配置文件共享之前,使用最新的累积更新和修补程序更新 Windows Server 2019 iSCSI 目标,并在必要时重新启动。
更新并重新启动后,现在可以将此服务器配置为 iSCSI 目标。
打开服务器管理器并选择“管理”,然后选择“添加角色和功能”。
打开后,选择“ 下一步”,选择 “基于角色”或“基于功能”的安装,然后继续选择,直到到达 “选择服务器角色 ”页。
展开 文件和存储服务,展开 “文件和 iSCSI 服务”,然后选择 “iSCSI 目标服务器 ”框。 接受任何弹出窗口提示以添加新功能,然后继续完成。
完成后,关闭 服务器管理器。
打开文件资源管理器,转到 C:\ 并创建名为 iSCSI的新文件夹。
重新打开 服务器管理器 ,然后从左侧菜单中选择 “文件和存储服务 ”。
选择 iSCSI ,然后选择右窗格中的“若要创建 iSCSI 虚拟磁盘,请启动”新建 iSCSI 虚拟磁盘向导“链接。 将打开对话框。
在 “选择 iSCSI 虚拟磁盘位置 ”页上,选择 键入自定义路径 的单选按钮并浏览到 C:\iSCSI ,然后选择“ 下一步”。
输入 iSCSIdisk1 作为 iSCSI 虚拟磁盘的名称,并根据需要添加说明,然后选择“ 下一步”。
将虚拟磁盘的大小设置为 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 发起程序属性窗口中,选择“ 发现 ”选项卡。
要添加两个目标,请先选择Discover Portal按钮。
输入 iSCSI 目标服务器的第一个 IP 地址,然后选择“ 高级”。
在 “高级设置” 窗口中,选择以下内容,然后选择“ 确定”。
本地适配器:Microsoft iSCSI 发起程序。
请求方 IP:10.10.10.4。
返回“ 发现目标门户 ”窗口,选择“ 确定”。
使用以下值重复此过程:
IP 地址:第二个 iSCSI 目标 IP 地址。
本地适配器:Microsoft iSCSI 发起程序。
发起者 IP:10.10.11.4。
目标门户应如下所示,在 “地址” 列下有自己的 iSCSI 目标 IP。
返回“ 目标 ”选项卡,从窗口中间选择 iSCSI 目标,然后选择“ 连接”。
在 “连接到目标 ”窗口中,选择“ 启用多路径 ”框,然后选择“ 高级”。
输入以下信息,然后选择“确定”。 在“ 连接到目标 ”窗口中,选择“ 确定”。
- 本地适配器:Microsoft iSCSI 发起程序。
- 请求方 IP:10.10.10.4。
- 目标门户 IP: <你的第一个 iSCSI 目标 IP/ 3260>。
对第二个发起方和目标组合重复上述过程。
- 本地适配器:Microsoft iSCSI 发起程序。
- 发起者 IP:10.10.11.4。
- 目标门户 IP:<你的第二个 iSCSI 目标 IP / 3260>。
选择“卷和设备”选项卡,然后选择“自动配置”。 你会看到一个显示出来的 MPIO 卷:
返回到“目标”选项卡,选择“设备”,即可看到到之前创建的单个 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 模块,而你会将该 VHD 作为一个大文件来测试向 iSCSI 目标传输文件。 在这种情况下,请运行 DiskPart 以创建 VHD 文件。 在 ISE 中,运行以下步骤:
Start-Process Diskpart此时会打开新的 CMD 窗口。 输入以下命令:
Create vdisk file="c:\\test.vhd" type=fixed maximum=5120
此过程需要一段时间完成。 完成后,打开 文件资源管理器 并转到 C:\ - 会看到新的 test.vhd 文件,大小为 5 GB。
关闭 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环境外部的存储系统时要做出的一些核心注意事项。