Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Симптом
Прокси-сервер Envoy выходит из строя с ошибкой HTTP 403 Forbidden
при вызове через адаптер Apigee для Envoy .
Сообщение об ошибке
Отображается следующее сообщение об ошибке:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
Возможные причины
Прокси-сервер Envoy выдаст ошибку HTTP 403
, если произойдет одно из следующих условий:
Причина | Описание | Инструкции по устранению неполадок применимы для |
---|---|---|
Продукт API не включен | Продукт API не включен для конкретной среды. | Пользователи Edge Public и Private Cloud |
В продукте API отсутствует путь URI целевой службы. | Путь URI целевой службы отсутствует или не добавлен в продукт API в разделе «Ресурсы API». | Пользователи Edge Public и Private Cloud |
Отсутствует имя хоста в продукте API | Имя хоста, указанное в запросе клиентского API, отсутствует в продукте API в целях удаленного обслуживания Apigee. | Пользователи Edge Public и Private Cloud |
В заголовке запроса отсутствует ключ API. | Ключ API не передается в HTTP-заголовке x-api-key . | Пользователи Edge Public и Private Cloud |
Неверный ключ API | Ключ API, переданный как часть запроса, недействителен. | Пользователи Edge Public и Private Cloud |
Адаптер Apigee для Envoy не может связаться с прокси-сервером API удаленного обслуживания. | Адаптер Apigee для Envoy не может связаться с прокси-сервером API удаленного обслуживания. | Пользователи Edge Public и Private Cloud |
Прокси-сервер Envoy не может связаться с адаптером Apigee для Envoy | Прокси-сервер Envoy не может связаться с адаптером Apigee для Envoy | Пользователи Edge Public и Private Cloud |
Прежде чем начать
- Убедитесь, что вы получаете ответное сообщение
403 Forbidden
от прокси-сервера Envoy. Например:curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
Включите журналы отладки:
Убедитесь, что вы включили журналы отладки в адаптере Apigee для Envoy, чтобы получить более подробную информацию об ошибке. Если нет, остановите адаптер Apigee для Envoy и запустите его снова, включив журналы отладки, используя следующую команду:
apigee-remote-service-envoy -c config.yaml -l debug
Причина: продукт API не включен.
Эта ошибка возникает, если конкретный продукт API, используемый прокси-сервером Envoy, не включен в конкретной среде, в которой вызываются вызовы API.
Диагностика
Для диагностики проблемы выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в разделе
Authorizing request
отображается следующее сообщение:product: API_PRODUCT_NAME not found
Пример вывода журнала отладки:
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
В приведенном выше примере показано, что продукт API
ENVOY-PRODUCT-1
не был найден в адаптере Apigee для Envoy.Дополнительную информацию о ведении журналов Apigee Adaptor for Envoy см. в разделе Ведение журналов .
- Если вы видите это сообщение при авторизации запроса API, то это, скорее всего, означает, что конкретный Продукт API не включен для конкретной среды, в которой вы выполняете вызовы API.
- Чтобы убедиться в этом, выполните следующие действия:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация» > «Продукты API» выберите конкретный продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- Убедитесь, что конкретная среда, в которой вы отправляете запросы API, включена в продукте API.
- Если конкретная среда не включена в продукте API, это и есть причина этой проблемы.
- Если конкретная среда уже включена, перейдите к разделу Причина: отсутствует путь URI целевой службы в продукте API .
Разрешение
Если конкретная среда не включена в продукте API, выполните следующие действия для решения проблемы:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация» > «Продукты API» выберите конкретный продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице Продукты API > Название продукта нажмите Изменить .
- Включите конкретную среду, в которой вы хотите отправлять запросы API, установив флажок соответствующей среды.
- Нажмите Сохранить .
Причина: в продукте API отсутствует путь URI целевой службы.
Эта ошибка произойдет, если путь URI цели не указан в конкретном продукте API, используемом прокси-сервером Envoy.
Диагностика
Для диагностики проблемы выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что следующее сообщение отображается для конкретного продукта API, связанного с определенной целью, в разделе
Authorizing request
:no path: REQUEST_URI_PATH
Пример вывода журнала отладки:
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
Пример вывода показывает сообщение:
no path: /echo1
Это указывает на то, что путь
/echo1
не найден в продукте APIENVOY-PRODUCT-1
.- Если вы видите сообщение
no path: REQUEST_URI_PATH
в журналах отладки адаптера Apigee для Envoy, то это причина этой проблемы. Если нет, перейдите к разделу «Причина: в продукте API отсутствует имя хоста» .
Разрешение
Если конкретный URI запроса не добавлен в продукт API для конкретной цели, выполните следующие действия, чтобы решить проблему:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация» > «Продукты API» выберите конкретный продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице Продукты API > Название продукта нажмите Изменить .
- На панели ресурсов API добавьте URI запроса API к продукту API.
- Отслеживайте журналы адаптера Apigee для Envoy и подождите, пока адаптер Apigee для Envoy не получит обновленный продукт API. После этого отправьте еще один запрос API, чтобы проверить исправление.
Причина: в продукте API отсутствует имя хоста.
Эта ошибка возникнет, если комбинация целевого имени хоста и порта не добавлена к конкретному продукту API, используемому прокси-сервером Envoy.
Диагностика
Для диагностики проблемы выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что следующее сообщение отображается для конкретного продукта API, связанного с определенной целью, в разделе
Authorizing request
:no targets: HOSTNAME:PORT
Пример вывода журнала отладки:
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
В приведенном выше примере показано, что комбинация имени хоста и порта
httpbin1:8080
не найдена в продукте APIENVOY-PRODUCT-1
.- Если журналы Apigee Adaptor for Envoy содержат запись с сообщением
no targets: HOSTNAME : PORT
при авторизации запроса, то это является причиной проблемы. Если нет, перейдите к разделу «Причина: отсутствует ключ API в заголовке запроса» .
Разрешение
Если целевое имя хоста и комбинация порта не добавлены в продукт API, выполните следующие действия, чтобы решить проблему:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация» > «Продукты API» выберите конкретный продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице Продукты API > Название продукта нажмите Изменить .
На панели «Цели удаленной службы Apigee» добавьте имя и порт целевого хоста и нажмите « Сохранить» .
Если вы не видите раздел «Цели удаленной службы Apigee» в пользовательском интерфейсе, добавьте к продукту API настраиваемый атрибут с именем
apigee-remote-service-targets
и добавьте значение HOSTNAME : PORT с помощью Edge API. Например:curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \ -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type:application/json" \ -d \ { "apiResources": [ "/echo", "/verifyApiKey" ], "approvalType": "auto", "attributes": [ { "name": "access", "value": "public" }, { "name": "apigee-remote-service-targets", "value": "localhost:8080" } ], "createdAt": 1610435989556, "createdBy": "---masked---", "description": "", "displayName": "ENVOY-PRODUCT-1", "environments": [ "test" ], "lastModifiedAt": 1612234134060, "lastModifiedBy": "---masked---", "name": "ENVOY-PRODUCT-1", "proxies": [ "remote-service" ], "scopes": [] }
- После выполнения вышеуказанной задачи проследите за журналами адаптера Apigee для Envoy и подождите, пока адаптер Apigee для Envoy не получит обновленный продукт API. После этого отправьте еще один запрос API, чтобы проверить исправление.
Причина: в заголовке запроса отсутствует ключ API.
Эта ошибка произойдет, если ключ API не будет передан как часть заголовков запроса.
Диагностика
Для диагностики проблемы выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что вы видите сообщение
[missing authentication]
в разделеAuthenticate error
.Пример вывода журнала отладки:
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
Пример вывода, показанный выше, содержит сообщение
[missing authentication]
. Это сообщение указывает на то, что ключ API не передается как часть заголовка запроса. - Если журналы Apigee Adaptor for Envoy содержат запись журнала с сообщением
[missing authentication]
в разделеAuthenticate error
, то это является причиной проблемы. Если нет, перейдите к разделу «Причина: неверный ключ API» .
Разрешение
Если в журналах адаптера Apigee for Envoy отобразилась ошибка [missing authentication]
, выполните следующие действия для решения проблемы:
- Проверьте, отправил ли клиент ключ API, используя HTTP-заголовок
x-api-key
в запросе API. Если нет, попросите клиента отправить ключ API в HTTP-заголовкеx-api-key
. - Проверьте файл конфигурации Apigee Adaptor for Envoy и убедитесь, что имя заголовка ключа API по умолчанию
x-api-key
было изменено, например:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
В приведенном выше примере имя заголовка API-ключа по умолчанию было изменено на
api-key
. В этом случае вам необходимо передать ключ API как часть заголовкаapi-key
. - Если имя заголовка ключа API по умолчанию было изменено, попросите клиента использовать обновленное имя заголовка ключа API, отправьте еще один запрос API и проверьте, решает ли это проблему.
Причина: неверный ключ API.
Эта ошибка произойдет, если в составе заголовка запроса будет передан неверный ключ API.
Диагностика
Для диагностики проблемы выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что вы видите сообщение
[permission denied]
в разделеAuthenticate error
. Обычно это отображается после того, как адаптер извлекает ключ API, на что указывает сообщениеfetchToken fetching: API_KEY
.Пример вывода журнала отладки:
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
В этом примере ключ API, отправленный в запросе API, недействителен.
- Если журналы Apigee Adaptor for Envoy содержат запись журнала с
[permission denied]
в разделеAuthenticate error
, это указывает на то, что ключ API, переданный как часть запроса, недействителен и является причиной проблемы. Если нет, перейдите к разделу «Причина: адаптер Apigee для Envoy не может связаться с прокси-сервером API удаленного обслуживания» .
Разрешение
Если в разделе Authenticate error
в журналах адаптера Apigee для Envoy отображается сообщение [permission denied]
, выполните следующие действия, чтобы решить проблему:
- Сравните ключ API, отправленный в запросе API, со значением ключа API, найденным в приложении, подключенном к продукту API.
- Если ключ API, используемый клиентом, недействителен, попросите клиента отправить действительный ключ API.
- Если ключ API, используемый клиентом, действителен и вы по-прежнему видите ошибку HTTP
403
, обратитесь в службу поддержки Apigee Edge для дальнейшего изучения этой проблемы.
Причина: адаптер Apigee для Envoy не может связаться с прокси-сервером API удаленного обслуживания.
Эта ошибка возникает, если адаптер Apigee для Envoy не может связаться с прокси-сервером API удаленной службы, если настроенный хост удаленной службы недействителен.
Диагностика
Для диагностики проблемы выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что вы видите следующее сообщение:
Error retrieving products: REQUEST_URI: no such host
Пример вывода журнала отладки:
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
В этом примере адаптер Apigee для Envoy не смог связаться с прокси-сервером API удаленного сервиса, поскольку имя хоста, указанное в URL-адресе прокси-сервера API удаленного сервера, недействительно, на что указывает ошибка
no such host
.- Если журналы Apigee Adaptor for Envoy содержат запись с сообщением
no such host
, то это и есть причина проблемы. Если нет, перейдите к разделу «Причина: прокси-сервер Envoy не может связаться с адаптером Apigee для Envoy» .
Разрешение
Если вышеуказанные ошибки отображаются в журналах адаптера Apigee для Envoy, выполните следующие действия для решения проблемы:
Проверьте файл конфигурации Apigee Adaptor for Envoy и убедитесь, что указанный URL-адрес прокси-сервера API удаленного обслуживания действителен.
Если нет, остановите адаптер Apigee для Envoy, исправьте URL-адрес прокси-сервера API удаленной службы в файле конфигурации, запустите адаптер Apigee для Envoy, отправьте еще один запрос API и проверьте исправление.
Пример конфигурации:
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRET
- Убедитесь, что прокси
remote-service
развернут в соответствующей пограничной среде. Если нет, разверните проксиremote-service
в соответствующей среде Edge и повторите попытку. - Проверьте сетевое соединение между адаптером Apigee для Envoy и конечной точкой прокси
remote-service
. Если обнаружены какие-либо проблемы с сетевым подключением, обратитесь к своей сетевой команде и попытайтесь решить проблему.
Причина: прокси-сервер Envoy не может связаться с адаптером Apigee для Envoy.
Диагностика
Для диагностики проблемы выполните следующие действия:
Убедитесь, что вы включили журналы отладки в Envoy. Если нет, остановите Envoy и запустите его снова, включив журналы отладки. Затем отправьте еще один запрос API.
Автономные развертывания:
envoy -c envoy-config.yaml -l debug
Развертывания на базе Kubernetes/Istio:
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в журнале есть запись с сообщением:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
за которым затем следует:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
Пример вывода журнала отладки:
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
В приведенном выше примере показано, что Envoy не смог связаться с Apigee Adaptor for Envoy по причине
connection failure
. -
connection failure
может быть вызван несколькими причинами. Давайте рассмотрим каждый из сценариев.
Сценарий № 1: Процесс адаптера не запущен
Если процесс Apigee Adaptor for Envoy не запущен, может возникнуть эта ошибка.
- Убедитесь, что процесс Apigee Adaptor for Envoy запущен, выполнив следующую команду. Если процесс Apigee Adaptor for Envoy запущен, в результате выполнения следующей команды он должен быть указан.
ps -ef | grep apigee-remote-service-envoy
- Если он не запускается, то это и есть причина проблемы.
Разрешение
- Если процесс Apigee Adaptor for Envoy не запущен, запустите Apigee Adaptor for Envoy.
- Сделайте еще один запрос API и проверьте, устранена ли проблема.
Сценарий №2: Процесс адаптера не прослушивает определенный порт
Если процесс Apigee Adaptor for Envoy не прослушивает определенный порт, может возникнуть эта ошибка.
Если процесс Apigee Adaptor for Envoy запущен, убедитесь, что есть сокет, прослушивающий порт 5000: APIGEE_ENVOY_ADAPTER_HOST :5000
. Вы можете запустить команду netstat
, чтобы проверить это:
sudo netstat -lnp | grep 5000
Пример вывода:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
Если порт 5000 не прослушивает сокет, это может быть причиной этой проблемы.
Разрешение
- Остановите адаптер Apigee для Envoy и запустите его снова.
- Сделайте еще один запрос API и проверьте, устранена ли проблема.
Сценарий №3: Сетевое соединение между Envoy и адаптером Apigee для Envoy
- Проверьте сетевое соединение между Envoy и адаптером Apigee для Envoy:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
Если telnet сможет установить TCP-соединение с адаптером Apigee для Envoy, будет отображен вывод, аналогичный следующему:
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- Если вы заметили ошибку «
Connection timed out
с помощью telnet», это указывает на проблему с сетевым подключением между Envoy и адаптером Apigee для Envoy.
Разрешение
Если вы обнаружите какие-либо проблемы с сетевым подключением между Envoy и адаптером Apigee для Envoy, обратитесь к своей сетевой команде и попытайтесь решить проблему.
Если проблема не устранена, перейдите к разделу «Необходимо собрать диагностическую информацию» .
Необходимо собрать диагностическую информацию
Если проблема не устранена после выполнения приведенных выше инструкций, соберите следующую диагностическую информацию, а затем обратитесь в службу поддержки Apigee Edge :
Используемый продукт Apigee:
Пример: Apigee Edge Cloud, Apigee OPDK, Apigee Hybrid, Apigee X.
- Организация и окружающая среда Apigee
Определение продукта API, считываемое с помощью Edge API:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
Ссылка: API Apigee Edge.
Запустите сеанс трассировки в прокси
remote-service
с помощью пользовательского интерфейса Apigee Edge. Воспроизведите эту проблему и поделитесь XML-файлом сеанса трассировки.Ссылка: Использование инструмента «Трассировка» | Апигей Край
Адаптер Apigee для журналов Envoy (полные журналы за указанный период времени)
Автономные развертывания:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Развертывания на базе Kubernetes/Istio:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- Запрос API, отправленный прокси-серверу Envoy с помощью команды
curl
(полный вывод командыcurl
):curl -v ENVOY_PROXY_ENDPOINT
- Запрос API, отправленный целевой службе с помощью команды
curl
(полный вывод командыcurl
):curl -v TARGET_SERVICE_ENDPOINT