Antipattern: Aynı ana makine takma adına ve bağlantı noktası numarasına sahip birden fazla sanal ana makine tanımlama

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Apigee Edge'de Yönlendirici, tüm gelen API trafiğini işler. Bu nedenle, bir Edge API proxy'sine yapılan tüm HTTP ve HTTPS istekleri önce bir Edge yönlendirici tarafından işlenir. Bu nedenle, API proxy isteği bir yönlendiricideki IP adresine ve açık bağlantı noktasına yönlendirilmelidir.

Sanal ana makine, tek bir sunucuda veya sunucu grubunda birden fazla alan adı barındırmanıza olanak tanır. Edge için sunucular, Edge yönlendiricilere karşılık gelir. Bir yönlendiricide sanal ana makineler tanımlayarak birden fazla alana yönelik istekleri işleyebilirsiniz.

Edge'deki bir sanal ana makine, yönlendirici bağlantı noktası ve ana makine takma adıyla birlikte bir protokol (HTTP veya HTTPS) tanımlar. Ana makine takma adı genellikle bir yönlendiricinin IP adresiyle eşlenen bir DNS alan adıdır.

Örneğin, aşağıdaki resimde iki sanal ana makine tanımı olan bir yönlendirici gösterilmektedir:

Bu örnekte iki sanal ana makine tanımı vardır. Biri domainName1 alanındaki HTTPS isteklerini, diğeri ise domainName2 alanındaki HTTP isteklerini işler.

Bir API proxy'sine yapılan istekte Yönlendirici, gelen isteğin ana makine başlığını ve bağlantı noktası numarasını tüm sanal ana makineler tarafından tanımlanan ana makine takma adları listesiyle karşılaştırarak isteği hangi sanal ana makinenin işleyeceğini belirler.

Sanal ana makineler için örnek yapılandırma aşağıda gösterilmiştir:

örnek vhost yapılandırması

Antipattern

Bir kuruluşun aynı/farklı ortamlarında veya kuruluşlar arasında aynı ana makine takma adına ve bağlantı noktası numarasına sahip birden fazla sanal ana makine tanımlamak, API isteklerinin yönlendirilmesi sırasında karışıklığa yol açar ve beklenmedik hatalara/davranışlara neden olabilir.

Aynı ana makine takma adına sahip birden fazla sanal ana makinenin etkilerini açıklamak için bir örnek kullanalım.

Aynı ana makine takma adıyla sandbox and secure tanımlanmış iki sanal ana makine olduğunu varsayalım. api.company.abc.com ortamında:

Aynı takma ada sahip sanal ana makineler

Yukarıdaki kurulumla ilgili olarak aşağıdaki bölümlerde açıklanan iki senaryo olabilir.

Senaryo 1 : Bir API proxy'si, yalnızca sanal ana makinelerden birine (sandbox) yönelik istekleri kabul edecek şekilde yapılandırılmış

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Bu senaryoda, istemci uygulamaları api.company.abc.com ana makine takma adını kullanarak belirli API proxy'lerine çağrı yaptığında aralıklı olarak şu mesajla 404 hataları alır:

Unable to identify proxy for host: secure 

Bunun nedeni, yönlendiricinin istekleri hem sandbox hem de secure sanal ana makinelerine göndermesidir. İstekler sandbox sanal ana makinesine yönlendirildiğinde istemci uygulamaları başarılı bir yanıt alır. Ancak istekler secure sanal ana makinesine yönlendirildiğinde, API proxy'si secure sanal ana makinesinde istek kabul edecek şekilde yapılandırılmadığından istemci uygulamaları 404 hatası alır.

2. senaryo : Bir API proxy'si hem sanal ana makine sandbox'ına hem de secure'a yönelik istekleri kabul edecek şekilde yapılandırılıyor.

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Bu senaryoda, istemci uygulamaları ana makine takma adı api.company.abc.com kullanarak belirli bir API proxy'sine çağrı yaptığında proxy mantığına göre geçerli bir yanıt alır.

Ancak bu durum, API istekleri her iki sanal ana makineye de yönlendirildiğinden Analytics'te yanlış verilerin depolanmasına neden olur. Gerçek isteklerin ise yalnızca bir sanal ana makineye gönderilmesi amaçlanmıştır.

Bu durum, günlük kaydı bilgilerini ve sanal ana makinelere dayalı diğer verileri de etkileyebilir.

Etki

  1. API istekleri, API proxy'sinin istekleri kabul edecek şekilde yapılandırılmamış olabileceği bir sanal ana makineye yönlendirildiğinden 404 hataları oluşabilir.
  2. API istekleri yalnızca belirli bir sanal ana makine için yapılmış olmasına rağmen aynı ana makine takma adına sahip tüm sanal ana makinelere yönlendirildiğinden Analytics verileri yanlış.

En İyi Uygulama

  • Aynı ortamda veya bir kuruluşun farklı ortamlarında aynı ana makine takma adına ve bağlantı noktası numarasına sahip birden fazla sanal ana makine tanımlamayın.
  • Birden fazla sanal ana makine tanımlamanız gerekiyorsa her bir sanal ana makinede farklı ana makine takma adları kullanın.

    iki sanal ana makine

Daha fazla bilgi