A Chaos Engineering Tools segítségével ellenőrizze a gyártás megbízhatóságát

Nézzük meg, hogyan tarthatod megbízhatóan a termelést a Chaos Engineering eszközök segítségével.

A káoszmérnökség egy olyan tudományág, ahol a rendszeren vagy az alkalmazáson kísérletezik, hogy felfedje annak gyengeségeit és kapacitáshiányait. Ezek olyan dolgok, amelyekről nem gondoltad, hogy megtörténhetnek a létrehozás során. Tehát szándékosan meghibásodásokat okozna a rendszerben, hogy megjelenjenek a gyengeségei, hogy a javításokat és a rendszert és az alkalmazást rugalmasabbá tegye.

Számos népszerű szervezet, például a Netflix, a LinkedIn és a Facebook káosztervezést végez, hogy jobban megértse mikroszolgáltatási architektúráját és elosztott rendszereit. Segítségével hamarabb megtalálja az új problémákat, mint a valódi felhasználói panaszokat, és megteszi a szükséges lépéseket azok kijavítására. Így ezek a szervezetek több millió felhasználót szolgálhatnak ki, növelhetik termelékenységüket, és dollármilliókat takaríthatnak meg 🤑.

A Chaos Engineering előnyei:

  • A kritikus problémák feltárásával szabályozhatja a bevételkiesést
  • A rendszer- vagy alkalmazáshiba csökkenése
  • Jobb felhasználói élmény kevesebb fennakadással és magas szolgáltatási elérhetőséggel
  • Segít megismerni a rendszert és önbizalmat szerezni.

Mennyire biztos a gyártási megbízhatóságában? Valóban katasztrófabiztos?

Nézzük meg ezt a következő népszerű káosztesztelő eszközök segítségével.

Chaos Mesh

Chaos Mesh egy káosz mérnöki menedzsment megoldás, amely hibákat szúr be a Kubernetes rendszer minden rétegébe. Ez magában foglalja a podokat, a hálózatot, a rendszer I/O-t és a kernelt. A Chaos Mesh képes automatikusan megölni a Kubernetes podokat és szimulálni a késéseket. Megzavarhatja a pod-to-pod kommunikációt, és szimulálhatja az olvasási/írási hibákat. Szabályokat ütemezhet a kísérletekhez, és meghatározhatja azok hatókörét. Ezeket a kísérleteket YAML fájlokkal határoztuk meg.

A Chaos Mesh rendelkezik egy irányítópulttal a kísérletek elemzéséhez. A Kubernetes tetején fut, és támogatja a felhőplatform nagy részét. Nyílt forráskódú, és nemrégiben elfogadták CNCF sandbox projektként. A káoszmérnöki elvek használatával a Chaos Mesh-t hozzáadhatja a DevOps munkafolyamatához, hogy rugalmas alkalmazásokat készítsen.

A Chaos Engineering jellemzői:

  • Könnyen telepíthető Kubernetes-fürtökön, a telepítési logika módosítása nélkül
  • A telepítéshez nincs szükség egyedi függőségekre
  • Meghatározza a káoszobjektumokat a CustomResourceDefinitions (CRD) segítségével
  • Irányítópultot biztosít az összes kísérlet nyomon követéséhez
  Hogyan lehet üzeneteket küldeni a Bitcoin Blockchain segítségével Linuxon a Bitmessage használatával

Chaos ToolKit egy nyílt forráskódú és egyszerű eszköz a Chaos Engineering Experiment Automation számára.

A Chaos ToolKit a rendszerébe integrálja az AWS, Google Cloud, Slack, Prometheus stb. által támogatott illesztőprogramok vagy beépülő modulok segítségével.

A Chaos ToolKit jellemzői:

  • Deklaratív nyílt API-t biztosít a gyártótól vagy technológiától független káoszkísérletek létrehozásához
  • Könnyen beágyazható a CICD csővezetékekbe az automatizálás érdekében
  • Kereskedelmi és vállalati támogatást is nyújt ezen keresztül ChaosIQ

ChaosKube

Ahogy a névből sejthető, a Kubernetes számára készült.

Chaoskube egy nyílt forráskódú káoszeszköz, amely rendszeresen megöli a véletlenszerű podokat a Kubernetes-fürtben. Segít megérteni, hogyan reagál a rendszer, ha a pod meghibásodik. Alapértelmezés szerint 10 percenként megöl egy pod bármely névtérben. A Chaoskube célsorait névterekkel, címkékkel, megjegyzésekkel stb. szűrheti. A Chaoskube segítségével könnyen telepíthető.

