Jedan skup replika se definira kao klaster baze podataka s više čvorova s konfiguriranom replikacijom i automatskim prebacivanjem u slučaju kvara (failover) između njih. Kako biste osigurali da je PRIMARNA baza podataka ispravno odabrana, važno je imati neparan broj članova u skupu (uključujući ili isključujući čvor Arbiter čvor).
Odabrana baza podataka odgovorna je za sve glavne zadatke. Ona obrađuje dolazne operacije pisanja i pohranjuje njihove informacije u oplog. Tim informacijama mogu pristupiti i replicirati ih SEKUNDARNI članovi replike kako bi ih primijenili na vlastite skupove podataka. Kao rezultat toga, svi poslužitelji u skupu predstavljat će isti sadržaj i osigurati njegovu dostupnost:

Sada razmotrite situaciju u kojoj neočekivani problem (poput kvara hardvera ili veze) uzrokuje zastoj primarne baze podataka. U takvom slučaju, sustav će automatski započeti novi proces izbora kako bi se uspostavilo normalno funkcioniranje bez potrebe za bilo kakvom ručnom intervencijom. Prednost takvog sustava je što dobivate najbolje od replikacije, kao što su povećana dostupnost, redundancija u slučaju kvara i oporavak od katastrofe, bez brige o zasebnom upravljanju s više baza podataka.
Ako želite primijeniti sličan sustav, ovaj vodič će vam pokazati kako konfigurirati MongoDB skup replika s CloudSigma PaaS. Kao što ćete vidjeti u ovom vodiču, koristit ćemo tri člana što je obično dovoljno za pružanje dobre granice sigurnosti informacija i propusnosti za rukovanje I/O operacijama za većinu uobičajenih aplikacija. Uz samu konfiguraciju replikacije, naučit ćemo i kako pripremiti okruženje, postaviti autentifikaciju među čvorovima baze podataka te kako osigurati da je vaš rad bio uspješan.
Korak 1: Izradite novo okruženje
Za početak će vam trebati najmanje 3 MongoDB čvora kako biste započeli konfiguraciju skupa replika. Stoga samo naprijed i izradite novo okruženje na sljedeći način:

U našem primjeru dodjeljujemo sve MongoDB instance verzije 4.0.2 istom okruženju. Možete promijeniti Naziv okruženja ako je potrebno u ponuđenom prostoru i nastaviti s procesom instalacije.
Sljedeći korak u procesu bit će rješavanje sigurnosti komunikacije između ovih čvorova pomoću datoteke autentifikacijskog ključa.
Korak 2: Dodajte datoteku autentifikacijskog ključa
Autentifikacija je ključna komponenta svake replikacije. To je proces osiguranja sigurnosti koji daje pristup članu skupa replika tek nakon što se ispravno identificira jedinstvenom datotekom autentifikacijskog ključa. To štiti vaše podatke od neželjenih promatrača i trećih strana. Evo kako možete generirati vlastitu datoteku autentifikacijskog ključa:
- Kliknite na opciju Web SSH za jedan od čvorova baze podataka i prijavite se:

2. Zatim možete unijeti vlastitu datoteku ključa ili generirati novu pomoću openssl pomoću sljedeće naredbe:
|
1 |
openssl rand -base64 741 > my.key |
U ovoj naredbi, 741 predstavlja veličinu ključa u bajtovima i my.key je naziv ključa.
3. Vrijeme je za distribuciju nove datoteke ključa na sve vaše MongoDB instance. Evo kako to učiniti:
- Otvorite File Manager klikom na gumb Config pokraj bilo kojeg od čvorova baze podataka:

- Pronađite datoteku my.key na kartici konfiguracije pod putanjom: /home/jelastic/my.key. Otvorite je i kopirajte sadržaj datoteke:

- Pod putanjom /var/lib/jelastic/keys pronaći ćete direktorij keys. Izradite New File koju će MongoDB instance koristiti za međusobnu autentifikaciju identiteta. U našem slučaju, izradit ćemo datoteku pod nazivom mongo-set.key:

- Zalijepite prethodno kopirani sadržaj u ovu datoteku i primijenite promjene klikom na Save za sve instance:

