Telepítsen magas rendelkezésre állású replikakészletet a MongoDB 3.4-ben Kulcsfájl használatával a hozzáférés-vezérléshez az Ubuntu 16.04-ben

A MongoDB 2009-es megalakulása óta vezeti a NoSQL-ipart. A MongoDB egyik alapkoncepciója a replikakészlet, ezért a vele való munka előtt tekintse át a koncepciót.

A Replica Setről

Az adatbázisok replikációjához használt legegyszerűbb kommunikációs modell a Master-Slave architektúra. Ahogy a neve is sugallja, ennek a modellnek 2 szerepe van, amelyek egy egyedi masterben és sok slave-ben vannak elosztva, a mester szerepe az, hogy feldolgozza a kliensek által végzett olvasási és írási műveleteket, és a slave-eket a mester másolataként kezeli.

Ennek a modellnek a legfontosabb előnye, hogy a mester teljesítményét nem rontják a biztonsági mentési műveletek, a mentési műveletek aszinkron módon történnek, és ez komoly problémát jelenthet egy fő csomópont meghibásodása esetén. A slave csomópontok csak olvashatók, és manuálisan kell előléptetni őket a fő csomóponttá, így ez idő alatt fennáll az adatvesztés lehetősége.

A rendelkezésre állási probléma megoldásának egyik lehetősége az, hogy egynél több mestert kell használni az architektúrában, de ez egy másik problémához vezethet a példányok közötti adatok konzisztenciájában és a konfiguráció bonyolultabbá tételében.

A most adott kontextusban bemutathatjuk a MongoDB Replica Set technológiáját. A replikakészlet a Master-Slave architektúra neve, amely automatikus feladatátvétellel rendelkezik, így abban a pillanatban, amikor egy mester primarycsomópont (amelynek neve ) nem működik megfelelően, egy electionakarat trigger lesz, és egy új elsődleges csomópont kerül kiválasztásra a többi slave közül ( most mint secondaries).

Elsődleges csomópont

Az elsődleges csomópont az egyetlen, amely írási műveleteket hajt végre, alapértelmezés szerint az olvasási műveleteket is az elsődleges kezeli, de ez a viselkedés később módosítható.

A műveletek rögzítésre kerülnek a oplog(műveleti naplóba), majd a másodlagos csomópontok aszinkron módon frissítik tartalmukat aoplog

Megjegyzés: oplogez egy korlátos gyűjtemény, ez azt jelenti, hogy a gyűjteménynek van korlátja, mivel local.oplog.rsa gyűjtemény tartalmát egy mongo shell-en belül ellenőrizheti bármely halmaztagban.

Másodlagos csomópont

Amellett, hogy egy másodlagos csomópont megfelelő biztonsági mentést készít az adatbázisról, a következő szerepekkel rendelkezik:

  • Szükség esetén olvasási műveleteket is el tud fogadni.
  • Választást indíthat el, ha egy elsődleges csomópont meghibásodik.
  • Szavazni lehet a választásokon.
  • Ha szükséges, lehet az új előválasztás.

Ezeknek a jellemzőknek köszönhetően különböző típusú másodlagos csomópontjaink lehetnek:

  • 0. prioritás : Ezek a csomópontok nem válhatnak a-vá, primaryés nem válthatnak ki választást, mégis szavazhatnak a választásokon, rendelkeznek teljes másolattal, és fogadhatnak olvasási műveleteket. Ezek hasznosak lehetnek több adatközpontú üzembe helyezéshez.
  • Rejtett : Ezek Priority 0tagok, de nem tudják feldolgozni az olvasási műveleteket. Szükség esetén szavazhatnak. Ezeknek a tagoknak a preferált feladatai a jelentéskészítés és a biztonsági mentések.
  • Késleltetett : Ezek a csomópontok az "előzményadatokért" felelősek, mivel bizonyos egységgel késve vannak az időben. A késleltetett tagnak priority 0csomópontnak kell lennie , és javasolt, hogy azok is legyenek hiddentagok.

Előfeltételek

  • Az Ubuntu 16.04 x64 legalább 3 példányának futtatása azonos szervermérettel.

Tervezze meg a Replica készletet

Az infrastruktúra telepítése előtt fontos megtervezni azt, és vannak szempontok, amelyeket figyelembe kell venni ebben a tervezésben.

A tagok számának megválasztása

