У меня есть группа экземпляров с 2 экземплярами за балансировщиком нагрузки HTTP. один экземпляр работает и работает нормально (возвращает http 200), другой аварийно завершает работу (таймаут HTTP-запросов). Я не уверен, что делаю неправильно, но согласно документации отказавший экземпляр должен автоматически удаляться из балансировщика нагрузки.
Вот соответствующие документы: https://cloud.google.com/compute/docs/load-balancing/health-checks со связанным абзацем:
Чтобы проверка работоспособности считалась успешной, серверная часть должна вернуть действительный HTTP-ответ с кодом 200 и закрыть соединение в обычном режиме в течение периода timeoutSec. Если экземпляр не проходит проверку работоспособности, он удаляется из группы или пула без отправки уведомления. Если позже он проходит проверку здоровья, он возвращается в группу или пул снова без какого-либо уведомления.
Вот то, что я сейчас вижу на моей странице облачной консоли Google для Backend балансировщика нагрузки HTTP.
При посещении моего сайта (http://stage2.phantomjscloud.com) В половине случаев я получаю
Ошибка: ошибка сервера. Сервер обнаружил временную ошибку и не смог выполнить ваш запрос. Повторите попытку через 30 секунд.
Балансировщик нагрузки HTTP (и проверка работоспособности) явно обнаруживает отказавший экземпляр, но трафик все равно обслуживается к нему.
Как я могу решить проблему?
проверки работоспособности группы управляемых экземпляров VS проверки работоспособности балансировка нагрузки
Проверки работоспособности, используемые группами управляемых экземпляров, аналогичны проверкам работоспособности, используемым для балансировки нагрузки, с некоторыми отличиями в поведении. Проверки работоспособности, которые вы применяете к службам балансировки нагрузки, помогают подсистеме балансировки нагрузки определить, куда направить сетевой трафик. Эти проверки работоспособности не заставляют Compute Engine воссоздавать экземпляры. Проверки работоспособности, которые вы применяете к группам управляемых экземпляров, будут проактивно сигнализировать группе управляемых экземпляров об удалении и воссоздании экземпляров, если они станут НЕЗДОРОВНЫМИ.
В большинстве сценариев используйте отдельные проверки работоспособности для балансировки нагрузки и для мониторинга групп управляемых экземпляров. Проверка работоспособности для балансировки нагрузки может и должна быть более агрессивной, поскольку эти проверки работоспособности определяют, получает ли экземпляр пользовательский трафик. Поскольку клиенты могут полагаться на ваши услуги, вам нужно быстро перехватывать неотзывчивые экземпляры, чтобы при необходимости перенаправить трафик. Напротив, проверка работоспособности для групп экземпляров приведет к тому, что Compute Engine проактивно заменит отказавшие экземпляры, чтобы вы могли создавать более консервативные проверки работоспособности, чем проверки работоспособности для балансировщика нагрузки.
Я давно не видел такой ошибки (около 6 месяцев), поэтому я думаю, что это ошибка Google Cloud, и они ее исправили.