Службы Windows и выключение узлов EC2
У меня довольно простая служба Windows, работающая на тестовых узлах EC2 прямо сейчас:
- Вызывает веб-службу на компьютере в нашем локальном центре обработки данных, когда служба запускается (служба настроена на автоматический запуск, поэтому она запускается при подключении экземпляра к сети).
- Раз в минуту вызывает другую веб-службу в качестве контрольного сигнала.
- Вызывает третью веб-службу, когда служба останавливается.
Мы прекрасно используем это в наших экземплярах Linux EC2, а служба Windows прекрасно работает при запуске, биении и остановке вручную.
Проблема в том, что при завершении работы узла через ElasticFox, Rightscale и т. Д. Служба никогда не останавливается или, по крайней мере, никогда не вызывает Web-сервис. Какие-нибудь мысли?
[Обратите внимание, что это дословно скопировано из моего поста на форумах разработчиков AWS, но это очень низкий трафик по сравнению с SO. Извиняюсь!]
Изменить: Что касается вопроса о разрушении сети, я также не самый опытный в службах Windows, если я установил Netman в качестве зависимости службы, будет ли гарантировано соблюдение порядка завершения службы?
Что касается EBS, то модель, которую мы приняли для аналогичной системы, работающей на простых экземплярах Linux, рассматривает серверы приложений как эфемерные, поэтому EBS не принесет нам такой большой пользы. Мы используем Rightscale поверх EC2, что делает отключение подключений к экземплярам Linux, поэтому мы просто отправляем журналы экземпляров в другое место.
Редактирование № 2: Ну, я получил ответ от сотрудников AWS намного быстрее, чем я ожидал:
Для окон завершение через API (то есть через asticfox, правовую шкалу и т. Д.) Является жестким завершением из-за некоторых технических ограничений. Это означает, что это похоже на выключение машины кнопкой питания вместо выключения.
Интересно..
2 ответа
Когда Windows закрывается, происходит много вещей, так что я предполагаю, что что-то уже остановилось, что нужно вашему вызову веб-службы, в первую очередь это будет сетевое соединение.
Это немного сложно, так как вы не можете сохранить локальный файл журнала на дисках C или D, чтобы проверить, по крайней мере, попытка вызова предпринять попытку, так как вы никогда не сможете снова получить к ним доступ после остановки экземпляра. Используете ли вы том EBS с вашими экземплярами, которые могут содержать файл журнала?
Я протестировал сценарии групповой политики запуска и завершения работы с новыми корневыми томами Windows EBS. Оба этих сценария работают надлежащим образом во время соответствующих последовательностей, когда вы останавливаете и запускаете эти экземпляры. Поэтому альтернативой может быть запуск ваших экземпляров с использованием корневых томов EBS и выполнение команды остановки, чтобы гарантировать, что экземпляр Windows выполняет все последовательности выключения. После того, как экземпляр остановлен, вы сможете завершить его и освободить все тома EBS, связанные с ним.