这是我第一次使用 Windows 和 SQL Server 进行高可用性负载平衡。寻找对我计划的设置的一些验证和输入。
现在,通常当我想创建一个 HA 负载平衡网站时,我会将数据库分离到一个多可用区 RDS 实例,然后生成多个全部指向 RDS 的 Ec2 实例。这在 MySQL 上一直运行良好,但 SQL Server RDS 不支持多可用区。
我读到 SQL Server 可以设置为见证,它(如果我错了请纠正我)实时镜像数据库,除非它无法访问数据库,此时它成为主数据库。下面的设置是否会在使用相同的数据库数据时正确地平衡传入请求的负载?如果主实例确实在某个时候出现故障,然后又恢复正常,它会自动“追上”来自服务器的数据吗?你会这样做吗?
根据您提供的图表,您将拥有第三个 SQL Server 框,以允许镜像数据库的自动故障转移。有关 HA 设置中镜像的说明,请参阅此链接 - http://msdn.microsoft.com/en-ca/library/ms179344(v=sql.105).aspx。
只要您有第 3 个 SQL Server 实例作为见证角色,此设置就会起作用。这有点像 Windows 集群的工作方式,您需要让大多数服务器在线才能使镜像数据库保持在线。如果您的主服务器脱机,则镜像(辅助\备份)服务器将接管主要角色。一旦服务器重新联机,数据库应该同步自身。
此设置的另一个考虑因素是您的应用程序仅依赖于一个数据库。由于镜像是特定于数据库而不是特定于服务器的,因此在某些情况下可能只有一个数据库“翻转”到辅助服务器。如果 Web 应用程序依赖于多个数据库,则需要额外考虑如何处理这个问题(尽管在 SQL Server 2012 中通过可用性组解决了这个问题)