Her EC2 örneğinde çalışan birden çok uygulama ile ELB sistem durumu denetimleri nasıl ayarlanır?


11

AWS'de, birden fazla uygulamayı barındıran EC2 dengesini dengelemek için ELB'leri kullanmak istiyoruz. İdeal olarak uygulama için bir sağlık kontrolü yaptırmak istiyoruz.

Ancak, AWS Elastik Yük Dengeleyiciler şu anda bir sağlık kontrolü için sadece bir yere ping atmanıza izin veriyor.

Her EC2 örneğinde dağıtılan birden çok uygulamanın durumunu dikkate alan ELB ile bir sağlık kontrolü yapmanın en iyi yolu ne olabilir?


4
Bunun bir yolu, bir komut dosyasının her iki uygulamayı kontrol etmesine göre bir durum döndürmesini sağlayarak kendi sağlık kontrolünüzü uygulamak olabilir.
Nathan C

1
ELB, yönetilen bir hizmettir. Kendi sağlık kontrolü ile ikinci uygulama için başka bir ELB oluşturun. Maliyetin çoğu istek başına, bu nedenle 2 ELB'yi çalıştırmak için neredeyse aynı maliyete sahip olacaksınız.
Guy

Bence @ NathanC'ın cevabı en iyi çözüm; İki durumdan herhangi birinin başarısız olması durumunda sağlık kontrolünün başarısız olması durumunda benzer bir durumum var. Başka bir ELB eklemek, başka bir sağlık kontrolü yaptırmanıza izin verir, ancak AFAIK trafiği yönlendirmek için (veya değil) yalnızca bir ELB kullanılabilir
Tom Harrison Jr

@Guy aslında, ELB saatlerinin taleplerden bağımsız olarak ücretlendirildiği göz önüne alındığında, bu ayda ~ 20 USD'dir (bölgeye bağlı olarak), bu nedenle maliyetin çoğu, yalnızca zaten ayda 2,5 TB'tan fazla veri sunuyorsanız, istek başınadır ( $ az 0.008 / GB)
Josip Rodin

Yanıtlar:


10

İşte bunu çözmenin iki yolu;

İlk seçenek, mantık ana bilgisayarı çevrimiçi tutmak istediğinizi söylüyorsa, sağlığı doğrulayan ve ELB'ye HTTP 200'leri döndüren ana bilgisayara başka bir sağlık denetimi eklemektir. Oradaki mantık elbette size kalmış. Buradaki dezavantaj, App 2 bazı ana bilgisayarlara başarıyla dağıtıldığında, tüm ana bilgisayarların hala 'sağlıklı' ve trafik alması olacaktır.

Diğer bir seçenek, her uygulama için ek bir ELB kullanmaktır. Birkaç ELB'yi aynı arka uç EC2 örneklerine yönlendirebilirsiniz ve bunun maliyeti oldukça düşüktür. Bu şekilde, uygulama başına sağlık denetimini yapabilir ve sorunlu ana bilgisayarları bir ya hep ya hiç yaklaşımından ziyade uygulama başına düzeyde bırakabilirsiniz.

Düzenleme: Bu eski bir yanıt olduğunu ve ALB değil ELB özgüdür. ALB, bir ana bilgisayarda yerel olarak ayrı hedefleri destekler.


7

Uygulama başına bir ELB kullanmak buraya gitmenin yoludur.

İlk olarak, her uygulama kendi etki alanındaysa ve SSL'yi desteklemeniz gerekiyorsa, bunlara yine de ihtiyacınız olabilir. Amazon ELB'leri şu anda her etki alanı için yalnızca bir SSL sertifikasına izin vermekte ve her SSL etkin etki alanı için ayrı ELB'ler gerektirmektedir. (Joker karakterli SSL sertifikaları bir istisnadır).

Buradaki zorluk, ELB sağlık kontrollerinin şu anda bir EC2 örneğinde barındırılan belirli bir sanal etki alanına yönlendirilememesidir. ("Ana Bilgisayar:" başlığı gönderilmez). ELB durum ping'leri, sanki tarayıcınızda EC2 örneği için IP adresini yüklemişsiniz gibi her zaman varsayılan etki alanına gider. Bu nedenle, varsayılan etki alanındaki sağlık denetimlerini almak ve daha sonra belirli bir uygulamanın sağlık durumu ile yanıt vermek için biraz tutkal gerekir.

İşte bir Nginx serveryönergesine eklenebilecek çalışan bir örnek yapılandırma . Yük dengelemeli EC2 bulut sunucularının her birine kurulacaktır.

    # This goes in the `server` block noted by 'default_server', often /etc/nginx/sites-enabled/default

    # All AWS Health Checks from the ELBs arrive at the default server.
    # Forward these requests on the appropriate configuration on this host.
    location /health-check/ {
      rewrite ^/health-check/(?<domain>[a-zA-Z0-9\.]+) /api/v1/status break;
      # Lie about incoming protocol, to avoid the backend issuing a 301 redirect from insecure->secure,
      #  which would not be considered successful.
      proxy_set_header X-Forwarded-Proto 'https';
      proxy_set_header "Host" $domain;
      proxy_pass http://127.0.0.1;
    }

"First-application.com" için ELB'nin "Sağlık Kontrolü" ayarında, "HTTP" ve Bağlantı Noktası 80'i seçip aşağıdaki gibi bir yol girersiniz:

/health-check/first-application.com

Ana bilgisayarda yukarıdaki Nginx yapılandırması çalıştığında, istek varsayılan etki alanında alınır ve aynı ana bilgisayardaki Nginx yapılandırmasından gelen yanıtı https://first-application.com/api/v1/status için proxy olarak belirtir.

Bu yaklaşımla Nginx'te uygulama başına yapılandırma yoktur. Her uygulama benzersiz bir alan adına sahip olduğu sürece, her uygulama için bir ELB ayarladığınızdan emin olmanız yeterlidir.


3
teşekkür ederim. Bu hile gibi görünüyordu. Bununla birden fazla yük dengesine sahip olmaktan kaçınmayı umuyordum.
tourdownunder

6

11 Ağustos 2016'da Amazon, Uygulama Yük Dengeleyicileri'ni tanıttı . Bunlar, her biri kendi sağlık kontrolü türüne sahip birden fazla Hedef Grup belirlemenizi sağlar. Yani bu artık tek bir yük dengeleyici kullanarak mümkün!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.