it-swarm.com.de

Service Discovery vs. Lastverteilung

Ich versuche zu verstehen, in welchem ​​Szenario ich ein Service-Register über einen Lastenausgleich auswählen sollte.

Nach meinem Verständnis decken beide Lösungen die gleiche Funktionalität ab.

Wenn wir zum Beispiel consul.io als Feature-Liste betrachten, haben wir:

  • Service Discovery
  • Gesundheitsprüfung
  • Schlüssel-/Wertspeicher
  • Multi-Datencenter

Wo ein Load Balancer wie Amazon ELB zum Beispiel:

  • konfigurierbar, um nur Verkehr von Ihrem Load Balancer zu akzeptieren
  • datenverkehr mit folgenden Protokollen akzeptieren: HTTP, HTTPS (sicheres HTTP), TCP und SSL (sicheres TCP)
  • verteilen von Anforderungen an EC2-Instanzen in mehreren Availability Zones
  • Die Anzahl der Verbindungen wird mit der Anzahl gleichzeitiger Anforderungen festgelegt, die der Lastausgleicher erhält
  • konfigurieren Sie die Integritätsprüfungen, die Elastic Load Balancing verwendet, um die Integrität der beim Load Balancer registrierten EC2-Instanzen zu überwachen, sodass nur Anforderungen an die fehlerfreien Instanzen gesendet werden können
  • Sie können die End-to-End-Datenverkehrsverschlüsselung in den Netzwerken verwenden, die sichere Verbindungen (HTTPS/SSL) verwenden
  • [EC2-VPC] Sie können einen mit dem Internet verbundenen Load Balancer erstellen, der Anfragen von Clients über das Internet entgegennimmt und sie an Ihre EC2-Instanzen weiterleitet, oder einen internen Load Balancer, der Anfragen von Clients in Ihrer VPC entgegennimmt und diese routet auf EC2-Instanzen in Ihren privaten Subnetzen. Lastverteiler in EC2-Classic sind immer mit dem Internet verbunden.
  • [EC2-Classic] Load Balancer für EC2-Classic unterstützen sowohl IPv4- als auch IPv6-Adressen. Lastverteiler für eine VPC unterstützen keine IPv6-Adressen.
  • Sie können Ihren Lastausgleich mithilfe von CloudWatch-Metriken, Zugriffsprotokollen und AWS CloudTrail überwachen.
  • Sie können Ihren mit dem Internet verbundenen Load Balancer Ihrem Domänennamen zuordnen. 
  • usw.

In diesem Szenario verstehe ich nicht, warum ich etwas wie consul.io oder netflix eureka über Amazon ELB für die Service-Erkennung auswählen würde.

Ich habe die Vermutung, dass dies auf die Implementierung von clientseitiger Service Discovery vs serverseitiger Service Discovery zurückzuführen sein könnte, aber ich bin mir nicht ganz sicher.

25
Lucian Enache

Sie sollten dies als clientseitigen Lastausgleich im Gegensatz zum dedizierten Lastausgleich betrachten.

Zu den Client-Side-Load-Balancern gehören Baker Street ( http://bakerstreet.io ); SmartStack ( http://nerds.airbnb.com/smartstack-service-discovery-cloud/ ); oder Konsul HA Proxy ( https://hashicorp.com/blog/haproxy-with-consul.html ).

Clientseitige LBs verwenden eine Service Discovery-Komponente (Baker Street verwendet einen stateless Pub/Sub-Service-Discovery-Mechanismus; SmartStack verwendet ZooKeeper; Consul HA Proxy verwendet Consul) als Teil ihrer Implementierung. Sie bieten jedoch die Integritätsprüfung/Ende-zu-Ende-Funktionalität Sie suchen wahrscheinlich nach.

7
Richard Li

Die Service Discovery-Komponente verfügt normalerweise über eine Benachrichtigungskomponente. Es ist kein Load-Balancer, auch wenn einige die Möglichkeit haben, dies zu tun. Sie kann registrierte Kunden über Änderungen benachrichtigen, beispielsweise wenn ein Loadbalancer ausfällt.

Ein Client kann eine Service Discovery/Registry abfragen, um einen ausgeführten Load Balancer abzurufen. Während ein Load Balancer einen Client nicht bedroht, wenn er ausfällt.

2
techuser soma

AWS ELB und Eureka unterscheiden sich in vielen Punkten:

Edge Services und Mid-Tier-Services
AWS ELB ist eine Lastverteilungslösung für Edge-Dienste, die dem Internetverkehr von Endbenutzern ausgesetzt sind. Eureka erfüllt die Notwendigkeit eines Lastausgleichs im mittleren Bereich.
Mid-Tier-Server bezieht sich auf einen Anwendungsserver, der sich zwischen dem Computer des Benutzers und dem Datenbankserver befindet, auf dem die Verarbeitung stattfindet. Der Middle-Tier-Server führt die Geschäftslogik aus.
Während Sie Ihre Mid-Tier-Services theoretisch hinter die AWS ELB stellen können, setzen Sie sie in EC2 Classic der Außenwelt aus und verlieren dadurch alle Nützlichkeit der AWS-Sicherheitsgruppen.

Dedizierter vs clientseitiger Lastenausgleich
AWS ELB ist auch eine traditionelle Proxy-basierte Lastverteilungslösung, bei Eureka unterscheidet sich die Lastverteilung jedoch dadurch, dass sie auf der Instanz-/Server-/Host-Ebene in einem Round-Robin-Verfahren erfolgt. Die Client-Instanzen kennen alle Informationen zu den Servern, mit denen sie kommunizieren müssen.
Wenn Sie nach einer dauerhaften Benutzersitzung suchen (alle Anforderungen eines Benutzers während der Sitzung werden an dieselbe Instanz gesendet). Die Lastverteilung, die AWS jetzt anbietet, bietet Eureka keine Lösung an. 

Lastausgleichsausfälle
Ein weiterer wichtiger Aspekt, der die Proxy-basierte Lastverteilung von der Lastverteilung mit Eureka unterscheidet, ist, dass Ihre Anwendung den Ausfällen der Lastverteiler standhalten kann, da die Informationen zu den verfügbaren Servern auf dem Eureka-Client zwischengespeichert werden.
Dies erfordert eine kleine Menge Speicher, kauft jedoch eine höhere Ausfallsicherheit. Der Eureka-Client erhält alle Registrierungsinformationen auf einmal und bei nachfolgenden Anfragen an den Eureka-Server. Er empfängt nur das Delta, d. H. Die Änderungen in den Registrierungsinformationen und nicht die gesamten Registrierungsinformationen. Eureka-Server können auch im Cluster-Modus arbeiten, wobei jeder Peer nicht von der Leistung anderer Peers beeinflusst wird.

Maßstab und Komfort
Stellen Sie sich auch vor, dass 1000s von Mikrodienstleistungen laufen und jeweils mehrere Instanzen haben. Sie benötigen 1000 ELBs (einen für jeden Microservice) oder etwas wie HAProxy, das sich hinter dem ELB befindet, um Entscheidungen auf der Ebene 7 basierend auf dem Hostnamen usw. zu treffen und den Datenverkehr an eine Teilmenge von Instanzen weiterzuleiten. Bei Eureka spielen Sie nur mit dem Namen der Anwendung, der weitaus weniger kompliziert ist.

1
rohanagarwal