Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Konsul ist eine verteilte, hoch verfügbare und rechenzentrumsfähige Dienstermittlungsplattform, einschließlich einfacher Dienstregistrierung, Integritätsprüfung, Fehlererkennung und Schlüsselwertspeicher. Es basiert auf der Annahme, dass jeder Knoten im Rechenzentrum einen Consul-Agent ausführt, der entweder als Server oder als Client fungiert. Jeder Agent kommuniziert über ein skalierbares Gossip-Protokoll.
Eine detaillierte Übersicht über Konsul, einschließlich Vergleiche mit ähnlichen Lösungen, finden Sie unter "Was ist Konsul?".
Konsul wird in Go geschrieben und ist Open Source. Kompilierte Downloads sind für macOS X, FreeBSD, Linux, Solaris und Windows verfügbar.
Warum Konsul auswählen?
Orleans Als Anbieter von Mitgliedschaftsdiensten ist Consul eine gute Wahl für die Bereitstellung von lokalen Lösungen, die nicht erfordern, dass Kunden über eine bestehende Infrastruktur oder einen kooperativen IT-Anbieter verfügen. Consul ist eine einfache einzelne ausführbare Datei ohne Abhängigkeiten, sodass sie einfach in eine Middleware-Lösung integriert werden kann. Bei der Verwendung von Consul zum Auffinden, Überprüfen und Verwalten von Microservices bietet die vollständige Integration in die Orleans Mitgliedschaft Einfachheit und Bedienerfreundlichkeit. Consul stellt auch eine Mitgliedschaftstabelle (auch bekannt als "Orleans benutzerdefinierter Systemspeicher") bereit, die vollständig in Orleansdie Clusterverwaltung integriert ist.
Konsul einrichten
Umfangreiche Dokumentation zum Einrichten eines stabilen Konsulenclusters finden Sie in der Konsul-Dokumentation, damit hier keine Informationen wiederholt werden. Aus Gründen der Einfachheit zeigt dieses Handbuch jedoch, wie Sie schnell Orleans mit einem eigenständigen Consul-Agenten starten können.
Erstellen Sie einen Ordner zum Installieren von Consul in (z. B. C:\Consul).
Erstellen Sie einen Unterordner: C:\Consul\Data (Konsul erstellt dieses Verzeichnis nicht, wenn es nicht vorhanden ist).
Laden Sie herunter, und entpacken Sie Consul.exe in C:\Consul.
Öffnen Sie eine Eingabeaufforderung unter C:\Consul, und führen Sie den folgenden Befehl aus:
./consul.exe agent -server -bootstrap -data-dir "C:\Consul\Data" -client='0.0.0.0'
Im vorherigen Befehl:
-
agent
: Weist Consul an, den Agentprozess auszuführen, der die Dienste hostet. Ohne diesen Schalter versucht der Konsulprozess, RPC zum Konfigurieren eines ausgeführten Agents zu verwenden. -
-server
: Definiert den Agent als Server, nicht als Client. (Ein Consul-Client ist ein Agent, der Dienste und Daten hostet, jedoch nicht über Stimmrechte verfügt und nicht zum Clusterleiter werden kann). -
-bootstrap
: Der erste (und nur der erste!) Knoten in einem Cluster muss initialisiert werden, um die Führung des Clusters zu übernehmen. -
-data-dir [path]
: Gibt den Pfad an, in dem alle Konsulendaten, einschließlich der Clustermitgliedschaftstabelle, gespeichert sind. -
-client='0.0.0.0'
: Informiert den Konsul darüber, auf welcher IP-Adresse der Dienst geöffnet werden soll.
Viele andere Parameter sind vorhanden, einschließlich der Option, eine JSON-Konfigurationsdatei zu verwenden. Eine vollständige Auflistung finden Sie in der Konsuldokumentation.
-
Überprüfen Sie, ob Consul ausgeführt wird und bereit ist, Mitgliedschaftsanfragen von Orleans zu akzeptieren, indem Sie den Service-Endpunkt in Ihrem Browser bei
http://localhost:8500/v1/catalog/services
öffnen. Wenn der Browser ordnungsgemäß funktioniert, zeigt der Browser die folgende JSON an:{ "consul": [] }
Konfigurieren von Orleans
Um Orleans zu konfigurieren, damit Consul als Mitgliedschaftsanbieter verwendet wird, muss das Siloprojekt das MicrosoftOrleans.Clustering.Consul NuGet-Paket referenzieren. Konfigurieren Sie nach dem Hinzufügen des Verweises den Mitgliedschaftsanbieter in der Program.cs-Datei des Silos wie folgt:
IHostBuilder builder = Host.CreateDefaultBuilder(args)
.UseOrleans(silo =>
{
silo.UseConsulSiloClustering(options =>
{
// The address of the Consul server
var address = new Uri("http://localhost:8500");
options.ConfigureConsulClient(address);
});
})
.UseConsoleLifetime();
using IHost host = builder.Build();
host.Run();
Der vorangehende Code:
- Erstellt ein IHostBuilder mit Standardwerten von Host.CreateDefaultBuilder().
- Verkettet einen Aufruf an UseOrleans(IHostBuilder, Action<HostBuilderContext,ISiloBuilder>), um das Orleans-Silo zu konfigurieren.
- In Anbetracht der ISiloBuilderAufrufe UseConsulSiloClustering.
- Konfiguriert den Clustermitgliedschaftsanbieter für die Verwendung von Consul anhand der Consul-
address
Um den Client zu konfigurieren, verweisen Sie auf dasselbe NuGet-Paket, und rufen Sie die UseConsulClientClustering Erweiterungsmethode auf.
Client-SDK
Wenn Sie consul für die Dienstermittlung verwenden möchten, stehen Client-SDKs für die meisten gängigen Sprachen zur Verfügung.
Details zur Implementierung
Der Mitgliedschaftstabellenanbieter verwendet die Funktion des Consul-Schlüssel-/Wertspeichers mit Check-And-Set(CAS)-Vorgängen. Beim Start jedes Silos werden zwei Schlüssel-Wert-Einträge registriert: Einer mit Silodetails und einer, der den letzten Zeitpunkt enthält, als das Silo gemeldet hat, dass es am Leben war. Letzteres bezieht sich auf diagnostische 'I'm alive'-Einträge, nicht auf Fehlererkennungssignale, die direkt zwischen den Silos gesendet werden und nicht in die Tabelle geschrieben werden. Alle Schreibvorgänge in die Tabelle verwenden CASOrleans, um die Parallelitätssteuerung bereitzustellen, wie es das Clusterverwaltungsprotokoll erfordert.
Sobald der Silo läuft, können Sie diese Einträge in einem Webbrowser unter http://localhost:8500/v1/kv/?keys&pretty
ansehen. Die Ausgabe sieht etwa so aus:
[
"orleans/default/192.168.1.11:11111@43165319",
"orleans/default/192.168.1.11:11111@43165319/iamalive",
"orleans/default/version"
]
Allen Schlüsseln wird das Präfix vorangestellt orleans
. Dieses Präfix ist im Anbieter fest codiert und soll Keyspace-Kollisionen mit anderen Consul-Nutzern vermeiden. Rufen Sie zusätzliche Informationen für jeden Schlüssel ab, indem Sie seinen Namen (ohne Anführungszeichen) an den Consul-KV-Root unter http://localhost:8500/v1/kv/
anfügen. Dadurch wird der folgende JSON-Code dargestellt:
[
{
"LockIndex": 0,
"Key": "orleans/default/192.168.1.11:11111@43165319",
"Flags": 0,
"Value": "[BASE64 UTF8 Encoded String]",
"CreateIndex": 321,
"ModifyIndex": 322
}
]
Die Decodierung der base64 UTF-8-codierten Zeichenfolge Value
stellt die tatsächlichen Orleans Mitgliedschaftsdaten bereit:
http://localhost:8500/v1/KV/orleans/default/[SiloAddress]
{
"Hostname": "[YOUR_MACHINE_NAME]",
"ProxyPort": 30000,
"StartTime": "2023-05-15T14:22:00.004977Z",
"Status": 3,
"SiloName": "Silo_fcad0",
"SuspectingSilos": []
}
http://localhost:8500/v1/KV/orleans/default/[SiloAddress]/IAmAlive
"2023-05-15T14:27:01.1832828Z"
Wenn Clients eine Verbindung herstellen, lesen sie die KVs für alle Silos im Cluster in einer HTTP GET-Anforderung mithilfe des URI http://localhost:8500/v1/KV/orleans/default/?recurse
.
Begrenzungen
Beachten Sie einige Einschränkungen bei der Verwendung von Consul als Mitgliedschaftsanbieter.
Orleans Erweitertes Mitgliedschaftsprotokoll (Tabellenversion und ETag)
Consul KV unterstützt derzeit keine atomaren Updates. Daher implementiert der Orleans Consul Membership Provider nur das Orleans grundlegende Mitgliedschaftsprotokoll, wie in der Clusterverwaltung beschrieben.Orleans Das Erweiterte Mitgliedschaftsprotokoll wird nicht unterstützt. Dieses erweiterte Protokoll wurde als zusätzliche, aber nicht wesentliche, Silokonnektivitätsüberprüfung und als Grundlage für die Funktionalität eingeführt, die noch nicht implementiert wurde.
Mehrere Rechenzentren
Schlüsselwertpaare in Consul werden derzeit nicht zwischen Consul-Rechenzentren repliziert. Ein separates Projekt existiert, um dieses Replikationsvorhaben anzugehen, aber es hat noch nicht bewiesen, dass es Orleans unterstützt.
Wenn sie unter Windows ausgeführt wird
Wenn konsulul unter Windows gestartet wird, protokolliert es die folgende Meldung:
==> WARNING: Windows is not recommended as a Consul server. Do not use in production.
Diese Warnmeldung erscheint aufgrund eines mangels Fokus auf Tests bei der Ausführung in einer Windows-Umgebung, nicht aufgrund bekannter Probleme. Lesen Sie die Diskussion , bevor Sie entscheiden, ob Konsul die richtige Wahl ist.
Mögliche zukünftige Verbesserungen
- Beweisen Sie, dass das Replikationsprojekt Consul KV einen Orleans Cluster in einer WAN-Umgebung zwischen mehreren Consul-Datenzentren unterstützen kann.
- Implementieren Sie die Erinnerungstabelle in Konsul.
- Implementieren Sie das Erweiterte Mitgliedschaftsprotokoll. Das Team hinter Consul plant die Umsetzung von Atomoperationen. Sobald diese Funktionalität verfügbar ist, kann das Entfernen der Einschränkungen im Anbieter möglich sein.