Rakendage MongoDB 3.4-s kõrge saadavusega koopiakomplekt, kasutades võtmefaili juurdepääsu juhtimiseks Ubuntu 16.04-s

Alates selle loomisest 2009. aastal on MongoDB juhtinud NoSQL-i tööstust. Üks MongoDB põhikontseptsioone on replica Set, nii et enne sellega töötamist vaadake kontseptsioon üle.

Teave koopiakomplekti kohta

Lihtsaim andmebaaside replikatsioonil kasutatav suhtlusmudel on Master-Slave arhitektuur. Nagu nimigi viitab, on sellel mudelil 2 rolli, mis on jaotatud kordumatus ülemseadmes ja paljudes alamseadmetes, ülemseadme ülesanne on töödelda klientide tehtud lugemis- ja kirjutamistoiminguid ning alamseadmeid käsitletakse ülemseadme koopiana.

Selle mudeli kõige olulisem eelis on see, et põhisõlme jõudlust ei kahjusta varundustoimingud, varundustoimingud tehakse asünkroonselt ja see võib saada tõsiseks probleemiks, kui põhisõlme tõrgeteta. Slave sõlmed on kirjutuskaitstud ja need tuleb käsitsi üle viia põhisõlmeks, seega on selle aja jooksul võimalus andmeid kaotada.

Käideldavusprobleemi lahendamise üks võimalus on kasutada arhitektuuris rohkem kui ühte juhtfaili, kuid see võib kaasa tuua veel ühe probleemi, mis on seotud nende eksemplaride andmete järjepidevuse ja konfiguratsiooni täiendava keerukusega.

Nüüd, arvestades konteksti, saame tutvustada MongoDB Replica Set tehnoloogiat. Replica Set on ülem-alluv arhitektuuri nimi, millel on automaatne tõrkesiirde, nii et hetkel, kui ülemsõlm (mis nüüd kannab nime primary) ei tööta korralikult, electionkäivitub ja ülejäänud alamseadmete hulgast valitakse uus esmane sõlm ( nüüd viidatud kui secondaries).

Esmane sõlm

Esmane sõlm on ainus, mis teeb kirjutamistoiminguid, vaikimisi tegeleb lugemistoimingutega ka esmane sõlm, kuid seda käitumist saab hiljem muuta.

Toimingud salvestatakse oplog(toimingute logi), seejärel värskendavad sekundaarsed sõlmed oma sisu asünkroonselt, lähtudesoplog

Märkus: oplogsee on piiratud kogu, see tähendab, et kogul on limiit, kuna local.oplog.rssaate selle kogu sisu kontrollida mis tahes komplekti liikme mongo kestas.

Sekundaarne sõlm

Lisaks sellele, et sekundaarne sõlm teeb andmebaasist korraliku varukoopia, on sellel järgmised rollid:

  • Vajadusel saab lugemistoiminguid vastu võtta.
  • Võib käivitada valimised, kui esmane sõlm ebaõnnestub.
  • Saab valimistel hääletada.
  • Vajadusel võib saada uueks esimeheks.

Tänu nendele omadustele võivad meil olla erinevat tüüpi sekundaarsed sõlmed:

  • Prioriteet 0 : need sõlmed ei saa muutuda a- primaryks ega käivitada valimisi, kuid siiski saavad nad valimistel hääletada, omada täielikku koopiat ja aktsepteerida lugemistoiminguid. Need võivad olla abiks mitme andmekeskuse juurutamisel.
  • Peidetud : need on Priority 0liikmed, kuid pealegi ei saa nad lugemistoiminguid töödelda. Vajadusel võivad nad hääletada. Nende liikmete eelistatud ülesanded on aruandlus ja varundamine.
  • Viivitatud : need sõlmed vastutavad "ajalooliste andmete" eest, kuna need viivitavad mõne üksuse ajas. Viivitatud liige peab olema priority 0sõlm ja soovitatav on olla ka hiddenliige.

Eeltingimused

  • Võimalus käitada vähemalt 3 Ubuntu 16.04 x64 eksemplari sama serveri suurusega.

Kujundage replica komplekt

Enne infrastruktuuri kasutuselevõttu on oluline see kujundada ja selle kujunduse puhul tuleb arvestada punktidega.

Liikmete arvu valimine

Pidage meeles, et replikakomplekti koostamiseks on minimaalne elementide arv 3. Saate kombineerida kolme tüüpi sõlme minimaalselt ühe primaarse ja ühe sekundaarse sõlmega.

Selles juhendis juurutame 3 liiget, ühe esmase ja kaks tavalist sekundaarset liiget.

Märkus. Soovitatav on olla maksimaalselt 7 hääleõiguslikku liiget koos vahekohtunike ja teisejärguliste liikmetega.

Valige nimi

Nimi on vaid viide, kuid kasutate seda komplekti konfiguratsioonis. Pidage meeles, et teie tootmiskeskkonnas võib olla rohkem kui üks koopiakomplekt, seega ärge unustage oma komplekti nime.

