Вопрос: Tomcat - Spring Framework - MySQL, дизайн балансировки нагрузки


Допустим, у меня есть приложение Spring Framework, которое работает на Tomcat и использует базу данных MySQL:

enter image description here

Каким будет наилучшее решение в этом случае, которое позволит общаться (цена / производительность / время интеграции)?

Точнее: что будет в блоке балансировки Web Load, и кто должен быть кластеризованным веб-сервером tomcat? Что будет в блоке балансировки загрузки базы данных и как кластеры баз данных должны быть сгруппированы? И если вообще возможно, специальные технические связи будут очень полезны.


5
2017-11-11 18:56


Источник




Ответы:


  1. Для балансировки сетевой нагрузки существует несколько решений, с открытым исходным кодом и с оплатой, я лично использовал балансировщики нагрузки cisco (CSM и ACE) и F5 и как они (но эти решения могут стать дорогими). Существует несколько вариантов для openource, один из которых приходит на ум http://www.linuxvirtualserver.org/

  2. Для балансировки нагрузки mysql вы можете посмотреть на мастера, чтобы справиться с репликацией для msyql. Смотреть на: http://www.howtoforge.com/mysql_master_master_replication, То, что я сделал в прошлом для проекта, у меня было 3 веб-сервера serverfarm за большим IP (F5), и все они разговаривали с одним сервером mysql. И у меня была такая же настройка на другом сайте, и оба сервера mysql имели мастер для репликации. Таким образом, пользователи будут использовать все веб-серверы и серверы db, и если один из серверов БД, опустится, веб-ферма на этом сайте снизится, и пользователи будут использовать только другой сайт. (DNS failover и мониторинг для нескольких мониторинга сайта и восстановления после сбоя). Вы можете использовать глобальный балансировщик нагрузки, если у вас есть бюджет, чтобы получить более подробный характер.


4
2017-11-16 15:54





У простого MySQL нет опции балансировки нагрузки, но Кластер MySQL делает.

Я бы рекомендовал использовать MySQL Cluster для нескольких экземпляров MySQL.

Затем вы можете использовать MySQL Connector / J с прозрачными URL-адресами JDBC с балансировкой нагрузки. Видеть http://dev.mysql.com/doc/ndbapi/en/mccj-using-connectorj.html

PS: Я голосовал, чтобы переместить этот вопрос на ServerFault.com.


3
2017-11-11 19:13





Я бы не рекомендовал использовать MySQL Cluster. Я никогда не видел, чтобы он работал хорошо, а не разбился много. Havent использовал его через некоторое время (так как это не работало год назад).

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

Другой вариант, если ваше приложение позволяет (или может быть превращено в


1
2017-11-13 08:19