Назад | Перейти на главную страницу

Порядок перезагрузки сервера / службы

У меня есть пара серверов, на которых работает несколько сервисов. Эти услуги зависят от доступности услуг на других серверах.

пример

ServerA / webservice зависит от ServerB / sqlservice и ServerC / blobservice

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

В этом примере

Серверы A, B и C могут перезагружаться одновременно, но службы должны запускаться в следующем порядке:

  1. ServerC / blobservice
  2. ServerB / sqlservice
  3. ServerA / веб-сервис

Я знаю, что службы могут зависеть от других локальных служб, что гарантирует их запуск в правильном порядке. Как этого добиться на нескольких серверах?

Для этого нет готовых инструментов. Все, кого я знаю, кто это делает, делают свои собственные. В Stack Overflow у нас есть собственное программное обеспечение, называемое (очень креативно) «патчером», которое заботится об этом за нас.

Причина, по которой вы вряд ли найдете универсальное решение «под ключ», заключается в том, что потребности у всех очень разные. Например:

  • Вам нужно проверить работоспособность службы перед перезагрузкой компьютера?
    • Что, если вы удалите последний компьютер в кластере?
    • Что делать, если служба была неисправна до того, как вы ее перезагрузили. Когда он вернется, вы можете не знать, сломан ли он из-за недавних исправлений или уже был сломан
    • Что делать, если у вас есть хосты, которые отключены, но автоматически снова включаются после перезагрузки из-за сценариев запуска?
    • Как вы проверяете работоспособность службы и сервера после перезагрузки?
  • Есть ли какие-то особые действия, которые необходимо предпринять перед перезагрузкой?
    • Что делать, если нужно настроить балансировщик нагрузки?
    • Вам нужно перед перезагрузкой перевернуть виртуальный IP на другой хост?
    • Есть ли особый процесс безопасного удаления сервера из кластера?
  • Что делать, если вы исправляете одну машину в кластере, и она не работает нормально?
    • Вы вслепую продолжаете патчить и скрещиваете пальцы, это не патч его сломал?
    • Вы останавливаете все исправления, даже если это был единичный инцидент?
    • Вы делаете исключение и запрашиваете информацию?
  • С какими операционными системами вы работаете?
    • Вам нужно делать гетерогенные графики исправлений?
    • Какой выпуск патча вы делаете? Вы патчите, как только патчи поступят в продажу? Вы ждете, чтобы увидеть, будут ли они отозваны?
    • Вам нужно исключить определенные пакеты / программное обеспечение из исправления?
  • Что произойдет, если серверу исправлений потребуется установка исправлений и перезагрузка?
    • Вы перестаете исправлять все сразу, если сервер патчера перестает работать?
    • Как вы проводите самотестирование?
  • Какие машины принадлежат каким кластерам / кадрам / когортам?
    • Некоторые машины можно патчить параллельно. Некоторые должны быть серийными
    • Некоторые из них могут быть исправлены вскоре после других.
    • Для балансировки других сервисов может потребоваться несколько часов (elasticsearch), поэтому исправляйте меньше машин в день.

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