Автоматическое переключение при отказе веб-сервера (SRV / дополнительная A-запись /?)

Я начинаю разрабатывать веб-сервис, который будет размещаться в облаке, но нуждается в более высокой доступности, чем предоставляют типичные облачные соглашения об уровне обслуживания.

Типичные SLA, например Windows Azure, обещают доступность на 99,9%, то есть до 43 минут простоя в месяц. Я ищу на порядок лучшую доступность (время простоя<5 минут в месяц). Хотя я могу сконфигурировать несколько серверных баз данных с балансировкой нагрузки для решения этой части проблемы, я вижу узкое место на веб-сервере. В случае сбоя веб-сервера весь сервис недоступен для клиента. Каковы варианты снижения этого риска без введения еще одной возможной точки отказа? Я вижу следующие решения и недостатки каждого:

  1. SRV-запись: я дублирую всю инфраструктуру (и позабочусь о том, чтобы базы данных были синхронизированы) и добавляю дополнительные записи SRV для домена, чтобы пользователь, связывающийся с доступом к www.example.com, автоматически перенаправлялся на example.cloud1.com или если он не в сети на example.cloud2.com. Похоже, что поиск в SRV-записях не поддерживается ни одним крупным браузером, правда?

  2. вторая 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 переместит все сервисы на второй сервер в течение нескольких секунд.

Другие вопросы по тегам