Несколько упражнений для отказоустойчивости/high availability вашего решения на Microsoft Azure

 

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

1. ВЫСОКОДОСТУПНОЕ РЕШЕНИЕ: Периодически мы проводим плановое обслуживание виртуальных машин (далее ВМ). Это включает в себя их перезагрузку. Мы предупреждаем клиентов заранее (за 48 часов), и проводим это обслуживание в небизнес-часы. Помимо этого, в уведомлении вы можете увидеть указание, что maintenance will be split into two windows - это значит, что первая часть обслуживания будет проведена для первой половины датацентра, вторая - для второй. Нет уведомлений относительно того, в какую часть попадет ваша ВМ. Соответственно, если не были приняты меры по дублированию ВМ, ваше решение может быть на короткое время остановлено. Также мы не даем SLA (соглашение об уровне обслуживания) на развертывание, состоящее из одной ВМ. Таким образом, ваше решение будет остановлено и на это не будет распространяться наше SLA. Чтобы избежать этого, нужно задублировать ВМ, используя технологию Availability Set (подробнее). AS служит как "контейнер", в который вы кладёте ваши ВМ, и во время планового обслуживания системные сервисы берут сначала первую ВМ, перезагружают и обновляют её, и затем переходят к остальным. Таким образом решение продолжает работать как во время нашего обслуживания, так и во время другого рода проблем - системные сервисы переключат нагрузку с проблемных ВМ на нормальные и, когда проблемные вновь восстановятся (вашими или системными усилиями), вернет ВМ в ротацию нагрузки. Еще одна статья про то, как использовать AS. Статья от Марка Руссиновича. И две статьи общего плана - первая и вторая - про высокую доступность ВМ.

a. Будьте внимательны - AS не относится к хранилищу. Если проблемы с хранилищем, AS не поможет. По этой причине используйте разные аккаунты хранилища для ВМ внутри одного AS, чтобы VHD хранились в разных местах.

2. СВЯЗЫВАНИЕ РЕСУРСОВ: Объединить ваши ВМ для того, чтобы они видели друг друга напрямую по IP и имели внутренние IP - чтобы построить домен либо для других нужд - необходимо использовать Virtual Network.

3. БАЛАНСИРОВКА НАГРУЗКИ: После того, как вы объединили ваши ВМ либо в AS, либо в VN, если у вас решение, которое зависит от нагрузки по определенным портам (например, вы развернули две ВМ с веб-сервером, обслуживающим один веб-сайт, и хотите разделить нагрузку между ними), есть два пути реализовать это решение - это либо Load-balanced set (вы устанавливаете внешний порт, и системные сервисы, получая запросы по этому порту, передают их внутрь на ВМ по указанным портам. Например, вы указали порт 8080 как внешний, и порты 80 на обеих ВМ), либо Traffic Manager. LBS - решение встроенное, TM - отдельный сервис. Здесь можно прочитать про обе опции.

4. ЧТО ПРОИЗОШЛО С РЕШЕНИЕМ? В том случае, если вы не можете понять, что происходит с ВМ, вы можете посмотреть логи перезагрузок.

5. НЕ МОГУ ПОДКЛЮЧИТЬСЯ! Если вы не можете подключиться по RDP/SSH/…, есть несколько опций:

a. Можете переподключить диск от ВМ к другой ВМ и проверить её. Эта опция работает и для Windows, и для Linux.

b. Проверить SSH, если у вас Linux. Здесь есть дополнительная информация.

c. Если вы получаете связанные с RDP проблемы, попробуйте использовать команду RDP с флагом /admin. Например, mstsc.msc /admin.

d. И помните важный момент – ICMP протокол у нашей платформы закрыт, соответственно, вы не сможете проверить работоспособность машины с помощью ping. Решение.

6. СТОРОННЕЕ ПО: Все программное обеспечение, отличное от ОС и системных сервисов, должно обеспечивать функциональность создания бесперебойных решений. Например, SQL Server. В большинстве случаев системных сервисов (LBS, TM и др.) должно быть достаточно, но, если у вас есть вопрос, лучше адресовать его техподдержке производящего ПО вендора, чтобы уточнить возможные варианты создания отказоустойчивых решений (вне Azure).

7. БЭКАПЫ:   Также вам нужно обязательно настроить бэкапы. Платформа хранит несколько копий всех данных, однако хранятся они не для бэкапа, а для отказоустойчивости - чтобы в случае кризисной ситуации перенаправить запросы на "здоровую" копию. Опций бэкапа много, и большинство из них описаны в этом курсе. Или документе.

8. УВЕДОМЛЕНИЯ: После всего этого желательно настроить уведомления о том, что происходит с вашими ВМ.

9. СОСТОЯНИЕ СЧЕТА: А также настройте уведомления про состояние вашего счета – нередко случается так, что либо кончаются кредиты на MSDN или BizSpark, или по другой причине, но деньги кончаются и подписка полностью отключается. Активация обычно занимает до одного дня. Инструкция, как настроить уведомления.

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

Если у вас есть дополнения или вопросы – пишите.

Интересные и релевантные материалы:

https://blogs.msdn.com/b/igorpag/archive/2014/09/28/my-personal-azure-faq-on-azure-networking-slas-bandwidth-latency-performance-slb-dns-dmz-vnet-ipv6-and-much-more.aspx

https://blogs.msdn.com/b/igorpag/archive/2013/12/15/azure-network-latency-test-and-sql-server-optimization.aspx

https://blogs.msdn.com/b/igorpag/archive/2014/11/11/azure-a_2d00_series-and-d_2d00_series-consistent-performances-and-size-change-considerations.aspx

https://blog.stevebowman.net/hroggero/archive/2015/07/23/monitoring-alerts-for-azure-virtual-machine.aspx

https://azure.microsoft.com/blog/2015/03/09/simplifying-virtual-machine-troubleshooting-using-azure-log-collector/