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. Yani bir Edge API proxy'sine yapılan tüm HTTP ve HTTPS istekleri önce bir Edge Yönlendiricisi tarafından işlenir. Bu nedenle, API proxy isteği IP adresine yönlendirilmeli ve yönlendiricideki açık bağlantı noktası gösterilmelidir.

Sanal ana makine, tek bir sunucuda veya sunucu grubunda birden fazla alan adı barındırmanıza olanak tanır. Edge'de ise sunucular Uç Yönlendiricilere karşılık gelir. Yönlendiricide sanal ana makineler tanımlayarak birden fazla alan adına yapılan istekleri ele alabilirsiniz.

Edge'deki sanal ana makine, bir Yönlendirici bağlantı noktası ve bir 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ına sahip bir Yönlendirici gösterilmektedir:

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

Bir API proxy'sine yapılan istekte Yönlendirici, gelen isteğin Ana makine üst bilgisini 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 gerçekleştireceğ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ı ve bağlantı noktası numarasıyla birden fazla sanal ana makine tanımlamak, API isteklerinin yönlendirilmesi sırasında kafa karışıklığına yol açar ve beklenmeyen hatalara/davranışa neden olabilir.

Aynı ana makine takma adına sahip birden fazla sanal ana makineye sahip olmanın sonuçlarını bir örnek üzerinden açıklayalım.

Aynı ana makine takma adıyla tanımlanmış iki sanal ana makine sandbox and secure (ör. Bir ortamda api.company.abc.com:

Aynı takma ada sahip sanal makineler

Yukarıdaki kurulumda, aşağıdaki bölümlerde açıklandığı gibi iki senaryo olabilir.

1. Senaryo : Bir API Proxy'si, sanal ana makine korumalı alanlarından yalnızca birine gönderilen istekleri kabul edecek şekilde yapılandırılır

<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 bir API Proxy'sine çağrı yaptığında aralıklı olarak şu mesajda 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 istekleri kabul edecek şekilde yapılandırılmadığından istemci uygulamaları 404 hatası alır.

2. Senaryo : Bir API Proxy'si, hem sanal ana makine korumalı alanına hem de güvenli

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

Bu senaryoda istemci uygulamaları, api.company.abc.com ana makine takma adını 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, gerçek isteklerin yalnızca bir sanal ana makineye gönderilmesi amaçlanırken, API istekleri her iki sanal ana makineye yönlendirildiği için bu durum Analytics'te hatalı verilerin depolanmasına neden olur.

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ılmayabileceği bir sanal ana makineye yönlendirilebileceğinden 404 hataları.
  2. API istekleri, aynı ana makine takma adına sahip tüm sanal ana makinelere yönlendirildiğinden, istekler yalnızca belirli bir sanal ana makine için yapıldığından yanlış Analytics verileri.

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 aşağıda gösterildiği gibi her bir sanal ana makinede farklı ana makine takma adları kullanın:

    iki hayalet

Daha fazla bilgi