Megosztás a következőn keresztül:


A consul használata tagságszolgáltatóként

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.

  1. Hozzon létre egy mappát a Consul telepítéséhez (például C:\Consul).

  2. Almappák létrehozása: C:\Consul\Data (a konzul nem hozza létre ezt a könyvtárat, ha nem létezik).

  3. Töltse le és csomagolja ki Consul.exebele C:\Consul.

  4. 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.

  5. 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/servicestalá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:

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 orleansvan 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

  1. 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.
  2. Implementálja az emlékeztető táblát Consulban.
  3. 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.