Моя текущая настройка:
1 балансировщик нагрузки HTTP
3 Фронтенд-сервер Apache
1 Mysql Load Balancer (балансировка чтения по всем трем, запись идет только на мастер)
3 сервера базы данных Mysql (1 мастер, 2 подчиненных)
Все хорошо, но у меня бывают внезапные запланированные всплески трафика, и во время этих пиков мне нужно увеличивать масштаб. Я подумываю перейти к более простому распорядку.
1 балансировщик нагрузки HTTP
n * Серверы Apache + Mysql вместе (1 из которых содержит мастер Mysql)
Каждый сервер apache будет читать из локальной базы данных, но записывать к мастеру. Это означает, что для масштабирования все, что мне нужно сделать, это запустить другой сервер и добавить его в LB. Обычно мне нужно такое же количество серверов Apache, как и Mysql.
Вы видите какие-либо проблемы с этой настройкой? Я раньше не видел, чтобы кто-нибудь использовал эту установку, поэтому мне интересно, каковы ее недостатки.
При наличии единого балансировщика нагрузки в вашей настройке все еще остается единственная точка отказа. Итак, первое, что я бы сделал, - это добавить второй балансировщик нагрузки и настроить виртуальный IP-адрес, совместно используемый двумя балансировщиками нагрузки.
LeasewebLabs есть хорошая статья о том, как это сделать.
Также я считаю, что веб-серверы должны быть на разных машинах, чем серверы db (+ вам, вероятно, не понадобится столько серверов db, сколько веб-серверов). Я понимаю, что ваша новая настройка выглядит проще, но, в конце концов, это будет перебор, imho. Конечно, все зависит от типа услуги / веб-сайта, который вы размещаете.
Ознакомьтесь с блогом serverfault, посвященным их настройке, чтобы получить советы: ссылка на сайт