Как реализовано развертывание Amazon RDS Multi-AZ?

Недавно я рассматриваю возможность использования развертывания Amazon RDS Multi-AZ для службы в производственной среде, и я прочитал связанные документы.

Однако у меня есть вопрос об откате. В FAQ по Amazon RDS переход на другой ресурс описывается следующим образом:

В: Что происходит при переходе на многоадресный режим и сколько времени требуется?

Отказоустойчивость автоматически обрабатывается Amazon RDS, чтобы вы могли возобновить операциях с базой данных как можно быстрее без административных вмешательство. Когда не удается, Amazon RDS просто переворачивает каноническое (CNAME) для вашего экземпляра БД, чтобы указать в режиме ожидания, который, в свою очередь, стал новым первичным. Мы призываем вас следовать рекомендациям и выполнять повторную попытку подключения к базе данных в прикладного уровня. Время отказоустойчивости зависит от времени восстановление завершено. От начала до конца, при отказе обычно завершается в течение трех минут.

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

Мой вопрос: в какой AZ это приложение для мониторинга? Существует 3 возможности: 1. Тот же AZ, что и основной 2. Тот же AZ, что и в режиме ожидания 3. Другой AZ

По-видимому, 1 & 2 не будет иметь места, поскольку он не может справиться с ситуацией, когда весь AZ недоступен. Итак, если это так, то что произойдет, если AZ службы мониторинга снизится? Есть ли еще одна служба для мониторинга этой службы мониторинга? Кажется, это бесконечное домино.

Итак, как Amazon обеспечивает доступность RDS в развертывании Multi-AZ?

Ответ 1

Образованная догадка - служба мониторинга работает на всех AZ и ссылается на общий список запущенных экземпляров (который синхронизируется по ретранслированию по AZ). Как только служба мониторинга на одном АЗ замечает, что еще один AZ отключен, он переводит CNAMES всех запущенных экземпляров в AZ, который в настоящее время работает.

Ответ 2

Нам не удалось определить, где находится экземпляр отказа, но наша основная часть находится в US-West-2c, а вторичная - в US-West-2b.

Используя PostgreSQL, наши данные были повреждены из-за физической проблемы с объемом Amazon (как можно ближе). В то время у нас не было настроенного мульти-AZ, поэтому для восстановления мы должны были выполнить восстановление в определенный момент времени как можно ближе к событию. Поддержка Amazon заверила нас, что если бы мы пошли вперед с Multi-AZ, они автоматически перешли бы на другой AZ. Это вызывает вопросы о том, как они могли бы определить это, и будет ли распространение данных распространяться на другой AZ?

Из-за этого shisaster мы также добавили реплику только для чтения, которая, кажется, имеет для меня гораздо больше смысла. Мы также используем реплику RO для чтения и другие функции. Мое понимание от моего представителя Amazon заключается в том, что можно подумать о настройке Multi-AZ, как о ситуации с RAID.

Ответ 3

В документах происходит сбой, если выполняются следующие условия:

  • Потеря доступности в первичной зоне доступности
  • Потеря сетевого подключения к первичному
  • Сбой вычислительного блока на первичных
  • Сбой хранения на первичной основе

Это означает, что мониторинг не находится в том же AZ. Скорее всего, прочитанная реплика использует функции mysql (https://dev.mysql.com/doc/refman/5.7/en/replication-administration-status.html) для контроля состояния мастера и принятия мер, если мастер становится недоступным,

Конечно, это вопрос, что произойдет, если реплика AZ не удастся? У Amazon, скорее всего, есть проверки в обнаружении сбоя реплики, чтобы выяснить, не является ли это ошибкой или первичной.