Kao rezultat ovog procesa, datoteka mongo-set.key distribuirana je na sve naše MongoDB čvorove.
Korak 3: Konfigurirajte MongoDB replikaciju
Sada kada smo osigurali sigurnost instanci, možemo prijeći na stvarnu konfiguraciju skupa replika. Počnimo:
- Započnite odlaskom na karticu konfiguracije za MongoDB čvorove i otvaranjem datoteke mongo.conf u etc mapa. Pomaknite se prema dolje dok ne pronađete odjeljak za replikaciju. Odkomentirajte ga i dodajte sljedeći niz s jedinstvenim nazivom za vaš skup replika. Za naš primjer, nazvat ćemo ga db-replication:
|
1 |
replSetName: db-replication |

3. Kliknite na odgovarajući gumb za Spremi promjene za sve instance u prozoru uređivača.
4. Sada morate Ponovno pokrenuti sve svoje DB čvorove kako biste primijenili nove konfiguracijske parametre:

Jedna stvar koju treba imati na umu jest da ste završili s konfiguracijom skupa replika i da ponovno pokrećete ili sve čvorove ili PRIMARNI čvor, proces izbora nove PRIMARNE baze podataka započet će tijekom ponovnog pokretanja.
5. Odaberite MongoDB poslužitelj koji želite koristiti kao PRIMARNI i pristupite mu pomoću SSH protokola:

Zapamtite: nakon što je PRIMARNA baza podataka izabrana, ostali članovi skupa replika više neće biti dostupni za izravne operacije pisanja. To znači da se sve promjene i konfiguracije mogu izvršiti i primijeniti samo na trenutni PRIMARNI čvor. Dakle, osim ako niste dogovorili prioritete, morat ćete promijeniti niz za povezivanje u svojoj aplikaciji na novi PRIMARNI čvor.
6. Zatim pristupite repliciranoj bazi podataka pomoću svojih odgovarajućih vjerodajnica:
|
1 |
mongo -u {user} -p {password} {DB_name} |

U ovoj naredbi:
- {user} –odnosi se na korisničko ime administratora koje će biti poslano na vašu e-poštu (obično je to admin prema zadanim postavkama).
- {password} –ovo je lozinka poslana na vašu e-poštu zajedno s odgovarajućim korisničkim imenom.
- {DB_name}- predstavlja naziv baze podataka koju želite replicirati u ovom skupu replika (u našem primjeru koristimo zadani admin).
U slučaju novog izbora, možete koristiti iste vjerodajnice admin korisnika za prijavu u novu PRIMARNU bazu podataka.
7. Sada kada je veza uspostavljena, morat ćete izvršiti sljedeće retke kako biste definirali parametre za trenutni MongoDB čvor i pokrenuli skup replika:
|
1 2 3 4 5 |
config = {_id : "{replica_set}", members : [{_id : 0, host:"{current_db_ip}:27017"},]} rs.initiate() |
U gornjim recima zamijenit ćete vrijednosti u zagradama svojim odgovarajućim podacima:
- {replica_set} – ovo je naziv vaše grupe baza podataka za replikaciju koju ste naveli na početku ovog odjeljka. U našem slučaju, to je bilo db-replication.
- {current_db_ip} – označava IP adresu spremnika baze podataka koji ste odabrali:

U našem slučaju, izvršeni reci su:
|
1 2 |
config = {_id : "db-replication", members : [{_id : 0, host:"10.100.2.182:27017"},]} |

|
1 |
rs.initiate() |

8. Zatim izvršite sljedeću naredbu za sve preostale baze podataka:
|
1 |
rs.add("{db_ip}:27017") |
Ovdje se {db_ip} odnosi na IP adresu svake baze podataka:

9. Nakon što dodate sve članove replikacije, dobit ćete potpuno funkcionalan skup replika. Preporučujemo da na kraju procesa provjerite je li sve ispravno konfigurirano. Da biste to učinili, izvršite naredbu: rs.status(). To će vam prikazati potpune informacije o vašem skupu replika, kako slijedi:

Korak 4: Postavljanje arbitra skupa replika
Preporučujemo korištenje Arbiter čvora u određenim slučajevima. Što je Arbiter čvor? Obično je replikacija pouzdanija ako skup replika sadrži neparan broj čvorova. Dakle, ako trenutno imate paran broj čvorova u svom skupu, možete dodati Arbiter čvor za održavanje kvoruma jer on odgovara na zahtjeve za otkucaje srca (heartbeat) i izbore od drugih članova u skupu. Evo nekoliko pojedinosti o Arbiter čvorovima:
- Arbiter ne pohranjuje nikakve podatke; on samo glasuje na izborima u slučaju da je drugi čvor zakazao.
- Vrlo je lagan i ne troši previše resursa.
- Razmjenjivao je korisničke vjerodajnice između šifriranih replika.
- Kako biste održali najvišu dostupnost, pokušajte pokrenuti Arbiter na zasebnom čvoru.
Evo kako možete dodati Arbiter čvor u svoj skup replika:
- Prvo ćemo izvršiti horizontalno skaliranje i dodati dodatni čvor u klaster:


2. Nakon što je čvor dodan, potrebna nam je nova ključna datoteka. Idite u keys direktorij i izradite ključnu datoteku mongo-set.key. Kopirajte sadržaj ključa s bilo kojeg od prethodno konfiguriranih čvorova baze podataka i zalijepite ga ovdje kao što smo to učinili prije.
3. Idite u mongod.conf konfiguracijsku datoteku. Uklonite komentar s odjeljka za replikaciju i dodajte repISetName (to je db-replication u našem slučaju). Također, idite na security odjeljak i dodajte keyFile parametar ( /var/lib/jelastic/keys/mongo-set.key u našem slučaju).
4. Na kraju, ponovno pokrenite novi čvor kako biste primijenili ove nove konfiguracijske parametre:

Važno je zapamtiti da u ovom trenutku NE morate ponovno pokretati sve čvorove u klasteru. Ponovno pokrenite samo novo dodani Arbiter čvor. Ponovno pokretanje svih čvorova rezultirat će novim izborom PRIMARNOG čvora (osim ako niste odredili prioritete za odabir određenog čvora baze podataka kao PRIMARNOG).
5. Na kraju, Arbiter se može dodati u skup replika. Da biste to učinili, izvršite sljedeću naredbu na PRIMARNOM čvoru:
|
1 |
rs.addArb("{db_ip}:27017") |
Ovdje je {db_ip} IP adresa novog čvora:

6. Sada možete provjeriti je li novi čvor postao Arbiter. To možete učiniti tako da se prijavite na novi čvor pomoću SSH-a i povežete se s MongoDB instancom pomoću vjerodajnica koje ste primili na e-poštu u trenutku stvaranja čvora:

Ovo pokazuje da novi čvor koji smo upravo dodali u klaster djeluje kao Arbiter za db-replication. To osigurava kvorum u bilo kojoj situaciji, čineći skup replika pouzdanijim.
Korak 5: Testiranje dostupnosti klastera baze podataka
Zatim možemo postaviti naš MongoDB klaster za povezivanje i obavljanje operacija na daljinu. U sljedećem primjeru povezat ćemo se i izvršiti nekoliko naredbi za provjeru pomoću jednostavnog PHP apleta.
Za ovu svrhu trebat će vam aplikacijski poslužitelj, kao što je Apache. Možete ga dodati u svoje okruženje kao što smo mi učinili ili stvoriti novi u zasebnom okruženju.
- Započnite klikom na Change Environment Topology i dodavanjem poslužitelja:


2. Otvorite Configuration Manager karticu za Apache poslužitelj klikom na gumb Config kao što je prikazano u nastavku:

3. Pronađite i otvorite index.php datoteku u /var/www/webroot/ROOT direktoriju i zalijepite sljedeći kod umjesto zadanog sadržaja:
|
1 |
<!--?php try{ $mongodbConnectionURI= "mongodb://{db_username}:{db_password}@node{NodeID}-{environment_domain}:27017, node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017/?replicaSet={replica_set_name}&readPreference=primary"; $manager = new MongoDB\Driver\Manager($mongodbConnectionURI); $command = new MongoDB\Driver\Command(['ping' => 1]); $cursor = $manager->executeCommand('db', $command); $response = $cursor->toArray()[0]; var_dump($response); echo'<br><br>'; var_dump($manager->getServers()); } catch (Exception $e){ echo $e->getMessage(); } ?--> |
Sljedeće vrijednosti u gornjem kodu moraju se zamijeniti vašim odgovarajućim podacima:
- {replica_set_name} – unesite naziv svog skupa replika.
- {db_username} – dodajte administratorskog korisnika odabrane primarne baze podataka (prema zadanim postavkama to je admin).
- {db_password} – unesite lozinku administratorskog korisnika.
- {NodeID} – navedite identifikacijski broj odgovarajućeg čvora. To možete pronaći na CloudSigma PaaS nadzornoj ploči.
- {environment_domain} – dodajte domenu okruženja. To također možete pronaći na CloudSigma PaaS nadzornoj ploči:

Provjerite jeste li naveli ID-ove svakog čvora u svom skupu replika u odgovarajućem mongodbConnectionURI odjeljku.
Unošenjem odgovarajućih vrijednosti i pokretanjem koda prikazat će vam se skup nizova sličan ovome:

Provjerite jeste li Spremili datoteku u ovom trenutku!
4. Kako bi Apache mogao komunicirati s MongoDB poslužiteljem, potreban mu je poseban modul. Ovaj modul možete dodati unutar configs. Idite na etc mapu i otvorite php.ini datoteku. Pronađite [mongodb] odjeljak. Ovdje je sve što trebate učiniti ukloniti točku-zarez ispred extension=mongodb.so linije kako biste omogućili ovo proširenje:

5. Primijenite nove konfiguracije klikom na Spremi u prozoru uređivača. Kao i uvijek, moramo ponovno pokrenuti čvorove kako bismo primijenili promjene. Kliknite na gumb Ponovno pokreni čvorove pokraj Aplikacijskog poslužitelja kako biste to učinili:

6. Sada kliknite na gumb Otvori u pregledniku kako biste to testirali:

Klikom na ovu ikonu otvorit će se nova kartica preglednika koja će prikazati sve informacije o članovima/čvorovima vašeg skupa replika i njihovoj dostupnosti ovako:

Budući da smo koristili naredbu ping (linija 6 datoteke index.php ), prva linija prikazuje rezultat provjere dostupnosti skupa replika:
|
1 |
object(stdClass)#11 (3) { ["ok"]=> float(1) } |
To znači da je skup replika uspješno testiran.
Sljedeći blok u rezultatima prikazuje detaljne informacije o domaćinima skupa replika. Ovi podaci su dobiveni zahvaljujući funkciji getServers (linija 11 datoteke index.php). Slično tome, također možete provjeriti neke vrijednosti dodijeljene tijekom procesa stvaranja ovog skupa replika:
- host – IP adresa određene baze podataka.
- port – ovo je port trenutnog člana replikacije.
- [“is_primary”] i [“is_secondary”] – parametri koji označavaju status poslužitelja. Odgovarajuće vrijednosti za odabrani primarni MongoDB poslužitelj su true, false, a za druga dva MongoDB poslužitelja – false, true.
Osim toga, možete pokrenuti i zaustaviti čvorove baze podataka u bilo kojem trenutku kako biste pratili promjene. Također možete osvježiti stranicu kako biste učinili isto. To vam omogućuje da osigurate da je vaš MongoDB klaster uvijek dostupan, aktivan i radi onako kako ste ga konfigurirali.
CloudSigma PaaS omogućuje svojim korisnicima da iskoriste prednosti korištenja skupova replika bez previše brige o konfiguraciji i pozadinskom dijelu. Ovaj vodič pokazuje kako jednostavno može biti postavljanje vašeg vlastitog MongoDB klastera u samo nekoliko jednostavnih koraka. Možete saznati više o MongoDB, kako ga postaviti za Ubuntu ili javne poslužitelje u oblaku, kao i koje druge napredne značajke CloudSigma PaaS nudi. Također vas pozivamo da isprobate probnu verziju PaaS-a besplatno kako biste se upoznali s nadzornom pločom i trgovinom i onime što nude.
Komentari
Još nema komentara. Budite prvi.