我们正在更换 SAAS 应用的主机 (IIS+MSSQL),并有机会重新设计基础架构。要么继续使用现有系统(运行良好),要么使用 vSphere 进行虚拟化。
当前的:
2 个 Web/DB 服务器 每个都安装了 IIS/MSSQL。Windows 网络负载平衡使用虚拟 IP 地址在 2 个节点之间分配流量,并使用 MSSQL 镜像为数据库提供自动故障转移功能。
1 个 MSSQL 见证服务器(小型虚拟机)
如果一台服务器发生故障,NLB 会将流量重新路由到另一节点,MSSQL 会自动进行故障转移。NLB 重定向期间可能会有 40 秒的停机时间。
可能的:
2 个 vSphere 主机
- 防火墙虚拟机 – 1 vCPU,512MB RAM,20GB HDD
- Web 服务器虚拟机 – 1 vCPU,2GB RAM,50GB HDD
- DB 服务器虚拟机 – 2 vCPU,4GB RAM,100GB HDD
1 个 CentOS Linux SAN(作为 NFS 共享安装)
担心的是数据库和网络资源不足。目前,Web/DB 服务器充分利用了节点,只有当一个节点发生故障时才需要共享另一个节点。如果 SAN 出现故障怎么办?有人建议虚拟机硬盘将驻留在主机本身上,而 SAN 将充当冗余存储。我推测此解决方案使用 VMware High Availability - 数据库的数据丢失是不可接受的。是否应该设置 2 个数据库虚拟机,并在不同的主机节点上运行 MSSQL 镜像?
编辑:虚拟化的优点是能够克隆机器、轻松迁移到新硬件、能够分离 DB/Web 服务器。对此有什么评论吗?
任何帮助将不胜感激!
答案1
使用 vSphere,SAN 将成为(理论上,因为良好的 SAN 具有内置冗余)单点故障;但如果您希望能够在主机之间移动虚拟机,则需要将虚拟机磁盘放在那里(使用主机上的本地存储无法做到这一点)。
此外,您当前的解决方案可以保护您免受问题的困扰里面服务器:如果其中一个服务器的操作系统损坏,另一个服务器仍将保持在线;如果您的唯一 DB VM 出现问题,您将失去它。
我建议同时使用这两种解决方案:使用两台主机构建虚拟化环境,然后在其中放置冗余虚拟机,以便能够处理操作系统/应用程序级别的故障。但如果您的硬件资源有限,无法处理这种情况,那么就坚持使用当前解决方案。
答案2
数据库的数据丢失是不可接受的
好的。您需要 3 个使用 MIRRORING 的数据库服务器,第三个作为见证服务器。或者,在出现问题时将日志文件传送到外部第三个系统。
因为 SQL 服务器在发生故障时可能会损坏数据库。从而导致数据损坏。
您要么需要近乎实时的备份,要么基本上需要永久更新的数据库副本。