Назад | Перейти на главную страницу

Использование HAProxy для балансировки нагрузки SQL Server 2008

Возможно ли / возможно / разумно использовать HAProxy для балансировки нагрузки трех серверов баз данных SQL Server 2008?

Вот наша ситуация: у нас есть два веб-сервера с балансировкой нагрузки на Amazon EC2. В настоящее время мы используем один производственный сервер БД SQL Server 2008. Этот сервер начинает перегружаться, поэтому мы хотели бы добавить еще два сервера БД и реализовать решение для балансировки нагрузки.

В Amazon EC2 мы не можем использовать виртуальный IP-адрес, что не позволяет нам использовать балансировку сетевой нагрузки Windows (NLB) или любой другой метод балансировки нагрузки, для которого требуется VIP.

Наше приложение требует большого количества операций чтения, но мы не можем отделить чтение от записи, поэтому решение для балансировки нагрузки должно это учитывать.

Мы планируем использовать встроенную функцию репликации SQL Server, чтобы поддерживать все три БД в актуальном состоянии (мы понимаем, что будет некоторое время задержки, но это приемлемо).

Любые мысли или предложения приветствуются, и заранее спасибо за вашу помощь.

Возможно ли / возможно / разумно использовать HAProxy для балансировки нагрузки трех серверов баз данных SQL Server 2008?

Нет, это не так. И даже если бы вы могли использовать Windows NLB, это тоже не работало бы надежно.

Когда ваши серверы приложений взаимодействуют с SQL Server, Протокол связи TDS держит «состояние». Подумайте, например, о транзакциях или длительных запросах.

HAProxy и NLB не понимают TDS. Если вы просто использовали HAProxy для балансировки нагрузки в режиме TCP / IP, то соединение можно было бы переключить прямо в середине транзакции, что дало бы вам крайне непредсказуемые результаты и, возможно, потерю данных.

НАСКОЛЬКО МНЕ ИЗВЕСТНО, нет балансировщика нагрузки plug'n'play для SQL Server.