
Olá, temos 3 nós do SQL Server 2014 Standard Edition, um deles como primário e outro como Replicação do Primário usando banco de dados de Replicação Transacional
Queremos usar os outros 2 nós para ler operações e reduzir a carga do nó primário.
Como poderíamos configurar em um balanceador de carga como o HA Proxy para dividir a operação de leitura das gravações e enviar para os nós 2 e 3 apenas as operações de leitura? ou devemos usar outro balanceador de carga que permita isso?
Responder1
Como poderíamos configurar em um balanceador de carga como o HA Proxy para dividir a operação de leitura das gravações e enviar para os nós 2 e 3 apenas as operações de leitura?
De jeito nenhum. Não há como um balanceador de carga saber o que acontece em uma conexão do SQL Server e entender logicamente o que pode e o que não pode ser considerado somente leitura ou somente gravação ou misto (que é uma gravação), especialmente não como a carga O balanceador não pode esperar no tempo. Posso me conectar ao SQL Server, iniciar uma transação, fazer uma operação de leitura E ENTÃO INICIAR UMA ESCRITA - como você saberia que pretendo escrever ao decidir sobre o balanceamento de carga? Não há maneira lógica de lidar com isso sem olhar para frente no tempo.
A maneira como isso normalmente é feito é ter conexões diferentes no nível do aplicativo e fazer com que o aplicativo decida qual delas usar. Afinal, seria de se supor que os programadores são inteligentes o suficiente para saber se pretendem uma conexão apenas para leitura ou se realmente escrevem na mesma conexão/transação em um estágio posterior.