Ne feledje, hogy a replikakészlet felépítéséhez szükséges elemek minimális száma 3. A három típusú csomópontot legalább egy elsődleges és egy másodlagos csomóponttal keverheti.

Ebben az útmutatóban 3 tagot telepítünk, egy elsődleges és két normál másodlagos tagot.

Megjegyzés: Javasoljuk, hogy legfeljebb 7 szavazati joggal rendelkező tag legyen a választott bírók és másodlagos tagok keverékével.

Válasszon egy nevet

A név csak tájékoztató jellegű, de Ön ezt használja a készlet konfigurációjában. Ne feledje, hogy az éles környezetben több replikakészlet is lehet, ezért ne hagyja figyelmen kívül a készlet nevét.

Ez az oktatóanyag arra ösztönzi a felhasználót, hogy válassza ki a készlet nevét.

A tagok elosztása különböző adatközpontokban

Ez az oktatóanyag azt javasolja, hogy ugyanabban az adatközpontban telepítse, így elkerülheti a kommunikációs problémákat.

Megjegyzés: Különböző adatközpontokban történő telepítés esetén javasoljuk, hogy a csomópontokat VPN-vel vonja be

Telepítési utasítások

1. lépés: Telepítse az infrastruktúra minimális csomópontjait

Indítsa el az Ubuntu 16.04 x64 3 csomópontját; ugyanabban a régióban az ügyfélkapuról, ha lehetséges. Ne felejtse el elnevezni őket a projekt típusának megfelelően, és ügyeljen arra, hogy ezekben a csomópontokban ugyanaz a kiszolgálóméret legyen.

Miután telepítette a 3 csomópontot, biztosnak kell lennie abban, hogy minden csomópont beszélni tud a többivel. Két csomópontba kell ssh-t küldenie, és a többit a segítségével kell elérnie ping -c 4 EXAMPLE_IP. Váltson EXAMPLE_IPa csomópontok tényleges IP-címére.

Itt láthat egy példát két csomópont közötti sikeres kommunikációra.

root@foo_node:~# ping -c 4 EXAMPLE_IP
PING EXAMPLE_IP (EXAMPLE_IP) 56(84) bytes of data.
64 bytes from EXAMPLE_IP: icmp_seq=1 ttl=59 time=0.594 ms
64 bytes from EXAMPLE_IP: icmp_seq=2 ttl=59 time=0.640 ms
64 bytes from EXAMPLE_IP: icmp_seq=3 ttl=59 time=0.477 ms
64 bytes from EXAMPLE_IP: icmp_seq=4 ttl=59 time=0.551 ms

--- EXAMPLE_IP ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.477/0.565/0.640/0.064 ms

2. lépés: Telepítse a MongoDB-t az infrastruktúra minden csomópontjába

Általában használhatja az Ubuntu MongoDB csomagját, de jobb a hivatalos közösségi repót használni, mert az mindig naprakész. Ez a repo a következő csomagokat tartalmazza:

  • mongodb-org , a négy komponenst magába foglaló csoportcsomag .
  • mongodb-org-server , ez tartalmazza a mongoddémont (az adatkéréseket kezelő elsődleges folyamat).
  • mongodb-org-mongos , ez tartalmazza a mongosdémont (útválasztó szolgáltatás megosztott telepítésekhez).
  • mongodb-org-shell , ez a mongo shellJavaScript felület.
  • mongodb-org-tools , néhány eszköz az adminisztrációs tevékenységekhez.

Folytassa a csomagok telepítésével.

Importálja a nyilvános kulcsot a csomagkezelő rendszerbe.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Hozza létre a MongoDB „/etc/apt/sources.list.d/mongodb-org-3.4.list” listafájlját.

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Frissítse a csomagadatbázist.

sudo apt-get update

Telepítse a MongoDB metacsomagot.

sudo apt-get install -y mongodb-org

Indítsa el a MongoDB szolgáltatást.

sudo service mongod start

Most már mongo shellbármelyik bash munkamenetben megnyithatja . Ehhez a mongoparancsot kell használni . Valami ehhez hasonló fogadni fogja.

MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
*Some extra logs are cut by the way*
>

Ne felejtse el kikapcsolni a szolgáltatást a -val sudo service mongod stop, mert később mongodnéhány paraméterrel újra kezdjük . Ismételje meg ezt a folyamatot a készlet mind a 3 csomópontjában.

3. lépés: Konfigurálja a hozzáférési kulcsfájlt

