Földrajzilag elosztott adatarchitektúra tervezése

Befejeződött

Az alkalmazás architektúrájának megtervezésében az utolsó rész az adattárolási réteg mérlegelése. Biztosak szeretnénk lenni abban, hogy az adatok teljes funkcionalitással olvashatók és írhatók lesznek egy egész régióra kiterjedő hiba után.

A szállítmánykövetési portálon úgy döntöttünk, hogy az Azure Front Door használatával küldjük el az összes kérést az Usa keleti régiójában található App Servicesnek. Ha az USA keleti régiója meghibásodik, a Front Door észleli a hibát, és kéréseket küld az USA nyugati régiójában található duplikált App Services-összetevőkre. Az eredeti, egyrégiós architektúrában a relációs adatokat az Azure SQL Database-ben, a részben strukturált adatokat pedig a Cosmos DB-ben tároltuk. Most szeretnénk megérteni, hogyan biztosíthatjuk, hogy mindkét adatbázis elérhető maradjon, ha az USA keleti régiója meghibásodik.

Itt megtudhatja, hogyan replikálhatja az adatokat a régiók között, és hogyan biztosíthatja, hogy szükség esetén a feladatátvétel gyorsan megtörténjen.

A diagram showing multi-region architecture databases.

Azure SQL Database

A relációs adatokat tároló Azure SQL Database többrégiós implementációjának létrehozásához a következők egyikét használhatjuk:

  • Active geo-replication
  • Automatikus feladatátvételi csoportok

Active geo-replication

Az Azure SQL Database képes egy adatbázist és annak minden módosítását automatikusan egy másik adatbázisba replikálni az aktív georeplikáció szolgáltatással. Az adatbázis írható példányát egyedül az elsődleges logikai kiszolgáló üzemelteti. Létrehozható legfeljebb négy másik logikai kiszolgáló, amelyek az adatbázis írásvédett példányait üzemeltetik.

A szállítmánykövetési portálhoz hozzon létre egy másodlagos adatbázist az USA nyugati régiójában, és konfigurálja az USA keleti régiójából származó georeplikálást. Regionális hiba esetén a Front Door átirányítja a felhasználói kéréseket az Usa nyugati régiójában található App Servicesbe. Az App Services és az Azure Functions hozzáférhet a relációs adatokhoz, mert egy másolat már replikálva lett az USA nyugati régiójába.

Ez a változtatás automatikus, de mint tudjuk, az USA nyugati régiójában lévő másodlagos adatbázis írásvédett. Ha egy felhasználó adatokat próbál módosítani, például új szállítást kezdeményez, hibák léphetnek fel. Amint észleljük a problémát az Azure Portalon, manuálisan kezdeményezhetjük a feladatátvételt az USA nyugati régiójába. Ha automatizálni szeretnénk ezt a folyamatot, a fejlesztők írhatnak olyan kódot amely meghívja failover metódust az Azure SQL Database REST API-ban.

Megjegyzés:

Az Azure SQL Database felügyelt példányai nem támogatják az aktív georeplikációt. A felügyelt példányok rendeltetése az, hogy egyszerűbbé tegyék a biztonság fenntartása melletti adatmigrálást egy helyszíni SQL Server-ről. Ha felügyelt példányt használ, fontolja meg inkább a feladatátvételi csoportok használatát.

Automatikus feladatátvételi csoportok

Egy automatikus feladatátvételi csoport adatbázisok olyan csoportja, amelyben az adatok automatikusan replikálva vannak egy elsődleges kiszolgálóról egy vagy több másodlagosra. Ez a kialakítás az aktív georeplikációéhoz hasonló, és ugyanazt az adatreplikálási módszert használja. A hibára adott reakció azonban szabályzat meghatározásával automatizálható.

A szállítási portálhoz létrehozunk egy másodlagos adatbázist az USA nyugati régiójában. Ezután hozzáadunk egy szabályzatot, amely az adatbázis elsődleges replikája felett meghiúsul az USA nyugati régiójában, ha katasztrofális hiba történik az USA keleti régiójában. Ilyen esetben automatikusan az USA nyugati régiójában lévő replika válik az írható elsődleges adatbázissá, és megmarad a teljes funkcionalitás.

Automatikus feladatátvételi csoport használatát akkor érdemes mérlegelni, ha úgy szeretné automatizálni az írható adatbázis feladatátvételét, hogy nem ír egyéni kódot ennek kiváltására. Emellett automatikus feladatátvételi csoportokat is használhat, ha az adatbázis az Azure SQL Database felügyelt példányában fut.

Fontos

Az aktív georeplikációs és automatikus feladatátvételi csoportok alapjául tartozó replikáció aszinkron. Amikor egy módosítás alkalmazva van az elsődleges replikán, a rendszer nyugtát küld az ügyfélnek. Ezzel a tranzakció befejezettnek minősül, és megkezdődik a replikálás. Ha hiba keletkezik, akkor az elsődleges adatbázisban végrehajtott utolsó módosítások nem feltétlenül lesznek a másodlagosba replikálva. Figyelembe kell venni, hogy katasztrófa után a legutóbbi adatbázis-módosítások elveszhetnek.

Azure Cosmos DB

A konfigurációnk kevésbé összetett az Azure Cosmos DB-vel, mivel többrégiós felhőadatbázis-rendszerként van kialakítva. A Cosmos DB többmodelles adatbázis, amely relációs, részben strukturált és más formátumú adatok tárolására is alkalmas. A Cosmos DB adatai a legmagasabb rendelkezésre állás érdekében akkor is különböző hibatűrési tartományokban lévő példányokra vannak replikálva, ha egyetlen régióban futtatjuk.

Többrégiós Cosmos DB-fiók létrehozásakor az alábbi használati módok közül választhatunk:

  • Többrégiós fiókok több írható régióval.

    Ebben a módban az adatbázis minden példánya mindig írható. Egy régió kiesése esetén nincs szükség feladatátvételre.

  • Többrégiós fiókok egyetlen írható régióval.

    Ebben a módban csak az elsődleges régió tartalmaz írható adatbázisokat. A másodlagos régiókba replikált adatok írásvédettek. Az elsődleges régió kiesése esetén a módosítások alapértelmezés szerint le vannak tiltva. Választhatjuk azonban az automatikus feladatátvétel engedélyezése beállítást, hogy a Cosmos DB automatikusan átadja az adatbázis elsődleges, írható példányának feladatait egy másik régiónak.

Fontos

A Cosmos DB-ben az adatreplikáció szinkronizált. Módosítások alkalmazásakor a tranzakció nem minősül befejezettnek, amíg nincs a minimálisan elégséges számban replikálva. Az ügyfél csak ez után kap róla nyugtát. Hiba esetén az utolsó módosítások sem vesznek el, mert a replikáció már lezajlott.

Tesztelje tudását

1.

A szállítmánykövetési alkalmazásban automatikusan át szeretné írni az SQL-adatbázishoz való írási hozzáférést, ha regionális leállás történik. Nem szeretne egyéni kódot írni. Mi a teendőm?

2.

Gondoskodni szeretne arról, hogy regionális kimaradás esetén nem vesznek el befejezett tranzakciók. Mi a teendőm?