Káoszkísérletek tervezése

Befejeződött

A kritikus fontosságú alkalmazásnak rugalmasnak kell lennie, és készen kell állnia a hibákra való reagálásra. A felhőben azonban nehéz előrejelezni a lehetséges meghibásodási forgatókönyveket. A chaos engineering lehetővé teszi, hogy hibakísérleteket végezzen ellenőrzött környezetben, hogy azonosítsa a fejlesztés és üzembe helyezés során valószínűleg felmerülő problémákat. Szándékosan injektálja a valós hibákat, és megfigyeli, hogyan reagál a rendszer.

Ebben a leckében az Azure Chaos Studiót fogjuk használni. A szolgáltatás segít a felhőalkalmazások és szolgáltatások rugalmasságának mérésében, megértésében és javításában. Készen áll arra, hogy gyorsan válaszoljon, ha ez a hiba éles környezetben kedvezőtlen körülmények között fordul elő.

Hibamód elemzése

Káoszkísérlet tervezésekor az első lépés az alkalmazás-összetevők hibamód-elemzése (FMA) végrehajtása a lehetséges hibaforgatókönyvek azonosítása érdekében.

  1. Listázhatja a felhasználói folyamat szempontjából releváns összes összetevőt, amelyeknek elérhetőnek és működőképesnek kell lenniük. A kivétel felhasználói folyamata például Azure-alkalmazás Services, Functions és Cosmos DB-adatbázist használ.

  2. Minden egyes összetevő esetében sorolja fel a lehetséges meghibásodási eseteket, azok hatását és az esetleges kockázatcsökkentéseket.

Lássuk az FMA eredményét, amely a Contoso Shoes-pénztár felhasználói folyamat példájának összetevőihez készült.

Azure-alkalmazás szolgáltatás az előtérbeli alkalmazás üzemeltetéséhez
Kockázat Hatás Lehetséges kockázatcsökkentés
Rendelkezésre állási zóna kimaradása Előfordulhat, hogy az adott zónában lévő példányok elérhetetlenné válnak.
A teljes üzemkimaradás nem várható, mert a zónaredundancia engedélyezve van az App Service-csomagban.
Engedélyezze a további terhelést a fennmaradó példányokra, és elegendő fejteret biztosítson ehhez a forgatókönyvhöz, miközben továbbra is eléri a teljesítménycélokat.
SNAT-portok kimerülése Kimenő kapcsolatok nem hozhatók létre. Ennek eredményeképpen az alsóbb rétegbeli hívások, például az adatbázis hívásai meghiúsulnak. Privát végpontok használata az alsóbb rétegbeli összetevőkhöz való csatlakozáshoz.
Az egyes példányok állapota nem megfelelő A nem megfelelő példányra irányított felhasználói forgalom gyenge teljesítményt vagy akár teljes meghiúsulásokat is tapasztalhat. Az alkalmazás Szolgáltatásállapot ellenőrzési funkció automatikusan azonosítja és lecseréli a nem kifogástalan állapotú példányokat.
Azure Functions a kifizetési logikához
Kockázat Hatás Lehetséges kockázatcsökkentés
Lassú (hideg) indítási teljesítmény Mivel az Azure Functions Consumption-csomag használatban van, az új példányok nem rendelkeznek teljesítménygaranciával.
A szolgáltatás iránti nagy igény (a "zajos szomszédoktól") miatt a kivételi függvény hosszú indítási időtartamot tapasztalhat, amely hatással van a teljesítménycélokra.
Frissítsen az Azure Functions Premium-csomagra.
Mögöttes tárterület-kimaradás Ha a mögöttes tárfiók elérhetetlenné válik, a függvény leáll. Használjon elosztott terhelésű számítást regionális tárolóval , vagy terheléselosztásos számítást GRS megosztott tárhellyel.
Azure Cosmos DB-adatbázis
Kockázat Hatás Lehetséges kockázatcsökkentés
Adatbázis vagy gyűjtemény átnevezése A konfiguráció eltérése miatt adatvesztés történhet. Az alkalmazás nem fog tudni hozzáférni semmilyen adathoz, amíg a konfiguráció nem frissül, és az összetevők újraindulnak. Ezt a helyzetet adatbázis- és gyűjteményszintű zárolásokkal akadályozhatja meg.
Régióleállás írása Ha az elsődleges régió (vagy írási régió) kimaradásba ütközik, az Azure Cosmos DB-fiók automatikusan előléptet egy másodlagos régiót az új elsődleges írási régióként, amikor az automatikus (szolgáltatás által felügyelt) feladatátvétel az Azure Cosmos DB-fiókon van konfigurálva. A feladatátvétel egy másik régióba történik a megadott régió prioritásának sorrendjében. Konfigurálja az adatbázisfiókot több régióval és automatikus feladatátvétellel. Ha hiba történik, a szolgáltatás automatikusan feladatátvételt fog végrehajtani, és megakadályozza az alkalmazás esetleges tartós problémáit.
A kérelemegységek (kérelemegységek) hiánya miatti széles körű szabályozás Egyes bélyegek gyakran futnak az Azure Cosmos DB kihasználtságán, míg mások továbbra is kiszolgálhatják a kéréseket. Használjon jobb terheléselosztást több bélyeghez, vagy adjon hozzá több kérelemegységet.