See õpetus julgustab kasutajat valima komplekti nime.

Liikmete jaotus erinevates andmekeskustes

See õpetus soovitab juurutada samas andmekeskuses, et vältida sideprobleeme.

Märkus. Erinevates andmekeskustes juurutamise korral on soovitatav oma sõlmed VPN-iga ümbritseda

Kasutusjuhised

1. samm: juurutage oma infrastruktuuri minimaalsed sõlmed

Käivitage Ubuntu 16.04 x64 3 sõlme; võimalusel samas piirkonnas oma kliendiportaalist. Ärge unustage nimetada neid vastavalt projekti tüübile, millega tegelete, ja veenduge, et kõigis nendes sõlmedes oleks sama serveri suurus.

Kui olete oma 3 sõlme juurutanud, peate olema kindel, et kõik sõlmed saavad ülejäänud sõlmedega rääkida. Peate sisestama ssh-i kahte sõlme ja jõudma teisteni, kasutades ping -c 4 EXAMPLE_IP. Muutke EXAMPLE_IPoma sõlmede tegelikud IP-d.

Siin näete näidet kahe sõlme vahelisest edukast suhtlusest.

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. samm: installige MongoDB oma infrastruktuuri igasse sõlme

Üldiselt saate kasutada Ubuntu MongoDB paketti, kuid parem on kasutada ametlikku kogukonna repot, kuna see on alati ajakohane. See repo sisaldab järgmisi pakette:

  • mongodb-org , rühmapakett, mis hõlmab nelja komponenti.
  • mongodb-org-server , see sisaldab mongoddeemonit (esmane protsess, mis käsitleb andmepäringuid).
  • mongodb-org-mongos , see sisaldab mongosdeemonit (marsruutimisteenus jagatud juurutustele).
  • mongodb-org-shell , see on mongo shellJavaScripti liides.
  • mongodb-org-tools , mõned haldustegevuse tööriistad.

Jätkake pakettide installimisega.

Importige avalik võti paketihaldussüsteemi.

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

Looge MongoDB loendifail '/etc/apt/sources.list.d/mongodb-org-3.4.list'.

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

Värskendage pakettide andmebaasi.

sudo apt-get update

Installige MongoDB metapakett.

sudo apt-get install -y mongodb-org

Käivitage MongoDB teenus.

sudo service mongod start

Nüüd saate avada mongo shellmis tahes bashi seansil. Selleks peate kasutama mongokäsku. Teid tervitab midagi sarnast.

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

Ärge unustage teenust nupuga välja lülitada sudo service mongod stop, sest hiljem alustame mongoduuesti mõne parameetriga. Korrake seda protsessi kõigis komplekti kolmes sõlmes.

3. samm: konfigureerige juurdepääsuvõtmefail

Võtmefaili kasutamine sunnib replikakomplekti halduses kasutama kahte kontseptsiooni. Esimene neist on Internal Authentication. Vaikimisi saate mongo shellseanssi alustada ilma kasutajat kasutamata ja sellel seansil on täielik kontroll andmebaasi üle, kuid kui kasutate autentimiseks võtmefaili, mongo shelljõuab seanss olekusse nimega localhost exception. See olek võimaldab teil luua ainult administraatori kasutaja ja koopiakomplekti. Teine mõiste on Role-Based Access Control, ehk teisisõnu autoriseerimine. Seda jõustatakse replikakomplekti haldustasemete juhtimiseks.

Looge oma võtmefail

Võtmefail on komplektis kasutatav parool, see parool peab olema kõigil komplekti liikmetel sama . Turvalisuse suurendamiseks on oluline kasutada teie valitud tööriistaga juhuslikku võtit.

Sisu peab olema 6–1064 tähemärki pikk. Samuti peate määrama read onlyvõtmefaili loa.

chmod 400 PATH_OF_YOUR_KEYFILE
Asetage võtmefail igasse komplekti liikmesse

Nüüd kopeerige oma võtmefail igasse komplekti, kasutage edaspidiseks kasutamiseks ühtset kausta ja ärge salvestage seda irdkandjale.

Kasutage ka mongodjuurdepääsetava faili jaoks kausta .

Jõustamine, kasutades replica komplektis olevat võtmefaili

Selles etapis peame käivitama mongod daemon iga komplekti liikme . mongodProtsessi käivitamiseks on kaks võimalust : konfiguratsioonifaili või käsurea abil. Mõlemad meetodid on üsna lihtsad, kuid lihtsuse huvides kasutab see õpetus käsurea versiooni.

Käsurea konfiguratsioon

Kasutage selles käsus varem valitud nime.

mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"

Vaikimisi mongodei tööta deemonina. Peate kasutama --forkparameetrit või kasutama selle upstarttäielikuks käivitamiseks deemonina. Selles õpetuses ei soovita me mongoddeemonina töötamist , nii et näete logisid otse oma terminali.