Káosz majom

Káosz majom egy olyan eszköz, amellyel ellenőrizhető a felhőrendszerek ellenálló képessége azáltal, hogy szándékosan hibákat hoz létre a rendszerek számára, hogy megértsék reakciójukat. A Netflix azért hozta létre, hogy tesztelje az AWS-infrastruktúra rugalmasságát és helyreállíthatóságát. A Chaos Monkey nevet kapta, mert pusztítást hoz létre, mint egy vad és fegyveres majom, hogy tesztelje a kudarcokat.

Ezenkívül a Chaos Monkey hozta létre a Chaos Engineering új mérnöki gyakorlatát. Azon az elven jött létre, hogy jobb ismételten kudarcot vallani, hogy elkerüljük a hirtelen jelentős kudarcot.

A Chaos Monkey jellemzői:

  • Segít felkészülni a véletlenszerű példányhibákra.
  • Redundanciát ösztönöz váratlan hibák esetén
  • Spinnakert használ a többfelhő-kompatibilitás érdekében
  • Konfigurálható ütemezést biztosít a hibák szimulálásához
  • Integrált kormányzó hogy bármilyen új függőséget adjon a káoszmajomhoz

Simmy

Simmy egy hibabefecskendező káoszeszköz, amely integrálódik a .NET Polly rugalmassági projektjébe. Lehetővé teszi, hogy káoszinjekciós házirendeket hozzon létre a Polly-n keresztül, ahol végrehajthatja a kódokat. Különféle házirendeket kínál, például kivételek házirendjét a kivételek rendszerbe való beillesztésére, viselkedési szabályzatot bármilyen új viselkedés beszúrására stb. Ezek a házirendek úgy vannak kialakítva, hogy véletlenszerűen adjanak be a viselkedést.

A Simmy jellemzői:

  • Majomszabályokat vagy Káosz-irányelveket biztosít a káosz beszúrásához
  • Könnyen tesztelhető bármilyen függőségi hiba
  • Segít gyorsan visszatérni a működő modellhez, és szabályozza a robbanás sugarát.
  • Gyártásra kész.
  • Meghibásodásokat külső tényezők alapján is definiálhat (például globális konfiguráció miatti hibák)
  Javítsa ki a telefon nem engedélyezett MM6 hibát

Pystol

Pystol egy olyan eszköz, amelyet hibás injekciók befecskendezésére használnak felhőalapú környezetekben. Kubernetes operátorokon keresztül figyeli az ETCD eseményeit. Amikor egy hibainjektálási művelet végrehajtásra kerül, az operátorok létrehozzák a podokat, és futtatnak néhány Ansible gyűjteményt. Tehát a fejlesztőknek nem kell maguknak megírniuk a végrehajtandó műveleteiket.

A Pystol kész műveleteket biztosít a rendszer teszteléséhez. Ennek ellenére, ha egy fejlesztő új műveletet szeretne létrehozni, azt megteheti a GoLang és a Python segítségével.

Folyamatos integrációs irányítópultot biztosít, amely összefoglaló képet ad az összes munkaműveletről. Futtathatja a Pystol-t helyileg, vagy telepítheti egy tárolóban a docker-lemezkép használatával. A Pystol két interfészt biztosít, az egyik a webes felhasználói felület, a másik pedig a CLI-n keresztül. Nyilvánvalóan a webes felhasználói felület jobb választás.

Muxy

Muxy egy proxy, amellyel tesztelheti a rugalmassági és hibatűrési mintákat a valós elosztott rendszerhibák esetén. Képes megváltoztatni az átviteli szintet (4. réteg), a TCP munkamenet szintjét (5. réteg) és a HTTP protokoll szintjét (7. réteg).

A Muxy jellemzői:

  • Moduláris felépítésű és könnyen bővíthető
  • Hivatalos dokkolókonténerrel rendelkezik
  • Könnyen telepíthető, nincs szükség függőségre.
  • Ideális a rugalmasság folyamatos tesztelésére
  • Szimulálja az elosztott rendszerek és mobileszközök hálózati csatlakozási problémáit

Pumba

Pumba egy parancssori eszköz, amely káosztesztet hajt végre a docker-tárolókon. A Pumba segítségével szándékosan összeomlik az alkalmazás dokkolótárolói, hogy megnézze, hogyan reagál a rendszer. Stressztesztet is végezhet a konténer erőforrásokon, például CPU, memória, fájlrendszer, bemenet/kimenet stb.

