我想听听您对瑞士两台托管多个应用程序(基于 .NET 的网站、SQL Server)的应用服务器之间的故障转移架构的看法。目标是在切换辅助服务器时,停机时间有限(< 2 小时),成本合理,并减少恢复所需的人工交互。
评论 :
- DNS 故障转移不适用于我们,因为我们不管理应用程序服务器上托管的每个应用程序的 DNS。
- 我们希望避免在托管 VM 上托管我们的应用程序服务器,以便能够管理许可证、VM 传输并具有高 I/O 性能。
在此阶段,我的计划是使用以下设置:
- Nginx 托管在 Azure 瑞士站 (F2sv2 - 2 vCPU - 4 GB RAM)
- 服务器 A:瑞士的 Dell R6515 专用服务器,Tier IV 数据中心(活动实例 - 待购买)
- 服务器 B:位于瑞士我们自己的办公室基础设施中的 Dell R6515 专用/开发服务器(1Gb/s 连接)(备份实例 - 已购买)
Nginx(80 欧元/月 - 作为 MS 合作伙伴无需付费)
Nginx 的主要目标是让我们在发生故障时将流量从服务器 A IP 切换到服务器 B IP。所有应用程序服务 DNS 都将指向 Nginx IP。由于它托管在 Azure 上,因此如果 Nginx 本身发生故障,它应该是冗余的。也许它们是一些确保 Azure 上 Nginx 冗余的功能。
VMWare Essential(约 600 欧元)
我们目前拥有 WMWare 基本许可证,允许我们运行最多三个 ESXi 主机。服务器 A 和服务器 B 将是在 VSphere 下注册的 ESXi 实例。服务器 A 将托管包含我们的应用服务器的活动 VM。
Veeam 社区版(免费)
我们计划使用 Veeam 社区版将应用程序服务器 VM 映像 + SQL Server 事务日志从服务器 A 复制到服务器 B。
服务器 A 硬件/数据中心故障
到目前为止,我认为在服务器 A 发生硬件故障或数据中心故障时应执行以下步骤:1. 为维护页面配置 Nginx 2. 使用 Veeam 在服务器 B 上恢复应用程序服务器 VM 映像 3. 使用 Veeam 在服务器 B 上恢复事务日志 4. 更改 Nginx 配置以将流量从服务器 B 重定向到服务器 A。5. 当服务器 A 再次可用时,以另一种方式从服务器 B 到服务器 A 重复此过程
由于我不是基础设施/WMWare 专家,我很乐意听听您对这个架构的看法,或者任何有助于我们实现目标的建议。在这个阶段,我在问自己,即使两个位置非常接近,将每个请求从 Nginx 重定向到应用程序中心会对延迟/性能产生什么影响。
谢谢你的建议!
吉尔斯
答案1
我不会确切地将这个概念称为“成本合理”,而是“避免成本”......
假设你使用 nginx 作为代理,请求不会被重定向到那里 - 但是流经该服务器。这可能很快就会成为瓶颈,并且通常会延迟响应。此外,您 100% 依赖 Azure 云 - 这可能很便宜,但您自己的基础设施可能会提供更好的可用性。仔细检查 Azure SLA 和细则!
此外,我不想依赖通过整个虚拟机复制来复制 SQL 数据 - 您应该考虑(连续)在 SQL 级别复制数据,以减少数据丢失的时间。