A kulcsfájl használata két koncepciót kényszerít ki a replikakészlet adminisztrációjában. Az első az Internal Authentication. Alapértelmezés szerint a mongo shellmunkamenetet felhasználó használata nélkül is elindíthatja, és ez a munkamenet teljes mértékben felügyeli az adatbázist, de amikor kulcsfájlt használ a hitelesítéshez, a mongo shellmunkamenet eléri a nevű állapotot localhost exception. Ez az állapot csak a rendszergazda felhasználó és a replikakészlet létrehozását teszi lehetővé. A második fogalom a Role-Based Access Control, vagy más szóval felhatalmazás. Ez kényszerítve van a replikakészlet adminisztrációs szintjeinek szabályozására.

Hozd létre a kulcsfájlt

A kulcsfájl a készletben használandó jelszó, ennek a jelszónak azonosnak kell lennie a készlet minden tagjában. A biztonság növelése érdekében fontos, hogy véletlenszerű kulcsot használjon a választott eszközzel.

A tartalomnak 6 és 1064 karakter között kell lennie. Ezenkívül be kell állítania read onlya kulcsfájl engedélyét.

chmod 400 PATH_OF_YOUR_KEYFILE
Helyezze el a kulcsfájlt a halmaz minden tagjába

Most másolja a kulcsfájlt a készlet minden tagjába, kérjük, használjon konzisztens mappát a jövőbeni hivatkozáshoz, és ne tárolja cserélhető adathordozón.

Használjon olyan mappát is a fájlhoz, mongodamelyhez hozzáférhet.

Kényszerítés a replikakészletben található kulcsfájl használatával

Ebben a lépésben el kell indítanunk az mongod daemon in minden halmaztagot . A mongodfolyamat elindításának két módja van : konfigurációs fájl vagy parancssor használatával. Mindkettő meglehetősen egyszerű módszer, de az egyszerűség kedvéért ez az oktatóanyag a parancssori verziót használja.

Parancssori konfiguráció

Használja a parancsban korábban kiválasztott nevet.

mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"

Alapértelmezés szerint mongodnem démonként fut. Használnia kell a --forkparamétert, vagy a upstart-t kell használnia a démon teljes futtatásához. Ebben az oktatóanyagban nem javasoljuk mongoda démonként való futtatást , így közvetlenül láthatja a naplókat a termináljában.

Megjegyzés: Óvatosan írja be a replikakészlet nevét, mert a létrehozás után nem módosíthatja.

4. lépés: Csatlakozzon a localhost interfészhez a készlet egyik tagjáról

Megjegyzés: Ha mongodnem démon folyamatként fut , akkor a munka folytatásához egy másik ssh-kapcsolatot kell nyitnia.

A mongoparancsot kell használnia a mongo shell. Ez a készlet bármely tagjában megtehető.

Ebben a pillanatban egy olyan állapotban vagyunk, amelyet localhost exception. Ha kulcsfájlt használnak a mongodfolyamat beállításához, az olvasási-írási műveletek alkalmazása előtt létre kell hoznia egy adatbázis-adminisztrátort, de erre később térünk ki.

5. lépés: A replikakészlet elindítása

Ez egy kényes rész, rs.initiate()a mongo shell4. lépésben lévő parancsot használjuk. Mielőtt ezt a parancsot használnánk, tekintsük át.

rs.initiate(
  {
    _id : <replicaSetName>,
    members: [
      { _id : 0, host : "example1.net:27017" },
      { _id : 1, host : "example2.net:27017" },
      { _id : 2, host : "example3.net:27017" }
    ]
  }
)

Az első _idmező egy karakterlánc, és meg kell egyeznie azzal, --replSetamit korábban átadtak mongod. Ezenkívül minden egyes értéknek hostvagy a replikakészlet minden tagjának ip-jének vagy tartománynevének kell lennie. Ne felejtse el hozzáfűzni a mongo példány által használt portot minden taghoz.

Most itt az ideje, hogy végrehajtsa a parancsot az Ön adataival, ez elindít egy election, majd automatikusan megválasztja az elsődlegest.

Itt meg kell jegyezni, hogy a shell-kurzor a YOUR_SET_NAME:PRIMARY>vagy értékre változott YOUR_SET_NAME:SECONDARY. Ez azt jelenti, hogy a készlet létrehozása sikeres volt.

