Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Consul egy elosztott, magas rendelkezésre állású és adatközponttal rendelkező szolgáltatásfelderítési platform, amely magában foglalja az egyszerű szolgáltatásregisztrációt, az állapotellenőrzést, a hibaészlelést és a kulcs-érték tárolást. A rendszer azon az alapelven épül, hogy az adatközpont minden csomópontja egy Consul ügynököt futtat, amely kiszolgálóként vagy ügyfélként működik. Minden ügynök skálázható pletykaprotokollon keresztül kommunikál.
A konzul részletes áttekintése, beleértve a hasonló megoldásokkal való összehasonlítást is, a Mi a konzul? címen érhető el.
A konzul go nyelven íródott, és nyílt forráskódú. A lefordított letöltések macOS X, FreeBSD, Linux, Solaris és Windows rendszerekhez érhetők el.
Miért válassza a konzult?
A consul tagságszolgáltatókéntOrleans jó választás olyan helyszíni megoldások nyújtásához, amelyek nem követelik meg az ügyfelektől, hogy meglévő infrastruktúrával vagy együttműködő informatikai szolgáltatóval rendelkezzenek. A Consul egy könnyű, önálló futtatható fájl, amely nem igényel függőségeket, így könnyen integrálható egy köztes szoftvermegoldásba. Ha a Consul mikroszolgáltatások felderítésére, ellenőrzésére és karbantartására használja, a Orleans tagsággal való teljes integráció egyszerűséget és könnyű használatot kínál. A Consul biztosít egy tagsági táblát (más néven "Orleans Egyéni rendszertároló"), amely teljes mértékben integrálva van a Orleansfürtkezelésével.
Consul beállítása
A Consul dokumentáció széles körű útmutatásokat tartalmaz egy stabil Consul fürt beállításához, így ezt az információt itt nem ismételjük meg. A kényelem érdekében azonban ez az útmutató bemutatja, hogyan lehet gyorsan elindítani a Orleans egy különálló Consul ügynökkel.
Hozzon létre egy mappát a Consul telepítéséhez (például C:\Consul).
Almappák létrehozása: C:\Consul\Data (a konzul nem hozza létre ezt a könyvtárat, ha nem létezik).
Töltse le és csomagolja ki Consul.exebele C:\Consul.
Nyisson meg egy parancssort C:\Consul, és futtassa a következő parancsot:
./consul.exe agent -server -bootstrap -data-dir "C:\Consul\Data" -client='0.0.0.0'
Az előző parancsban:
-
agent
: Utasítja a Consul-t, hogy futtassa az ügynökfolyamatot, amely a szolgáltatásokat üzemelteti. Kapcsoló nélkül a Consul folyamat megpróbálja RPC-vel konfigurálni egy futó ügynököt. -
-server
: Az ügynököt kiszolgálóként, nem ügyfélként határozza meg. (A Consul ügyfél egy ügynök, amely szolgáltatásokat és adatokat üzemeltet, de nem rendelkezik szavazati jogokkal, és nem lehet a fürt vezetője). -
-bootstrap
: A fürt első (és csak az első!) csomópontját konfigurálni kell, hogy átvegye a vezető szerepet. -
-data-dir [path]
: Megadja azt az elérési utat, ahol az összes consul-adat, beleértve a fürttagsági táblát is. -
-client='0.0.0.0'
: Tájékoztatja a consult, hogy melyik IP-címen nyissa meg a szolgáltatást.
Számos más paraméter létezik, beleértve a JSON-konfigurációs fájl használatát is. A teljes lista megtekintéséhez tekintse meg a konzul dokumentációját.
-
Ellenőrizze, hogy a Consul fut-e, és készen áll-e a tagsági Orleans kérelmek elfogadására a böngészőben
http://localhost:8500/v1/catalog/services
található szolgáltatásvégpont megnyitásával. Ha megfelelően működik, a böngésző a következő JSON-t jeleníti meg:{ "consul": [] }
Orleans konfigurálása
Ahhoz, hogy a Orleans-t Consul tagságszolgáltatóként használja, a silóprojektnek hivatkoznia kell a Microsoft.OrleansClustering.Consul NuGet-csomagra. A hivatkozás hozzáadása után konfigurálja a tagságszolgáltatót a siló Program.cs fájljában az alábbiak szerint:
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();
Az előző kód:
- Létrehoz egy IHostBuilder az Host.CreateDefaultBuilder() alapértelmezéseivel.
- A siló konfigurálására UseOrleans(IHostBuilder, Action<HostBuilderContext,ISiloBuilder>) irányuló Orleans hívásláncok.
- Figyelembe véve a ISiloBuilder, hívja UseConsulSiloClustering.
- Konfigurálja a fürttagság-szolgáltatót a Consul használatára, figyelembe véve a Consul
address
.
Az ügyfél konfigurálásához hivatkozzon ugyanarra a NuGet-csomagra, és hívja meg a UseConsulClientClustering bővítménymetódust.
Ügyféloldali SDK
Ha a consul szolgáltatást szeretne használni, az ügyféloldali SDK-k a legnépszerűbb nyelvekhez érhetők el.
Megvalósítás részletei
A tagsági tábla szolgáltatója a Consul Kulcs/Érték tároló funkcióját használja a Check-And-Set (CAS) műveletekkel. Amikor egy siló elindul, két kulcs-érték bejegyzést regisztrál: az egyik a siló adatait tartalmazza, a másik pedig az utolsó időpontot, amikor a siló életjelet adott. Az utóbbi a diagnosztikai "Életben vagyok" bejegyzéseket jelenti, nem pedig a hibaészlelő szívveréseket, amelyeket közvetlenül a silók között küldenek, és nem íródnak a táblába. A táblába írt összes írás a CAS-t használja az egyidejűség-vezérlés biztosítására, a Orleansfürtkezelési protokolljának követelményeinek megfelelően.
A siló futtatása után tekintse meg ezeket a bejegyzéseket egy webböngészőben a következő címen http://localhost:8500/v1/kv/?keys&pretty
: . A kimenet a következőhöz hasonló:
[
"orleans/default/192.168.1.11:11111@43165319",
"orleans/default/192.168.1.11:11111@43165319/iamalive",
"orleans/default/version"
]
Minden kulcs előtaggal orleans
van elnevezett. Ez az előtag a szolgáltatónál van rögzítve, és célja, hogy elkerülje a kulcsterület más Consul felhasználókkal való ütközését. Az egyes kulcsok további információinak lekéréséhez fűzze hozzá a nevét (idézőjelek nélkül) a consul KV gyökérhez a következő helyen http://localhost:8500/v1/kv/
: . Ez a következő JSON-t mutatja be:
[
{
"LockIndex": 0,
"Key": "orleans/default/192.168.1.11:11111@43165319",
"Flags": 0,
"Value": "[BASE64 UTF8 Encoded String]",
"CreateIndex": 321,
"ModifyIndex": 322
}
]
A Base64 UTF-8 kódolt sztring Value
dekódolásával a tényleges Orleans tagsági adatok jelennek meg:
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"
Amikor az ügyfelek csatlakoznak, az URI http://localhost:8500/v1/KV/orleans/default/?recurse
használatával, egy HTTP GET-kérelemben beolvasják a fürt összes silójának KV-jait.
Korlátozások
Vegye figyelembe néhány korlátozást, amikor a Consult tagságszolgáltatóként használja.
Orleans kiterjesztett tagsági protokoll (táblaverzió és ETag)
A Consul KV jelenleg nem támogatja az atomi frissítéseket. Ezért a Orleans Consul tagságszolgáltató csak az Orleans alapszintű tagsági protokollt implementálja, a klaszterkezelésben Orleans leírtak szerint. Nem támogatja a kiterjesztett tagsági protokollt. Ez a kiterjesztett protokoll egy extra, bár nem alapvető fontosságú silókapcsolat-ellenőrzésként lett bevezetve, és a funkciók alapjaként még nem implementálva.
Több adatközpont
A consuli kulcs-érték párok jelenleg nem replikálódnak a consuli adatközpontok között. Létezik egy külön projekt a replikációs tevékenység kezelésére, de még nem bizonyított, hogy támogatja Orleans.
Windows rendszeren való futtatáskor
Amikor a Consul elindul a Windowson, a következő üzenetet naplózza:
==> WARNING: Windows is not recommended as a Consul server. Do not use in production.
Ez a figyelmeztető üzenet azért jelenik meg, mert nem koncentrált a tesztelésre Windows-környezetben való futtatáskor, és nem a tényleges ismert problémák miatt. Olvassa el a vitát , mielőtt eldöntené, hogy konzul-e a megfelelő választás.
Lehetséges jövőbeli fejlesztések
- Ellenőrizze, hogy a Consul KV replikációs projekt támogatja-e a Orleans fürtöt több Consul adatközpont között WAN környezetben.
- Implementálja az emlékeztető táblát Consulban.
- Implementálja a kiterjesztett tagsági protokollt. A consul mögötti csapat atomműveleteket tervez végrehajtani. Ha ez a funkció elérhetővé válik, lehetséges lehet eltávolítani a szolgáltatóra vonatkozó korlátozásokat.