Виртуальный IP или балансировка нагрузки для кластера http/ mysql
Прежде всего, я должен сказать, что я очень новичок как системный администратор. Я пытаюсь сделать чужую работу, и у меня почти 0 опыта в кластеризации / балансировке нагрузки и связанных с этим вещах.
Это ситуация.
У меня есть 4 физических сервера. Требуемые конфигурации будут:
2 реплицированных веб-сервера, они являются общедоступным интерфейсом для доступа к данным базы данных 2 реплицированных MySQL
Что я хотел бы иметь:
1 виртуальный IP-адрес, используемый веб-серверами, с балансировкой нагрузки для двух машин. Этот ip будет публичным ip, указанным DNS.
1 виртуальный IP-адрес, используемый MySQL, такой же, как указано выше. Этот будет интерфейсом, используемым соединением приложения.
Серверы находятся на удаленной ферме серверов, но они включены в VLAN.
Возможно ли достичь этой конфигурации? В таком случае как? Если нет, то что было бы хорошей альтернативой?
Спасибо за любую подсказку.
Dario
3 ответа
Несколько вопросов, вы хотите, чтобы он был сбалансирован по нагрузке, потому что если у вас есть 4 машины 2apache и 2 mysql, вы настраиваете отказоустойчивость так, что если один сервер выходит из строя, он будет использовать другой сервер. И для достижения этого вы можете использовать HeartBeat http://www.linuxjournal.com/article/5862
Если у вас высокая нагрузка, у вас может быть 3 узла с apache/mysql, которые все реплицируются, и преобразуйте 1 из блоков в предопределенный балансировщик нагрузки.
Самая надежная настройка - это 2 балансировщика нагрузки, 3 сервера Apache, 1 сильный сервер MySQL и 1 резервное копирование с помощью пульса.
больше читать
мне очень понравилось руководство по кузнечному делу
http://www.howtoforge.com/high_availability_loadbalanced_apache_cluster
Учитывая ваши физические ограничения, вы действительно можете настроить 2 хоста балансировки нагрузки и 2 сервера Apache/MySQL. MySQL должен быть в конфигурации Master/Master, но это должно быть возможно. Это не даст вам высокой производительности на стороне приложения, но обеспечит высокую доступность (при условии, что нагрузка не слишком высокая)
Да, это определенно возможно.
Основная проблема, с которой вы столкнетесь, - это решить, как настроить серверы MySQL. Если они находятся в режиме репликации master / master, то есть любой сервер может принимать записи, тогда это решение подойдет. Но репликация master / master является редкостью, и более вероятно, что они настроены в ситуации master / slave, что означает, что запись может идти только в базу данных master. Вы можете настроить балансировщик нагрузки перед ними, если вы уверены, что этот балансировщик нагрузки будет использоваться только для чтения.
Вы по-прежнему можете настроить балансировщик нагрузки перед двумя для записи, но он должен быть достаточно интеллектуальным, чтобы всегда обращаться к базе данных master, если она работоспособна, и отказывать в подчиненной базе данных только в том случае, если мастер отключается. На этом этапе вам нужно ручное вмешательство, чтобы исправить положение, поскольку старый мастер не будет получать никаких новых записей.
Настройка системы такого типа нетривиальна, особенно в случае, когда мастер умирает. Удачи.