Автоматическое переключение при отказе веб-сервера (SRV / дополнительная A-запись /?)
Я начинаю разрабатывать веб-сервис, который будет размещаться в облаке, но нуждается в более высокой доступности, чем предоставляют типичные облачные соглашения об уровне обслуживания.
Типичные SLA, например Windows Azure, обещают доступность на 99,9%, то есть до 43 минут простоя в месяц. Я ищу на порядок лучшую доступность (время простоя<5 минут в месяц). Хотя я могу сконфигурировать несколько серверных баз данных с балансировкой нагрузки для решения этой части проблемы, я вижу узкое место на веб-сервере. В случае сбоя веб-сервера весь сервис недоступен для клиента. Каковы варианты снижения этого риска без введения еще одной возможной точки отказа? Я вижу следующие решения и недостатки каждого:
SRV-запись: я дублирую всю инфраструктуру (и позабочусь о том, чтобы базы данных были синхронизированы) и добавляю дополнительные записи SRV для домена, чтобы пользователь, связывающийся с доступом к www.example.com, автоматически перенаправлялся на example.cloud1.com или если он не в сети на example.cloud2.com. Похоже, что поиск в SRV-записях не поддерживается ни одним крупным браузером, правда?
вторая A-запись: добавьте дополнительную A-запись в качестве альтернативы. Недостатки: а) у моего хостинг-провайдера я не вижу возможности добавить вторую A-запись, а только одну... это нормально? б) если один сервер из двух серверов не работает, я не уверен, что пользователь автоматически перенаправляется на другого, или 50% всех пользователей получают ошибку 404 или другую ошибку
Любые подсказки для лучшей практики будут оценены
Ура, Себастьян
2 ответа
Наличие экземпляра, т. Е. SLA, если оно указано провайдером облака, означает, что "Состояние экземпляра - это сервер, работающий в контексте гипервизора или контроллера среды". С учетом вышесказанного вам нужно приложить усилия и убедиться, что экземпляр не выходит из строя из-за вашего приложения / ОС / или в значительной степени из-за того, что работает внутри экземпляра. Есть несколько вещей, которые devops, как правило, упускают, и такие удары, как например, - забывание настраивать обновления и исправления ОС.
Основной аксиомой доступности является избыточность. Чем более избыточно ваше приложение / инфраструктура, тем более доступно ваше приложение.
Я рекомендую вам заглянуть в Azure Traffic Manager
а затем заново проработайте свою архитектуру. Вам не нужно беспокоиться о записи SRV или A-Record. Просто CNAME для менеджера по трафику сделает свое дело.
Идея диспетчера трафика проста: вы можете сказать диспетчеру трафика, чтобы он стоял после доменного имени (разрешение доменного имени приложения), тогда диспетчер трафика решает, куда отправить запрос с учетом таких факторов, как Round-Robin, Disaster Management и т. Д.,
С сочетанием диспетчера трафика и настройки мультирегиональной инфраструктуры; Вы пойдете к цели высокой доступности.
связи
Обзор диспетчера трафика Azure
Cloud Power: как масштабировать веб-сайты Azure в глобальном масштабе с помощью Traffic Manager
Может быть, вам следует настроить кластер Corosync с DRBD? DRBD обеспечит вам репликацию данных на обоих узлах (например, файлы веб-сайта и файлы БД). Apache как веб-сервер будет доступен под виртуальным IP-адресом, на который указывает домен. В случае отказа одного сервера corosync переместит все сервисы на второй сервер в течение нескольких секунд.