【发布时间】:2017-11-03 07:42:55
【问题描述】:
所以我正在开发一个具有 4 个生产服务器的小型 .NET 项目:
- 网络
- 应用
- 数据库((SQL Server 2016 企业版)
- 报告(Sql Server 报告服务 2016)
最近一次中断后,我们在我们的 Report 服务器上安装了一个辅助副本 SQL Server 数据库实例作为高可用性集群。我们打算在不久的将来在我们原来的 Database 服务器上安装 SSRS,因此如果任一服务器出现故障,我们将进行完整的故障转移。
我认为有机会通过负载平衡数据库连接和 SSRS 负载来更有效地利用两台服务器的计算资源。
数据库负载均衡思路:
- 必须将写入连接定向到集群中的主节点,但只读连接可以指向其中任何一个,随着主数据库节点上写入连接负载的增加,对辅助副本的偏好也会增加。李>
- 数据库调用可以来自 SSRS 和我的 .NET 应用程序,并且可以发送到高可用性侦听器。
- 数据库操作往往 I/O 繁重,而 CPU 密集度相对较低。
SSRS 负载均衡思路:
- 报告请求有 2 个阶段:数据检索和 UI 呈现。两个组件都可以(理论上)单独负载平衡到任一服务器。
- SSRS 报告渲染(不包括数据检索,但包括 SSRS 内的任何分组和数据处理)在 CPU 利用率和最小 IO 方面相对中等。
我知道有可用的负载平衡解决方案可以单独对数据库调用和 SSRS 进行负载平衡,但是是否有任何产品/解决方案可以同时对数据库和 SSRS 负载进行负载平衡?即评估每台服务器上的总负载并选择最佳服务器来执行负载平衡解决方案收到的每个额外请求?
在这张图中,SSRS 负载均衡器和高可用性监听器都在 App 服务器上。主数据库节点位于顶部,标记为“数据库 2”,辅助副本位于图中的底部服务器,标记为“数据库 1”。两台数据库服务器都安装了 SSRS。
-PS:我们目前的预算仅限于这 4 台生产服务器,我们正在尽我们所能充分利用这些服务器 :) 这些服务器都是虚拟机,数据库服务器有 4 个 vCPU 和 64 个GB 内存。应用服务器还具有 4 个 vCPU 和 32 GB 的 RAM。
【问题讨论】:
标签: sql-server reporting-services load-balancing high-availability sql-server-2016