Märkus. Tippige hoolikalt koopiakomplekti nimi, sest pärast loomist ei saa te seda muuta.

4. samm: looge ühe komplekti liikme kaudu ühenduse kohaliku hosti liidesega

Märkus. Kui käitate mongodmittedeemoni protsessina, peate töö jätkamiseks avama teise ssh-ühenduse.

Peate kasutama mongokäsku, et avada mongo shell. Seda saab teha mis tahes komplekti liikmes.

Praegu oleme seisundis nimega localhost exception. Kui mongodprotsessi seadistamiseks kasutatakse võtmefaili , peate enne lugemis-kirjutamistoimingute rakendamist looma andmebaasi administraatori, kuid me käsitleme seda hiljem.

5. samm: koopiakomplekti käivitamine

See on delikaatne osa, me käsuga rs.initiate()sees mongo shelletapist 4. Enne selle käsu vaatame seda.

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

Esimene _idväli on string ja peab vastama sellele, --replSetmis edastati enne mongod. Samuti peab iga väärtus hostolema replica komplekti iga liikme ip või domeeninimi. Ärge unustage lisada porti, mida mongo eksemplar igas liikmes kasutab.

Nüüd on aeg täita oma andmetega käsk, see käivitab election, seejärel valitakse automaatselt esmane.

Siin peaksite märkima, et teie kestakursoriks on muutunud YOUR_SET_NAME:PRIMARY>või YOUR_SET_NAME:SECONDARY. See tähendab, et komplekti loomine oli edukas.

Töö jätkamiseks peate leidma primary, kui te seda muidugi ei kasuta. Kasutage rs.status()käsku, et kuvada replica komplekti teave ja leida primary. Otsid kinnisvara "stateStr" : "PRIMARY".

6. samm: administraatori loomine

Kui olete leidnud asukoha primary, sisestage mongo shellja käivitage järgmine käsk, kasutades oma andmeid.

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

See admin = db.getSiblingDB("admin")osa võimaldab meil kirjutada adminteisest andmebaasist. See loob pseudonüümi nimega admin, nii et saame selle asemel käske täita.

Kui toiming õnnestub, saate teate, et kasutaja on lisatud.

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

Praegu on meil kõigi serverite jaoks ainult administraator, kuid Replica komplekti olemasolu sunnib meil olema selle clusterAdminrolliga kasutaja . Probleemide eraldamiseks loome teise kasutaja, kellel on ainult see roll.

7. samm: administraatorina autentimine

Oleme jõudnud limiidini, localhost exceptionmistõttu peame muutma autentimise üks samm varem loodud kasutajale.

Kasutajaid saate vahetada mongo shelljärgmiste toimingutega.

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

Kui te pole veel ühenduse loonud, mongo shellkasutage selle asemel seda käsku.

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

Teid teavitatakse kasutaja vahetumisest ja saate minna järgmise sammuga.

8. samm: looge klastri juht

clusterAdminRolli annab kasutajale täieliku kontrolli Replica komplekti. Selle loomine on sama lihtne kui administraatori kasutaja loomine.

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

Pange tähele, et seekord on rolliks muudetudclusterAdmin .

9. samm: andmete sisestamine koopiakomplekti

Praegu on meil 2 administraatori kasutajat: üks, kellel on täielik kontroll serveri üle ja teine, kellel on juurdepääs haldusülesannetele replikakomplekti tasemel. Meil pole aga kasutajat, kellel oleks juurdepääs andmebaasile, seega loome selle kasutaja kohe.

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

Pange tähele, et seekord muudame dbosa, seal muudame andmebaasi kasutajale ligipääsetavaks, sel juhul kasutame andmebaasi nimega cars.

Andmebaas pole veel loodud. Selleks peate selle kaudseks loomiseks tippima mõned käsud. Lülituge carsandmebaasi.

use cars

Saate teate: switched to db cars.

Andmebaas pole ikka veel loodud, selleks tuleb sinna midagi kirjutada. Kasutame järgmist näidet.

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

Seekord teavitatakse teid WriteResult({ "nInserted" : 1 }).

Soovi korral saate kõik andmebaasis olevad objektid alla laadida järgmiselt find():

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

Pange tähele, et _idteie väljund on erinev, kuid muud andmed peaksid olema samad. Kui piisavalt aega antakse, kopeeritakse need andmed teistele liikmetele.

Järeldus

Replica komplekti loomine võib alguses olla keeruline, sest mõista on palju teavet, kuid kui olete selle idee selgeks saanud, saate selle imelihtsalt kasutusele võtta, nii et ärge heitke meelt, kui te ei saa sellest esimesel korral aru. Pidage meeles, et Replica komplekt on MongoDB halduses oluline, kuna see annab võimaluse lisada täiustatud funktsioone, nagu koormuse tasakaalustamine.

Jäta kommentaar

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit