Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
Envoy Proxy, üzerinden çağrıldığında HTTP 403 Forbidden
hatasıyla başarısız oluyor
Envoy için Apigee Adapter.
Hata mesajı
Aşağıdaki hata mesajı görüntülenir:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
Olası nedenler
Envoy proxy, aşağıdaki koşullardan biri geçerliyse HTTP 403
hatası verir
gerçekleşenler:
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
API ürünü etkin değil | API ürünü, ilgili ortam için etkinleştirilmedi. | Edge Herkese Açık ve Private Cloud kullanıcıları |
API Ürününde hedef hizmet URI'si yolu eksik | Hedef hizmetin URI yolu eksik veya API altındaki API ürününe eklenmemiş kaynaklar. | Edge Herkese Açık ve Private Cloud kullanıcıları |
API ürününde eksik ana makine adı | İstemci API isteğinde belirtilen ana makine adı, Apigee kapsamındaki API ürününde eksik uzaktan hizmet hedefleridir. | Edge Herkese Açık ve Private Cloud kullanıcıları |
İstek başlığında API anahtarı eksik | API anahtarı, x-api-key HTTP başlığında geçirilmiyor. |
Edge Herkese Açık ve Private Cloud kullanıcıları |
Geçersiz API anahtarı | İsteğin bir parçası olarak iletilen API anahtarı geçersiz. | Edge Herkese Açık ve Private Cloud kullanıcıları |
Envoy için Apigee Adapter şu işlemi yapamıyor: Remote-service API proxy'si ile iletişim kurma | Apigee Adapter for Envoy, uzaktan hizmet API proxy'si ile iletişim kuramıyor. | Edge Herkese Açık ve Private Cloud kullanıcıları |
Envoy proxy iletişim kuramıyor Envoy için Apigee Adapter ile | Envoy proxy, Apigee Adapter for Envoy ile iletişim kuramıyor | Edge Herkese Açık ve Private Cloud kullanıcıları |
Başlamadan önce
- Şuradan
403 Forbidden
yanıt mesajını aldığınızı doğrulayın: Envoy proxy'si. Örnek: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
. Hata ayıklama günlüklerini etkinleştirin:
Cihazlarla ilgili daha ayrıntılı bilgi edinmek için Apigee Adapter for Envoy'da hata ayıklama günlüklerini etkinleştirdiğinizden emin olun. gösterir. Sorun çözülmediyse Apigee Adapter for Envoy'u durdurup hata ayıklama günlüklerini etkinleştirin. kullanabilirsiniz:
apigee-remote-service-envoy -c config.yaml -l debug
Neden: API ürünü etkin değil
Bu hata, Envoy Proxy tarafından kullanılan belirli API Ürünü API çağrılarının çağrıldığı belirli ortam.
Teşhis
Sorunu teşhis etmek için aşağıdaki adımları uygulayın:
- Hata ayıklama günlüklerini yukarıdaki 2. adımda açıklandığı şekilde etkinleştirin.
- Apigee Adapter for Envoy günlüklerini kontrol edin ve aşağıdaki mesajın görüntülendiğini doğrulayın.
Authorizing request
bölümünde:product: API_PRODUCT_NAME not found
Örnek Hata Ayıklama Günlüğü Çıktısı:
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
Yukarıdaki örnek,
ENVOY-PRODUCT-1
API ürünü şu konumda bulunamadı: Envoy için Apigee Adapter.Envoy günlük kaydı için Apigee Adapter hakkında daha fazla bilgi edinmek istiyorsanız Günlük kaydı.
- API isteğini yetkilendirirken bu iletiyi görürseniz büyük olasılıkla bu, söz konusu API Ürünü, kullandığınız belirli bir ortam için etkinleştirilmez. yapmalarına yardımcı oluyor.
- Bunu doğrulamak için aşağıdaki adımları uygulayın:
- Edge kullanıcı arayüzüne giriş yapın.
- Yayınla > API ürünleri sayfasında ise kullandığınız API ürününü tıklayın Envoy için Apigee Adapter'ı yapılandırmak amacıyla kullanılır.
- API isteklerinde bulunduğunuz belirli ortamın etkinleştirildiğinden emin olun.
- Belirli bir ortam API ürününde etkinleştirilmemişse bunun nedeni budur iletişime geçin.
- İlgili ortam zaten etkinleştirilmişse şuraya gidin: Neden: API Ürününde hedef hizmet URI'si yolu eksik.
Çözünürlük
İlgili ortam API ürününde etkinleştirilmemişse aşağıdaki adımları uygulayarak sorunu çözün:
- Edge kullanıcı arayüzüne giriş yapın.
- Yayınla > API ürünleri sayfasında kullandığınız belirli API ürününü tıklayın Apigee Adapter for Envoy'u yapılandırdık.
- API ürünleri > Ürün adı sayfasında Düzenle'yi tıklayın.
- Şu seçeneği belirleyerek API isteklerinde bulunmak istediğiniz belirli ortamı etkinleştirin: ilgili ortam onay kutusunu işaretleyin.
- Kaydet'i tıklayın.
Neden: API ürününde hedef hizmet URI'si yolu eksik
Bu hata, hedefin URI yolu kullanılan API Ürünü'nde belirtilmemişse ortaya çıkar (Envoy Proxy tarafından)
Teşhis
Sorunu teşhis etmek için aşağıdaki adımları uygulayın:
- Hata ayıklama günlüklerini yukarıdaki 2. adımda açıklandığı şekilde etkinleştirin.
-
Apigee Adapter for Envoy günlüklerini kontrol edin ve aşağıdaki mesajın olduğunu doğrulayın: bölümünün altında belirli bir hedefle ilişkilendirilmiş belirli API ürünü için görüntülenir.
Authorizing request
:no path: REQUEST_URI_PATH
Örnek Hata Ayıklama Günlüğü Çıktısı:
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)
Örnek çıkışta şu mesaj gösterilir:
no path: /echo1
Bu,
/echo1
yolunun API ürününde bulunmadığını gösterirENVOY-PRODUCT-1
. no path: REQUEST_URI_PATH
mesajını Apigee Adapter for Envoy hata ayıklama günlükleri o zaman sorunun nedenidir. Değilse şu sayfaya gidin: Neden: API ürününde ana makine adı eksik.
Çözünürlük
Belirli hedef için API Ürünü'ne belirli bir istek URI'sı eklenmezse sorunu çözmek için aşağıdaki adımları uygulayın:
- Edge kullanıcı arayüzüne giriş yapın.
- Yayınla > API ürünleri sayfasında ise kullandığınız API ürününü tıklayın Envoy için Apigee Adapter'ı yapılandırmak amacıyla kullanılır.
- API ürünleri > Ürün adı sayfasında Düzenle'yi tıklayın.
- API kaynakları bölmesinde, API ürününe API istek URI'sını ekleyin.
- Envoy günlükleri için Apigee Adapter'ı izleyin ve Envoy için Apigee Adapter'ın kullanılmasını bekleyin Güncellenmiş API ürününü getirir. Ardından, düzeltmeyi doğrulamak için başka bir API isteği gönderin.
Neden: API ürününde ana makine adı eksik
Bu hata, hedef ana makine adı ve bağlantı noktası kombinasyonu, belirtilen spesifik Envoy Proxy tarafından kullanılan API Ürünü.
Teşhis
Sorunu teşhis etmek için aşağıdaki adımları uygulayın:
- Hata ayıklama günlüklerini yukarıdaki 2. adımda açıklandığı şekilde etkinleştirin.
Apigee Adapter for Envoy günlüklerini kontrol edin ve aşağıdaki mesajın olduğunu doğrulayın: bölümünün altında belirli bir hedefle ilişkilendirilmiş belirli API ürünü için görüntülenir.
Authorizing request
:no targets: HOSTNAME:PORT
Örnek Hata Ayıklama Günlüğü Çıktısı:
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)
Yukarıdaki örnekte ana makine adı ve bağlantı noktası kombinasyonu gösterilmektedir:
httpbin1:8080
ENVOY-PRODUCT-1
API ürününde bulunamadı.- Apigee Adapter for Envoy günlüklerinde, isteği yetkilendirirken
no targets: HOSTNAME:PORT
mesajı içeren bir giriş bulunuyorsa bu giriş bir açıklama ekleyin. Değilse şu sayfaya gidin: Neden: İstek başlığında API anahtarı eksik.
Çözünürlük
Hedef ana makine adı ve bağlantı noktası kombinasyonu API ürününe eklenmezse sorunu çözmek için aşağıdaki adımları uygulayın:
- Edge kullanıcı arayüzüne giriş yapın.
- Yayınla > API ürünleri sayfasında ise kullandığınız API ürününü tıklayın Envoy için Apigee Adapter'ı yapılandırmak amacıyla kullanılır.
- API ürünleri > Ürün adı sayfasında Düzenle'yi tıklayın.
Apigee uzak hizmet hedefleri bölmesinde hedef ana makine adını ekleyin ve ve Kaydet'i tıklayın.
Kullanıcı arayüzünde Apigee uzaktan hizmet hedefleri bölümünü görmüyorsanız, API ürününe
apigee-remote-service-targets
adını ve HOSTNAME:PORT değerini girin. Örneğin: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": [] }
.- Yukarıdaki görev tamamlandıktan sonra Envoy günlükleri için Apigee Adapter'ı izleyin ve Apigee Adapter for Envoy, güncellenmiş API ürününü getiriyor. Ardından başka bir API gönderin düzeltmeyi doğrulama isteğinde bulunun.
Neden: İstek başlığında API anahtarı eksik
Bu hata, API Anahtarı istek başlıklarının bir parçası olarak iletilmezse ortaya çıkar.
Teşhis
Sorunu teşhis etmek için aşağıdaki adımları uygulayın:
- Hata ayıklama günlüklerini yukarıdaki 2. adımda açıklandığı şekilde etkinleştirin.
- Apigee Adapter for Envoy günlüklerini kontrol edin ve burada
Authenticate error
altında[missing authentication]
mesaj bölümüne bakın.Örnek Hata Ayıklama Günlüğü Çıktısı:
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
Yukarıda gösterilen örnek çıkışta
[missing authentication]
mesajı bulunuyor. Bu mesaj, API anahtarının istek başlığı ekleyin. - Apigee Adapter for Envoy günlüklerinde,
Authenticate error
bölümünün altında[missing authentication]
mesajını içeren bir günlük girişi bulunuyorsa bu bir açıklama ekleyin. Değilse şu sayfaya gidin: Neden: Geçersiz API anahtarı.
Çözünürlük
[missing authentication]
hatası
Apigee Adapter for Envoy günlükleri, sorunu çözmek için aşağıdaki adımları uygulayın:
- İstemcinin API anahtarını HTTP üstbilgisini
x-api-key
kullanarak gönderip göndermediğini kontrol edin. API isteği. İlişkilendirilmemişse istemcinin HTTP başlığında API anahtarını göndermesini isteyinx-api-key
- Apigee Adapter for Envoy yapılandırma dosyasını kontrol edin ve varsayılan API anahtarının
başlık adı
x-api-key
değiştirildi, örneğin:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
Yukarıdaki örnekte varsayılan API anahtarı başlığı adı
api-key
Bu durumda, başlığın bir parçası olarak API Anahtarını iletmeniz gerekirapi-key
- Varsayılan API anahtarı başlığı adı değiştirildiyse istemciden API anahtarı başlığı adına gidip başka bir API isteği gönderip sorunun çözülüp çözülmediğini doğrulayın.
Neden: Geçersiz API anahtarı
Bu hata, istek başlığının bir parçası olarak geçersiz API anahtarı iletildiğinde ortaya çıkar.
Teşhis
Sorunu teşhis etmek için aşağıdaki adımları uygulayın:
- Hata ayıklama günlüklerini yukarıdaki 2. adımda açıklandığı şekilde etkinleştirin.
- Apigee Adapter for Envoy günlüklerini kontrol edin ve aşağıdaki mesajı gördüğünüzden emin olun:
[permission denied]
Authenticate error
bölümünde. Bu genellikle API Anahtarı Bağdaştırıcı tarafından alındıktan sonra görüntülenir.fetchToken fetching: API_KEY
mesajı.Örnek Hata Ayıklama Günlüğü Çıktısı:
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)
Bu örnekte, API isteğinde gönderilen API anahtarı geçerli değildir.
- Apigee Adapter for Envoy günlüklerinde,
Authenticate error
bölümünün altında[permission denied]
bulunan bir günlük girişi bulunuyorsa bu giriş şunları gösterir: İsteğin bir parçası olarak iletilen API Anahtarı geçersiz ve sorunun nedeni bu. Değilse şu sayfaya gidin: Neden: Envoy için Apigee Adapter uzaktan hizmet API proxy'si ile iletişim kuramıyor.
Çözünürlük
Apigee Adapter for Envoy günlüklerindeki Authenticate
error
bölümünde [permission denied]
mesajı gözlemleniyorsa aşağıdaki adımları uygulayın
sorunu çözmek için:
- API isteğinde gönderilen API anahtarını, API ürününe bağlı olması gerekir.
- İstemci tarafından kullanılan API anahtarı geçerli değilse istemciden geçerli API Anahtarını göndermesini isteyin.
- İstemci tarafından kullanılan API anahtarı geçerliyse ve HTTP görmeye devam ediyorsanız
403
hatası. Bu sorunun daha ayrıntılı olarak araştırılması için lütfen Apigee Edge Destek Ekibi ile iletişime geçin.
Neden: Envoy için Apigee Adapter, uzaktan hizmet API proxy'si ile iletişim kuramıyor
Bu hata, Apigee Adapter for Envoy uzaktan kumandayla iletişim kuramadığında oluşur service API Proxy'sini kullanın.
Teşhis
Sorunu teşhis etmek için aşağıdaki adımları uygulayın:
- Hata ayıklama günlüklerini yukarıdaki 2. adımda açıklandığı şekilde etkinleştirin.
-
Apigee Adapter for Envoy günlüklerini kontrol edin ve şu mesajı gördüğünüzden emin olun:
Error retrieving products: REQUEST_URI: no such host
Örnek Hata Ayıklama Günlüğü Çıktısı:
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
Bu örnekte Apigee Adapter for Envoy, Remote-service API proxy'si, çünkü uzak sunucu API Proxy'sinde sağlanan ana makine adı
no such host
hatasıyla belirtildiği gibi URL geçerli değil . - Apigee Adapter for Envoy günlüklerinde,
no such host
mesajı içeren bir günlük girişi varsa sorunun nedeni budur. Değilse şu sayfaya gidin: Neden: Envoy proxy, Apigee Adapter for Envoy ile iletişim kuramıyor.
Çözünürlük
Apigee Adapter for Envoy günlüklerinde yukarıdaki hatalar gösteriliyorsa aşağıdaki işlemleri yapın: adımları uygulayın:
Apigee Adapter for Envoy yapılandırma dosyasını kontrol edin ve verilen Remote-service API proxy URL'si geçerli.
Değilse Envoy için Apigee Adapter'ı durdurun, uzaktan hizmet API proxy'si URL'sini şuradan düzeltin: yapılandırma dosyasını yüklemek için Apigee Adapter for Envoy'u başlatın ve başka bir API isteği göndererek ve düzeltmeyi doğrulayın.
Örnek yapılandırma:
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
API proxy'sinin ilgili Edge'de dağıtıldığını doğrulayın bahsedeceğim. Aksi takdirderemote-service
API proxy'sini ilgili Uçta dağıtın ortama gidip tekrar deneyin.- Apigee Adapter for Envoy ve
remote-service
API proxy uç noktası. Ağ bağlantısı varsa tespit ettikten sonra, ağ ekibinizle bağlantı kurun ve sorunu çözmeye çalışın.
Neden: Envoy proxy, Envoy için Apigee Adapter ile iletişim kuramıyor
Teşhis
Sorunu teşhis etmek için aşağıdaki adımları uygulayın:
Envoy'da hata ayıklama günlüklerini etkinleştirdiğinizden emin olun. Açılmazsa Envoy'u durdurun ve tekrar başlatın. hata ayıklama günlüklerini etkinleştirin. Ardından başka bir API isteği gönderin.
Bağımsız dağıtımlar:
envoy -c envoy-config.yaml -l debug
Kubernetes/Istio tabanlı dağıtımlar:
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 Adapter for Envoy günlüklerini kontrol edin ve şu mesajı içeren bir günlük girişi olduğunu doğrulayın:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
.Ardından şu adım gelir:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
Örnek Hata Ayıklama Günlüğü Çıktısı:
[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'
Yukarıdaki örnekte, Envoy adlı cihazın
connection failure
nedeniyle Envoy için Apigee Adaptörü. connection failure
birden çok nedene bağlı olabilir. Her bir senaryoya bakalım.
1. Senaryo: Bağdaştırıcı işlemi çalışmıyor
Apigee Adapter for Envoy işlemi çalışmıyorsa bu hata oluşabilir.
- Aşağıdaki komutu çalıştırarak Apigee Adapter for Envoy işleminin çalıştığını doğrulayın
komutunu kullanın. Apigee Adapter for Envoy işlemi çalışıyorsa aşağıdaki sonuçlar
komutu bu komutu listeleyecektir.
ps -ef | grep apigee-remote-service-envoy
- Cihazınız çalışmıyorsa sorunun nedeni budur.
Çözünürlük
- Apigee Adapter for Envoy işlemi çalışmıyorsa Envoy için Apigee Adapter.
- Başka bir API isteğinde bulunun ve sorunun düzelip düzelmediğini doğrulayın.
2. Senaryo: Bağdaştırıcı işlemi belirli bağlantı noktasında dinlemiyor
Apigee Adapter for Envoy işlemi, ilgili bağlantı noktasında dinleme yapmıyorsa bu hata oluşabilir.
Envoy için Apigee Adapter işlemi çalışıyorsa dinlemede bir yuva olduğundan emin olun
bağlantı noktası 5000: APIGEE_ENVOY_ADAPTER_HOST:5000
. Bu URL'yi
Bunu doğrulamak için netstat
komutunu kullanın:
sudo netstat -lnp | grep 5000
Örnek çıkış:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
5000 numaralı bağlantı noktasında dinleme bağlantısı yoksa sorunun nedeni bu olabilir.
Çözünürlük
- Apigee Adapter for Envoy'u durdurup tekrar başlatın.
- Başka bir API isteğinde bulunun ve sorunun düzelip düzelmediğini doğrulayın.
3. Senaryo: Envoy ile Apigee Adapter for Envoy Arasında Ağ Bağlantısı
- Envoy ile Apigee Adapter for Envoy arasındaki ağ bağlantısını doğrulayın:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
.Telnet, Envoy için Apigee Adapter ile TCP bağlantısı kurabilseydi şuna benzer bir çıkış görüntülenir:
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- Telnet’te
Connection timed out
hatasıyla karşılaşırsanız, bu durum telnet Envoy ile Apigee Adapter for Envoy arasında bir ağ bağlantısı sorunu var.
Çözünürlük
Envoy ile Apigee Adapter for Envoy arasında ağ bağlantısı sorunuyla karşılaşırsanız lütfen ağ ekibinizle etkileşim kurun ve sorunu çözmeye çalışın.
Sorun devam ederse şu adrese gidin: Teşhis bilgileri toplanmalıdır.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uyguladıktan sonra sorun devam ederse aşağıdaki teşhisleri toplayın bilgi edinin ve Apigee Edge Destek Ekibi ile iletişime geçin:
-
Kullanılan Apigee ürünü:
Örnek: Apigee Edge Cloud, Apigee OPDK, Apigee hybrid, Apigee X
- Apigee kuruluşu ve ortamı
Edge API'yi kullanarak API ürün tanımını okuma:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
Referans: Apigee Edge API'leri
Şunu kullanarak
remote-service
API proxy'sinde bir izleme oturumu başlatın: Apigee Edge kullanıcı arayüzü. Bu sorunu yeniden oluşturun ve İzleme oturumu XML dosyasını paylaşın.Referans: İzleme aracını kullanma | Apigee Edge
Apigee Adapter for Envoy günlükleri (belirtilen dönemle ilgili eksiksiz günlükler)
Bağımsız dağıtımlar:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Kubernetes/Istio tabanlı dağıtımlar:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
curl
komutu kullanılarak Envoy proxy'ye gönderilen bir API isteği (curl
komutunun tam çıkışı):curl -v ENVOY_PROXY_ENDPOINT
curl
komutu kullanılarak hedef hizmete gönderilen bir API isteği (tamcurl
komutunun çıkışı):curl -v TARGET_SERVICE_ENDPOINT