A Pumbát Kubernetes-fürtön is futtathatja. A Pumba Kubernetes csomópontokon való üzembe helyezéséhez DaemonSets-et kell használnia. Több Pumba-tárolót is használhat több Pumba-parancs futtatásához ugyanabban a DaemonSet-ben.

ChaosBlade

ChaosBlade egy nyílt forráskódú eszköz, amellyel az Alibaba kísérleteket injektál a rendszerekbe. Kipróbálja mindazokat a kudarcokat, amelyekkel az Alibaba szembesült az elmúlt tíz évben, és bevált gyakorlatokat alkalmaz ezek elkerülésére. A káoszmérnöki elveket követi az elosztott rendszerek hibatűrésének ellenőrzése.

A ChaosBlade jellemzői:

  • Kísérleti forgatókönyveket biztosít több erőforráshoz, például CPU, hálózat, memória, lemez stb.
  • Kísérleti forgatókönyveket biztosít a Kubernetes platform csomópontjaihoz, hálózataihoz és podokhoz
  • Könnyen használható CLI-parancsokat biztosít a kísérletek végrehajtásához
  Keressen egy véletlenszerű filmet vagy tévéműsort a Netflixen, a Hulu-n, az HBO Go-n vagy az Amazon Prime-on

Lakmusz

Lakmusz a felhőben natív káoszmérnöki elveket követi. A lakmusz eszköz küldetése, hogy teljes keretet biztosítson Kubernetes rendszereinek és Kubernetesen futó alkalmazásainak gyenge pontjainak feltárásához.

Káosz üzemeltetője van, és a CRD-k (CustomResourceDefinitions) körülötte, lehetővé téve a plug-and-play képességet. Az egész arról szól, hogy a káosz logikáját egy docker image-be helyezzük, egy lakmusz keretrendszerbe dobjuk, és a CRD-k segítségével hangszereljük őket.

A lakmusz jellemzői:

  • Segít a webhely megbízhatóságával foglalkozó mérnököknek és fejlesztőknek megtalálni a Kubernetes rendszer gyenge pontjait
  • Használatra kész általános kísérleteket biztosít
  • Chaos API-t biztosít a káosz munkafolyamat-kezeléséhez
  • A Litmus SDK támogatja a Go, Python és Ansible alkalmazásokat saját kísérletek létrehozásához.

Gonosz szellem

Gonosz szellem segít a mérnököknek rugalmasabb szoftverek létrehozásában. Platformot biztosít a káoszmérnöki kísérletek biztonságos, biztonságos és egyszerű futtatásához.

A gremlin segítségével átgondoltan beszúrhatja a hibákat a gazdagépekbe vagy konténerekbe, függetlenül attól, hogy hol vannak, legyen az a nyilvános felhő vagy a saját adatközpontja.

Gremlin jellemzői:

  • Könnyű ágenst telepít a gazdagépekre vagy konténerekre a hibák beszúrásához
  • Több mint 10 különböző infrastruktúra támadási módot biztosít
  • Az állami gremlinekkel manipulálhatja a rendszeridőt, leállíthatja vagy újraindíthatja a gazdagépeket, és megölheti a processzorokat.
  • A hálózati gremlinek késleltetést injektálhatnak, hogy csomagvesztést okozzanak, vagy csökkentsék a forgalmat.
  • A Gremlin Alfi-könyvtári támadásai a webalkalmazáson keresztül konfigurálhatók, indíthatók és leállíthatók. API vagy CLI
  • Lehetővé teszi, hogy pontosan megcélozza a támadni kívánt robbanási sugarat
  • Lehetővé teszi az összes támadás leállítását és a rendszer visszaállítását az állandó állapotba

Steadybit

Steadybit célja az állásidő proaktív csökkentése, és rálátást biztosít a rendszerproblémákra. Ezt az eszközt helyben futtathatja az infrastruktúrán vagy a felhőn szolgáltatásként (SaaS).

A Steadybit használatához definiálja a helyzetet, szimulálja a kísérleteket, végrehajtja a szimulált kísérleteket a termelésben, és automatizálja az összes kísérletet. Intelligens ügynököket futtat a rendszeren, hogy felfedezze a lehetséges problémákat és gyengeségeket. Könnyen integrálható több rendszerrel.

Következtetés

Légy elég bátor ahhoz, hogy alkalmazd a káosz mérnöki elveit, és teszteld a termelést a fent említett eszközökkel. Ezek az eszközök segítenek megtalálni a rendszer több azonosítatlan gyengeségét, és segítenek a rendszer rugalmasabbá tételében.