A munka folytatásához meg kell találnia a -t primary, ha természetesen nincs rajta. Használja a rs.status()parancsot a replikakészlet információinak megjelenítéséhez, és keresse meg a primary. Ön az ingatlant keresi "stateStr" : "PRIMARY".

6. lépés: A rendszergazda létrehozása

Miután megtalálta a primary, írja be a mongo shellparancsot, és futtassa a következő parancsot az adatok felhasználásával.

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "YOUR_USER",
    pwd: "YOU_PASSWORD",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

A admin = db.getSiblingDB("admin")rész lehetővé teszi, hogy adminegy másik adatbázisból írjunk be . Ez létrehoz egy aliast admin, amivel ehelyett parancsokat hajthatunk végre.

Ha a művelet sikeres, értesítést kap arról, hogy a felhasználó hozzáadásra került.

Successfully added user: {
    "user" : "YOUR_USER",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

Jelenleg az összes kiszolgálóhoz csak adminisztrátorunk van, de a replikakészlet megléte arra kényszerít bennünket, hogy rendelkezzünk a clusterAdminszerepkörrel rendelkező felhasználóval . Létrehozunk egy másik felhasználót, aki csak ezzel a szerepkörrel rendelkezik az aggályok elkülönítésére.

7. lépés: Hitelesítés adminisztrátorként

Elértük a korlátot, localhost exceptionezért a hitelesítést az egy lépéssel korábban létrehozott felhasználóra kell módosítanunk.

A felhasználókat mongo shellaz alábbiak szerint módosíthatja .

db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )

Ha még nem csatlakozott, mongo shellhasználja ezt a parancsot.

mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"

A felhasználóváltásról értesítést kap, és máris léphet a következő lépésre.

8. lépés: A fürt mester létrehozása

A clusterAdminszerepkör a felhasználó számára biztosítja a replikakészlet teljes irányítását. Létrehozása ugyanolyan egyszerű, mint az adminisztrátor létrehozása.

db.getSiblingDB("admin").createUser(
  {
    "user" : "YOUR_USER",
    "pwd" : "YOUR_PASSWORD",
    roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
  }
)

Vegye figyelembe, hogy ezúttal a szerepkör a következőre módosultclusterAdmin .

9. lépés: Adatok beszúrása a replikakészletbe

Jelenleg 2 adminisztrátori felhasználónk van: az egyik teljes ellenőrzést gyakorol a szerver felett, a másik pedig a replikakészlet szintjén fér hozzá az adminisztrációs feladatokhoz. Nincs azonban olyan felhasználónk, aki hozzáférne egy adatbázis "használatához", ezért most létrehozzuk ezt a felhasználót.

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "YOUR_USER",
    pwd: "YOUR_PASSWORD",
    roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
  }
)

Figyeljük meg, ezúttal a dbrészt változtatjuk , ott a felhasználó számára elérhetővé tesszük az adatbázist, ebben az esetben egy nevű adatbázist használunk cars.

Az adatbázis még nincs létrehozva. Ehhez be kell írnia néhány parancsot, hogy implicit módon létrehozza azt. Váltson át az carsadatbázisra.

use cars

Értesítést fog kapni: switched to db cars.

Az adatbázis még mindig nem jött létre, ehhez írni kell valamit. A következő példát használjuk.

db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })

Ezúttal a következővel kap értesítést WriteResult({ "nInserted" : 1 }).

Ha akarja, lekérheti az adatbázisban lévő összes objektumot a következő find()módszerrel:

db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }

Vegye figyelembe, hogy _idez eltérő lesz a kimenetben, de a többi adatnak azonosnak kell lennie. Ha elegendő idő áll rendelkezésre, ezeket az adatokat a rendszer a többi tag számára replikálja.

Következtetés

A replikakészlet létrehozása eleinte kihívást jelenthet, mert rengeteg információt kell megérteni, de ha egyszer megvan a mögötte rejlő ötlet, gyorsan bevetheti, ezért ne adja fel, ha első alkalommal nem tudja felfogni. Ne feledje, hogy a replikakészlet fontos a MongoDB adminisztrációjában, mert lehetővé teszi olyan speciális szolgáltatások hozzáadását, mint a terheléselosztás.

Hagyj kommentárt

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Ez az oktatóanyag végigvezeti Önt a Vultrs rendszerekkel kompatibilis Windows ISO létrehozásának folyamatán. Itt megtanulhatja az <>Windows ISO<> előállításának lépéseit az NTLite segítségével.

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.