你好,我们有 3 个 SQL Server 2014 标准版节点,其中一个作为主节点,另一个作为使用事务复制数据库的主节点复制节点
我们希望使用另外2个节点来执行读操作,减少主节点的负载。
我们如何在 HA Proxy 之类的负载均衡器中进行配置,将读取操作与写入操作分开,并仅将读取操作发送到节点 2 和 3?或者我们应该使用允许这样做的其他负载均衡器吗?
答案1
我们如何在 HA Proxy 这样的负载均衡器中进行配置,将读取操作与写入操作分离,并仅将读取操作发送到节点 2 和 3?
根本不是。负载平衡器不可能知道 SQL Server 连接中发生了什么,也不可能从逻辑上理解什么可以、什么不能被视为只读、只写或混合(即写入),尤其是因为负载平衡器无法及时向前看。我可以连接到 SQL Server,启动事务,执行读取操作,然后开始写入 - 在决定负载平衡时,您怎么知道我打算写入?如果不及时向前看,就没有逻辑方法来处理这个问题。
通常的做法是在应用程序级别建立不同的连接,并让应用程序决定使用哪个连接。毕竟,人们会认为程序员足够聪明,知道他们是打算只将连接用于读取,还是实际上可能在稍后的阶段在同一连接/事务上进行写入。