Káoszkísérlet tervezése

Egy káoszkísérlet megtervezéséhez válasszon néhány hibaesetet. A választás a hiba bekövetkezésének valószínűségén vagy a lehetséges hatáson alapulhat.

A kísérlet célja az alkalmazásban implementált rugalmassági mértékek ellenőrzése. Tegyük fel például, hogy az alkalmazást az App Service-ben futtatja, és engedélyezve van a zónaredundancia. Ha egy zóna összes mögöttes példánya leáll, az alkalmazás továbbra is fut.

A Chaos Studio használatával szúrja be a hibákat a megfelelő összetevőkbe. A Chaos Studio a hibák tárát kínálja, amely közül választhat. Mivel azonban a hibatár nem fed le mindent, előfordulhat, hogy módosítania kell a forgatókönyvet. Vagy előfordulhat, hogy további eszközöket kell találnia a hiba beadásához.

Fontos

Csak egy nem éles környezetet céloz meg a kísérletekkel. A hibák éles környezetbe történő injektálása kockázatos lehet, és tapasztalatot és tervezést igényel.

Példa: Azure Cosmos DB leállása és feladatátvétel

Tegyük fel, hogy a táblázatban felsorolt Azure Cosmos DB "írási régiókimaradás" hibaforgatókönyvét választja. A hipotézis a következő: A szolgáltatás által kezdeményezett feladatátvétel nem okozhat tartós hatást az alkalmazásra. Ha ez a hipotézis igaznak bizonyul, ellenőrizte, hogy a több régióba történő replikálás rugalmassági mértéke pozitív hatással van-e az alkalmazás megbízhatóságára.

A hiba szimulálásához használja a Chaos Studio hibatárából származó Azure Cosmos DB-hibát .

Ez a példa egy 10 percig (PT10M) futó És az új írási régióként használt Azure Cosmos DB-feladatátvételre mutat West US 2 . Feltételezi, hogy az West US 2 olvasási replikációs régiók egyikeként már be van állítva.

{
  "name": "branchOne",
  "actions": [
    {
      "type": "continuous",
      "name": "urn:csci:microsoft:cosmosDB:failover/1.0",
      "parameters": [
        {
          "key": "readRegion",
          "value": "West US 2"
        }
      ],
      "duration": "PT10M",
      "selectorid": "myCosmosDbResource"
    }
  ]
}

A kísérlet befejezése után a Chaos Studio visszaállítja az írási régiót az eredeti értékére.

Mielőtt hibát szúrhat be egy Azure-erőforrásba, engedélyeznie kell az adott erőforráshoz tartozó célokat és képességeket . Ez a beállítás szabályozza azokat a hibákat, amelyek a hibainjektáláshoz engedélyezett erőforrásokon futtathatók. Ha más biztonsági intézkedésekkel célokat és képességeket használ, elkerülheti a véletlen vagy rosszindulatú hibainjektálást.

Most, hogy mind a terhelési teszteket, mind a káoszkísérleteket megtervezte, automatizálnia kell őket a folyamatokban, hogy azok folyamatosan és rendszeresen fussanak. A következő leckében megismerheti a CI/CD-folyamatok tesztjeinek hozzáadását.

Tudáspróba

1.

Mi a káoszkísérlet célja?

2.

Mely szolgáltatásokat támogatja az Azure Chaos Studio?

3.

Mielőtt kísérletezhet egy Azure-szolgáltatással az Azure Chaos Studióban, milyen beállításokat kell engedélyeznie?