Soru Her EC2 örneğinde çalışan birden çok uygulama ile ELB sağlık kontrolleri nasıl kurulur?


AWS'de, birden fazla uygulamaya ev sahipliği yapan denge EC2 örneklerini yüklemek için ELB'leri kullanmak istiyoruz. İdeal olarak, uygulama için sağlık kontrolüne sahip olmak isteriz.

Bununla birlikte, AWS Elastik Yük Dengeleyicileri şu anda sadece bir sağlık kontrolü için bir yere ping yapmanızı sağlar.

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


10
2018-02-28 13:25


Menşei


Bir yol, her iki uygulamanın da kontrollerine dayanarak bir senaryo döndürmesiyle kendi sağlık kontrolünüzü uygulamak olacaktır. - Nathan C
ELB yönetilen bir hizmettir. Kendi sağlık kontrolü ile ikinci uygulama için başka bir ELB oluşturun. Maliyetin çoğu talep başıdır, bu nedenle 2 ELB'yi çalıştırmak için neredeyse aynı mal olacaktır. - Guy
Sanırım @ NathanC'nin cevabı en iyi çözümdür; İki durumdan biri başarısız olursa sağlık kontrolünün başarısız olması durumunda benzer bir durum var. Başka bir ELB eklemek, başka bir sağlık kontrolüne sahip olmanıza izin verecektir, ancak AFAIK yalnızca bir ELB trafiği yönlendirmek için kullanılabilir (veya değil). - Tom Harrison Jr
@Guy aslında, ELB-saatlerinin isteklere bakılmaksızın ücretlendirilmesi göz önünde bulundurulduğunda, ayda ~ 20 USD (bölgeye bağlı olarak), bu nedenle maliyetin çoğu, ayda yalnızca 2,5 TB'ın üzerinde veriye zaten sahipseniz, istek başına maliyettir. 0,008 ABD doları / GB) - Josip Rodin


Cevaplar:


Bunu çözmenin iki yolu var;

İlk seçenek, sunucuyu sağlığını onaylayan başka bir sağlık kontrolü eklemektir ve mantık ana bilgisayarı çevrimiçi tutmak istediğinizi söylerse, HTTP 200'leri ELB'ye döndürür. Tabii ki mantık, size bağlı. Buradaki dezavantaj, Uygulama 2'nin bazı ana bilgisayarlarda başarılı bir şekilde dağıtılması durumunda, 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 işaret edebilir ve bunun için maliyeti oldukça azdır. Böylelikle, uygulama başına sağlığı kontrol edebilir ve bir ya da hiç olmayan yaklaşımdan ziyade uygulama başına düzeydeki sorunları barındırabilir.

Düzenleme: Lütfen bunun daha eski bir yanıt olduğunu ve ELB'nin ALB'ye özgü olmadığını unutmayın. ALB, bir ana bilgisayarda ayrı hedefleri destekler.


9
2017-09-10 02:12





Uygulama başına bir ELB kullanmak, buradan gitmenin yoludur.

Öncelikle, her uygulama kendi etki alanı üzerindeyse ve SSL'yi desteklemeniz gerekiyorsa, bunlara ihtiyacınız olabilir. Amazon ELB'leri şu anda her bir etki alanı için, her bir SSL etkin etki alanı için ayrı ELB'ler gerektiren bir SSL sertifikasına izin vermektedir. (Wildcard SSL sertifikaları istisnadır).

Buradaki zorluk, ELB sağlık kontrollerinin şu anda bir EC2 örneğinde barındırılan belirli bir sanal alana yönlendirilememesidir. (Hayır "Ana Bilgisayar:" başlığı gönderilir). ELB sağlık pingleri, her zaman tarayıcınızdaki EC2 örneğinin IP adresini yüklediyse varsayılan alana gider. Öyleyse, varsayılan etki alanındaki sağlık kontrollerini almak ve daha sonra belirli bir uygulamanın sağlık durumunu yanıtlamak için biraz tutkal gerekir.

İşte bir Nginx'e eklenebilecek bir çalışma örneği yapılandırması server direktif. Yüklü olurdu Yük dengeli olan her EC2 örneğinde.

    # 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;
    }

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

/health-check/first-application.com

Ana bilgisayar üzerinde çalışan yukarıdaki Nginx yapılandırmasıyla, istek varsayılan etki alanında alınır. ve aynı host üzerindeki Nginx yapılandırmasından gelen yanıtı proxy https://first-application.com/api/v1/status

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


7
2017-12-10 01:45



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


11 Ağustos 2016'da Amazon tanıtıldı Uygulama Yük Dengeleyicileri. Bunlar, her biri kendi sağlık kontrolü türüne sahip birden çok Hedef Grup belirtebilir. Yani şimdi tek bir yük dengeleyici kullanmak mümkün!


5
2017-09-28 07:49