Географическая избыточность и репликация MySQL - PullRequest
1 голос
/ 20 июня 2009

У меня довольно простой сайт, получающий 200 тыс. Обращений в день (3-5 обращений в секунду) с использованием конфигурации LAMP. Хост несколько ненадежный (читай: дешевый), поэтому мы хотим добавить 2-й хост для гарантированного времени безотказной работы (я бы не назвал эту задачу критической, но скорее для предотвращения раздражения).

MySQL работает на холостом ходу со скоростью около 200 qps, а иногда достигает 450.

У меня есть некоторый опыт настройки master-master и maatkit, поэтому я собирался продублировать сайт во втором расположении, использовать репликацию master-master и проверить данные с помощью maatkit и мониторинга slave-lag и т.д. *

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

Дополнительный вопрос: скажем, у вас есть 2 сервера, один на восточном побережье и один на западном побережье. Какова разумная стратегия для балансировки нагрузки базы данных для них? Будет ли у вас доступ к серверу apache на западном побережье mysql на восточном побережье? Это действительно вариант? Я думал, что задержки убьют производительность ...

Есть мысли? ТИА Mike

Ответы [ 2 ]

2 голосов
/ 20 июня 2009

США составляет около 50 мс, поэтому, учитывая, что вы выполняете 40-90 MySQL запросов на http-запрос, вы можете ожидать увеличения задержки не менее чем на 2-4,5 секунды для http-запросов. Это игнорирует время, которое потребуется для передачи любых больших полезных нагрузок. Вы не хотите делать кросс-континент MySQL для этого приложения.

Другая причина, по которой следует избегать межконтинентальных запросов mysql, заключается в том, что два мастера могут быть не синхронизированы, поэтому, если вы округлите робин-запросы по всем двум базам данных, пользователи могут увидеть противоречивые данные и запутаться. Однако, если ваша локальная база данных находится в тяжелом состоянии, возврат к удаленной базе данных является разумным. В этом случае вы также хотели бы перенаправить трафик с локального веб-сервера, чтобы избежать вышеупомянутых задержек.

Вы хотите убедиться, что пользователь придерживается того же сервера Apache, чтобы он получал согласованное представление данных. Простой способ сделать это - перенаправить пользователей с www.yoursite.com на server1.yoursite.com и server2.yoursite.com, убедившись, что все ваши URL-адреса являются относительными. Если один сервер выйдет из строя, вы можете перезаписать DNS, и до тех пор пользователи, вероятно, будут продолжать обновлять www.yoursite.com (который будет использоваться в качестве циклического перебора DNS), пока не получат другой сервер. Единственная опасность в этом заключается в том, что пользователи будут добавлять в закладки server1.yoursite.com.

0 голосов
/ 03 октября 2009

Гарантированное время безотказной работы может быть достигнуто с использованием активного режима ожидания с использованием виртуального IP-адреса на одном и том же сайте. Вы можете даже настроить другой сайт в качестве активного режима ожидания. Geo избыточность является еще одной проблемой.

...