Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
TargetEndpoint yapılandırması, Apigee Edge'in bir sunucuya arka uç hizmeti veya API'dir. İstekleri gönderir ve yanıtları alır arka uç hizmetini sağlar. Arka uç hizmeti bir HTTP/HTTPS sunucusu, NodeJS veya Barındırılan Hedef olabilir.
TargetEndpoint'teki arka uç hizmeti, aşağıdaki yöntemlerden biriyle çağrılabilir:
- HTTP veya HTTPS sunucusuna doğrudan URL
- Edge'de barındırılan bir Node.js komut dosyasına ScriptTarget
- Barındırılan Hedef Ortamda dağıtılan NodeJS'e HostedTarget
- TargetServer yapılandırması
Benzer şekilde, Hizmet Çağrısı politikası herhangi bir harici hizmete çağrı yapmak için kullanılabilir API Proxy akışından çıkarır. Bu politika, HTTP/HTTPS hedef URL'lerinin tanımlanmasını destekler. veya TargetServer yapılandırması kullanarak yapabilirsiniz.
TargetServer yapılandırması
TargetServer yapılandırması, somut uç nokta URL'lerini TargetEndpoint yapılandırmaları veya hizmet açıklama metni politikaları. TargetServer TargetEndpoint'teki URL yerine bir ada göre referans alın. TargetServer yapılandırması arka uç hizmetinin ana makine adı, bağlantı noktası numarası ve diğer ayrıntılara sahip olacaktır.
Aşağıda örnek bir TargetServer yapılandırması verilmiştir:
<TargetServer name="target1"> <Host>www.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>
TargetServer, her ortam için farklı yapılandırmalara sahip olmanızı sağlar. TargetEndpoint/Service Çağrı politikası, bir veya daha fazla adlandırılmış TargetServer ile yapılandırılabilir bir LoadBalancer kullanabilirsiniz. Yerleşik yük dengeleme desteği, kullanılabilirliği artırır ve yapılandırılmış arka uç sunucu örnekleri arasında yük devretmeyi içerir.
TargetServers kullanan bir örnek TargetEndpoint yapılandırması aşağıda verilmiştir:
<TargetEndpoint name="default"> <HTTPTargetConnection>> <LoadBalancer> <Server name="target1"/> <Server name="target2"/> </LoadBalancer> </HTTPTargetConnection> </TargetEndpoint>
MaxFailures
MaxFailures
yapılandırması, maksimum istek hatası sayısını belirtir
sonrasında, hedef sunucu devre dışı olarak işaretlenir ve kaldırılır.
bu ayarı döndürmez.
MaxFailures
içeren bir yapılandırma örneği belirtildi:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Server name="target1"/> <Server name="target2"/> <MaxFailures>5</MaxFailures> </LoadBalancer> </HTTPTargetConnection> </TargetEndpoint>
Yukarıdaki örnekte, "target1" için arka arkaya beş istek başarısız olduysa ardından "target1" rotasyondan kaldırılacak ve sonraki tüm istekler yalnızca target2'ye gönderilecek.
Antipattern
LoadBalancer
MaxFailures
ile Hedef Uç Nokta veya Hizmet Açıklama Metni Politikası
olumsuz etkileri olabileceği için önerilmez.
Tek bir TargetServer'a sahip aşağıdaki örnek yapılandırmayı göz önünde bulundurun
adlı "hedef1" MaxFailures
değeri 5 olarak (sıfır olmayan değer) ayarlanmış olarak:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <MaxFailures>5</MaxFailures> </LoadBalancer> </HTTPTargetConnection>
TargetServer "target1" istekleri beş kez başarısız olursa (sayı MaxFailures
cinsinden belirtilir),
TargetServer rotasyondan kaldırılır. Geçirilebilecek başka TargetServer olmadığından,
API Proxy'sine bu yapılandırmaya sahip olan sonraki tüm istekler
503 Service Unavailable
hata.
TargetServer "target1" olsa bile yeniden normal durumuna dönebilir ve bir süre daha başarılı yanıt gönderdiğinde, API Proxy'sine yapılan istekler 503 hataları döndürür. Bunun nedeni Edge'in TargetServer'ı otomatik olarak yerleştirmemesidir. çalışmaya devam eder. Bu sorunu gidermek için API Proxy'sinin yeniden dağıtılması gerekir Edge'in TargetServer'ı rotasyona geri alın.
Hizmet Çağrı Politikası'nda aynı yapılandırma kullanılıyorsa API de istekler, "target1" adlı TargetServer isteklerinden sonra 500 hatası alacak başarısız olduğunu görebilirsiniz.
Etki
Şu öğenin LoadBalancer
yapılandırmasında tek bir TargetServer kullanma:
MaxFailures
değeri bulunan Hedef Uç Nokta veya Hizmet Çağrı Politikası'nın sıfır olmayan bir değere ayarlanmasının nedenleri şunlardır:
- API Proxy'si yeniden dağıtılana kadar API İstekleri, (MaxFailures sayısı için başarısız olduktan sonra) sürekli olarak 503/500 Hataları ile başarısız olur.
- Kesinti daha uzun sürer ve bu sorunun nedenini teşhis etmek daha fazla zaman alabilir (bu antipattern hakkında önceden bilgi sahibi olmadan).
En İyi Uygulama
- Daha yüksek kullanılabilirlik için
LoadBalancer
yapılandırmasında birden fazla TargetServer bulundurun. MaxFailures
olduğunda her zaman bir Durum Monitörü tanımlayın değeri sıfır dışında bir değere ayarlanır. Şu durumda hedef sunucu rotasyondan kaldırılır: hata sayısıMaxFailures
ile belirtilen sayıya ulaşır. HealthMonitor'e sahip olmak, TargetServer'ın hedef sunucu tekrar kullanılabilir hale gelir gelmez; bunun anlamı, proxy'yi yeniden dağıtmanız gerekmez.Durum denetiminin Edge, hedef sunuculara bağlanmak için kullandığı için Apigee, Aksi takdirde,
<TCPMonitor>
altındaki<Port>
alt öğesi TargetServer bağlantı noktasından farklıdır.<Port>
varsayılan olarak TargetServer bağlantı noktası ile aynıdır.HealthMonitor ile örnek yapılandırma:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <Server name="target2" /> <MaxFailures>5</MaxFailures> </LoadBalancer> <Path>/test</Path> <HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <TCPMonitor> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> </TCPMonitor> </HealthMonitor> </HTTPTargetConnection> </TargetEndpoint>
Yalnızca bir TargetServer ve HealthMonitor uygulamasının yalnızca kullanılmazsa
LoadBalancer
yapılandırmasındaMaxFailures
belirtmeyin.MaxFailures'un varsayılan değeri 0'dır. Bu durumda, Edge her istek için hedefe bağlanmaya çalışır ve hedef sunucuyu rotasyondan hiçbir zaman kaldırmaz.