(GCP): Ошибка сервера. Сервер обнаружил временную ошибку и не смог выполнить ваш запрос. Пожалуйста, попробуйте еще раз через 30 секунд

Я создал "Балансировщик нагрузки" в Google Cloud и подключил к нему 2 виртуальные машины. Когда я отправляю некоторые запросы к "Балансировщику нагрузки", иногда он передается виртуальным машинам, подключенным к балансировщику нагрузки, а иногда выдает следующую ошибку, даже если проверка работоспособности на 100% в порядке в это время.

Ошибка: ошибка сервера. Сервер обнаружил временную ошибку и не смог выполнить ваш запрос.
Повторите попытку через 30 секунд.

2 ответа

В моем случае проблема заключалась в том, что проверка работоспособности не возвращала 200. Вместо этого он возвращал 302 (Найдено) при вызове по умолчанию / и перенаправлял на другой URL-адрес с 200 (который игнорируется при проверке Loadbalancer) и считал этот узел «неработоспособным» и вместо этого перенаправлял входящий http/s запрос к сломанному узлу удалил его из ротации и вернул клиенту сообщение об ошибке 502.

Ошибка: Ошибка сервера Сервер обнаружил временную ошибку и не смог выполнить ваш запрос. Повторите попытку через 30 секунд.

Под моим LoadBalancer находился кластер GKE с модулем gke ingress->service-> и не были настроены явные проверки работоспособности/готовности, поэтому по умолчанию проверки работоспособности попадают в / с 302/Found/redirect.

После добавления этих зондов в манифест развертывания и указания их на конечную точку, которая возвращает OK/200 (/-/здорово, ///готово в моем случае, когда prometheus работает внутри модуля), проблема была исправлена.

К сожалению, gke ingress имел неинформативное сообщение НЕЗДОРОВО только в аннотациях, поэтому мне потребовалось некоторое время, чтобы понять, что вызывает эту проблему.

Этот ответ был создан для поддержки сообщества на основе ограниченной информации, предоставленной ОП, и комментариев, написанных выше.

Самое правильное решение, которое нужно принять, когда вы пытаетесь определить основную причину проблемы с балансировщиком нагрузки HTTP, — просмотреть записи журнала.

Согласно официальной документации Google . Записи журнала балансировки нагрузки HTTP(S) содержат информацию, полезную для мониторинга и отладки трафика HTTP(S).

Записи журнала содержат следующие типы информации:

  • Общая информация , такая как серьезность, идентификатор проекта, номер проекта и отметка времени.
  • Поля журнала HttpRequest . Однако, HttpRequest.protocolне заполняется для журналов HTTP(S) Load Balancing Cloud Logging.
  • Поле statusDetails внутри structPayload . Это поле содержит строку, объясняющую, почему балансировщик нагрузки вернул именно тот статус HTTP, который он сделал. В приведенных ниже таблицах содержатся дополнительные пояснения к этим строкам журнала. Поле statusDetails недоступно для региональных внешних балансировщиков нагрузки HTTP(S).
  • Перенаправления (код состояния ответа HTTP 302 Found) , отправленные балансировщиком нагрузки, не регистрируются. Перенаправления, отправленные из серверных экземпляров, регистрируются.

Чтобы включить записи журнала в балансировщике нагрузки HTTP, следуйте этому руководству .

Сообщение «Ошибка: Ошибка сервера. Сервер обнаружил временную ошибку и не смог выполнить ваш запрос». Может быть вызвано несколькими причинами, в том числе:

  • Нет правил брандмауэра, разрешающих проверки работоспособности.
  • Программное обеспечение на серверной части не работает.

На этой странице вы можете найти подробное руководство по полному устранению неполадок, связанных с общими проблемами подключения.

Я нашел эти сообщения, связанные с балансировщиком нагрузки HTTP и ответом 502, вы можете найти полезную информацию в этих темах.

Другие вопросы по тегам