Použití Consul jako poskytovatele členství
Consul je distribuovaná, vysoce dostupná platforma pro zjišťování služeb uvědomující si datová centra, která zahrnuje jednoduchou registraci služeb, kontrolu stavu, detekci selhání a úložiště klíč-hodnota. Je založená na základě předpokladu, že každý uzel v datovém centru spouští agenta Consul, který funguje jako server nebo klient. Každý agent komunikuje prostřednictvím škálovatelného gossip protokolu.
K dispozici je podrobný přehled o Consulu, včetně srovnání s podobnými řešeními zde.
Consul je napsán v Go a je open source; Kompilované soubory ke stažení jsou k dispozici pro macOS X, FreeBSD, Linux, Solaris a Windows.
Proč vybrat Consul?
Jako Orleans poskytovatel členstvíje consul dobrou volbou, když potřebujete dodávat místní řešení, které nevyžaduje, aby vaši potenciální zákazníci měli stávající infrastrukturu a spolupracujícího poskytovatele IT. Consul je jednoduchý jeden spustitelný soubor, nemá žádné závislosti, a proto je možné ho snadno integrovat do vašeho řešení middlewaru. Když je Consul vaším řešením pro detekci, monitorování a správu mikroslužeb, dává smysl plně se integrovat s členstvím Orleans pro jednoduchou obsluhu. V Consul (také známé jako "Orleans Custom System Store") existuje také tabulka členství, která se plně integruje se systémem správy clusteru Orleans's .
Nastavení consul
K dispozici je rozsáhlá dokumentace k Consul.io o nastavení stabilního clusteru Consul a nemá smysl to tady opakovat. Pro vaše pohodlí zahrnujeme tuto příručku, abyste mohli rychle spustit Orleans se samostatným agentem Consul.
Vytvořte složku pro instalaci consul (například C:\Consul).
Vytvořte podsložku: C:\Consul\Data (Consul nevytvoří tento adresář, pokud neexistuje).
Stáhnout a rozbalit Consul.exe do C:\Consul.
Otevřete příkazový řádek v C:\Consul a spusťte následující příkaz:
./consul.exe agent -server -bootstrap -data-dir "C:\Consul\Data" -client='0.0.0.0'
V předchozím příkazu:
-
agent
: Instruuje Consul ke spuštění procesu agenta, který je hostitelem služeb. Bez tohoto přepínače se proces Consul pokusí použít RPC ke konfiguraci spuštěného agenta. -
-server
: Definuje agenta jako server a ne klienta (klient Consul je agent, který hostuje všechny služby a data, ale nemá hlasovací práva k rozhodování a nemůže se stát vedoucím clusteru. -
-bootstrap
: První (a pouze první!) uzel v clusteru musí být inicializován, aby převzalo vedení clusteru. -
-data-dir [path]
: Určuje cestu, kde jsou uložena všechna data Consul, včetně tabulky členství v clusteru. -
-client='0.0.0.0'
: Informuje consul, na které IP adrese se má služba otevřít.
Existuje mnoho dalších parametrů a možnost použít konfigurační soubor JSON. Úplný seznam možností najdete v dokumentaci Consul.
-
Ověřte, že je Consul spuštěný a připravený přijímat žádosti o členství od Orleans tím, že otevřete koncový bod služeb ve svém prohlížeči na
http://localhost:8500/v1/catalog/services
. Při správném fungování se v prohlížeči zobrazí následující JSON:{ "consul": [] }
Nakonfigurujte Orleans
Pokud chcete nakonfigurovat Orleans, aby jako poskytovatele členství používal Consul, bude váš projekt sila muset odkazovat na Microsoftu.Orleans. Clustering.Consul balíčku NuGet. Jakmile to uděláte, můžete poskytovatele členství nakonfigurovat v souboru Program.cs silo následujícím způsobem:
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();
Předchozí kód:
- Vytvoří IHostBuilder s výchozími nastaveními z Host.CreateDefaultBuilder().
- Řetězí volání na UseOrleans(IHostBuilder, Action<HostBuilderContext,ISiloBuilder>), které konfiguruje Orleans sila.
- Protože ISiloBuilder volá UseConsulSiloClustering.
- Nakonfiguruje zprostředkovatele členství clusteru tak, aby používal Consul, vzhledem k Consul
address
.
Chcete-li nakonfigurovat klienta, odkazujte na stejný balíček NuGet a volejte metodu rozšíření UseConsulClientClustering.
Klientská sada SDK
Pokud vás zajímá použití Consul pro zjišťování služeb, existují klientské sady SDK pro nejoblíbenější jazyky.
Podrobnosti implementace
Zprostředkovatel tabulky členství využívá funkce úložiště klíč/hodnota Consul prostřednictvím operací Check-And-Set (CAS). Při každém spuštění sila zaregistruje dvě položky klíč-hodnota: jednu, která obsahuje podrobnosti o silu, a druhou, která uchovává čas posledního nahlášení toho, že silo bylo naživu. Ten druhý se vztahuje na diagnostické položky „Jsem naživu“ a ne na signály detekce selhání, které se odesílají přímo mezi sily a nejsou zapisovány do tabulky. Všechny zápisy do tabulky se provádějí pomocí CAS k zajištění řízení souběžnosti, jak vyžaduje Orleansprotokol pro správu clusteru.
Po spuštění Silo můžete tyto položky zobrazit ve svém webovém prohlížeči na adrese http://localhost:8500/v1/kv/?keys&pretty
, což zobrazuje něco jako:
[
"orleans/default/192.168.1.11:11111@43165319",
"orleans/default/192.168.1.11:11111@43165319/iamalive",
"orleans/default/version"
]
Všechny klíče mají předponu orleans
, která je pevně zakódovaná ve zprostředkovateli a je určená k zabránění kolizím s klíči jiných uživatelů Consul. Pomocí libovolného z těchto klíčů můžete načíst další informace o každém z těchto klíčů tak, že připojíte jejich název klíče (bez uvozovek) ke kořenovému adresáři Consul KV v http://localhost:8500/v1/kv/
. Tím se zobrazí následující JSON:
[
{
"LockIndex": 0,
"Key": "orleans/default/192.168.1.11:11111@43165319",
"Flags": 0,
"Value": "[BASE64 UTF8 Encoded String]",
"CreateIndex": 321,
"ModifyIndex": 322
}
]
Dekódování Base64 řetězce kódovaného v UTF-8 Value
vám poskytne skutečná Orleans data členství.
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"
Když se klienti připojí, čtou klíčové ukazatele výkonu pro všechna sila v clusteru v jednom http GET pomocí identifikátoru URI http://192.168.1.26:8500/v1/KV/orleans/default/?recurse
.
Omezení
Při používání Consul jako poskytovatele členství je potřeba mít na paměti několik omezení.
Orleans protokol rozšířeného členství (verze tabulky & "ETag")
Consul KV v současné době nepodporuje atomické aktualizace. Zprostředkovatel členství Orleans consul proto implementuje pouze protokol základního členství Orleans, jak je popsáno v správě clusteru v Orleansa nepodporuje protokol rozšířeného členství. Tento rozšířený protokol byl zaveden jako dodatečné, ale nikoli nezbytné ověření připojení sil a jako základ pro funkce, jež dosud nebyly realizovány.
Více datových center
Páry klíč-hodnota v Consul nejsou aktuálně replikovány mezi datovými centry Consul. Existuje samostatný projekt pro řešení této replikace, ale zatím se neprokázalo, že je schopný podporovat Orleans.
Při spuštění ve Windows
Při spuštění Consul ve Windows zaznamená následující zprávu:
==> WARNING: Windows is not recommended as a Consul server. Do not use in production.
Tato zpráva s upozorněním se zobrazuje kvůli nedostatku zaměření na testování při spuštění v prostředí Windows, a ne kvůli skutečným známým problémům. Než se rozhodnete, jestli je consul pro vás správnou volbou, přečtěte si diskuzi.
Potenciální budoucí vylepšení
- Ověřte, že projekt replikace Consul KV může podporovat cluster Orleans v prostředí WAN mezi několika datovými centry Consul.
- Implementujte tabulku připomenutí v consul.
- Implementujte protokol rozšířeného členství. Tým za Consul plánuje implementaci atomických operací. Jakmile je tato funkce dostupná, je možné odstranit omezení u poskytovatele.