У меня есть служба, которую я хочу запускать на приоритетных экземплярах в Google Cloud Platform. Экземпляры будут жить за балансировщиком нагрузки. Для обработки большинства запросов требуется <10 секунд. </p>
Я не могу изменить саму службу, но на том же образе, который находится перед службой, есть экземпляр nginx, который я могу настроить.
Насколько я вижу, сигнал мягкого выключения ACPI отправляется на экземпляр за 30 секунд до его выключения, и в этот момент я бы хотел, чтобы он прекратил получать запросы.
Я мог бы создать скрипт завершения работы , который перенастраивает nginx, чтобы прекратить пересылку проверок работоспособности в службу, и вместо этого отвечал большими пальцами вниз, но это кажется немного странным, и я чувствую, что должен быть лучший путь. (Также немного ошибочно говорить, что служба не здорова - она просто хочет, чтобы ее вынули из пула.)
Каким будет правильный способ подсказать балансировщику нагрузки, чтобы он прекратил отправлять запросы этому экземпляру, чтобы он (надеюсь) выполнял свои текущие запросы и затем завершал работу, не получая новых запросов за это время?
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
Preemptible instance │ │
│ │
│ │
│ │
│ │
┌─────────┐ │ ┌─────────┐ ┌─────────┐ │
│ Load │ │ │ /health │ some │ │ │
────▶│balancer │──────┼──▶│ nginx │──────────▶│ service │ │
│ │ │ │ /api/… │ │ │ │
└─────────┘ │ └─────────┘ └─────────┘ │
│ │
│ │
│ │
│ │─
│─
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─