Поставите скуп реплика са високом доступношћу у МонгоДБ 3.4 користећи кључну датотеку за контролу приступа на Убунту 16.04

Од своје концепције 2009. године МонгоДБ је водећи у НоСКЛ индустрији. Један од основних концепата МонгоДБ-�� је скуп реплика, тако да пре него што почнете са њим да прво прегледамо концепт.

О сету реплика

Најједноставнији модел комуникације који се користи у репликацији база података је Мастер-Славе архитектура. Као што његово име сугерише, овај модел има 2 улоге које су распоређене у јединственом мастеру и многим славеовима, улога мастера је да обрађује операције читања и писања које обављају клијенти, а славе се третирају као реплика мастера.

Најважнија предност овог модела је да перформансе мастера нису угрожене операцијама резервне копије, операције резервне копије се раде на асинхрони начин и то може постати озбиљан проблем када главни чвор откаже. Славе чворови се само читају и морају се ручно унапредити у главни чвор, тако да у овом тренутку постоји могућност губитка података.

Једна опција за решавање проблема доступности је да имате више од једног мастера у архитектури, али то може довести до другог проблема у конзистентности података између тих инстанци и додатној сложености конфигурације.

Сада када имамо контекст, можемо представити технологију скупа реплика МонгоДБ-а. Скуп реплика је назив Мастер-Славе архитектуре која има аутоматски прелазак на грешку, тако да у тренутку када главни (који је сада назван primary) чвор не функционише исправно election, активираће се и нови примарни чвор ће бити изабран од преосталих славе ( који се сада назива secondaries).

Примарни чвор

Примарни чвор је једини који обавља операције писања, по подразумеваној вредности операцијама читања рукује и примарни, али ово понашање се може променити касније.

Операције се бележе у oplog(дневник операција), а затим секундарни чворови асинхроно ажурирају свој садржај на основу садржајаoplog

Напомена: oplogје ограничена колекција, то значи да колекција има ограничење, при local.oplog.rsчему можете проверити садржај ове колекције унутар монго љуске у било ком члану скупа.

Секундарни чвор

Осим што су они који праве исправну резервну копију базе података, секундарни чвор има следеће улоге:

  • Може прихватити операције читања ако је потребно.
  • Може да покрене избор ако примарни чвор не успе.
  • Може гласати на изборима.
  • Може постати нови примарни ако је потребно.

Захваљујући овим карактеристикама можемо имати различите типове секундарних чворова:

  • Приоритет 0 : Ови чворови не могу постати primaryи не могу покренути изборе, али ипак могу гласати на изборима, имати комплетну реплику и могу прихватити операције читања. Ово може бити од помоћи у примени више центара података.
  • Скривени : Ово су Priority 0чланови, али штавише не могу да обрађују операције читања. Они могу гласати ако је потребно. Жељени задаци за ове чланове су извештавање и прављење резервних копија.
  • Одложено : Ови чворови су задужени за "историјске податке" тако што се одлажу са одређеном јединицом времена. Одложени члан мора бити priority 0чвор, а препоручује се и да буде hiddenчлан.

Предуслови

  • Доступност за покретање најмање 3 инстанце Убунту 16.04 к64 са истом величином сервера.

Дизајнирајте комплет реплика

Пре постављања инфраструктуре важно је дизајнирати је, а постоје тачке које треба размотрити у овом дизајну.

Избор броја чланова

Имајте на уму да је минимални број елемената за прављење скупа реплика 3. Можете мешати три типа чворова са најмање једним примарним и једним секундарним чвором.

У овом водичу распоређујемо 3 члана, једног примарног и два стандардна секундарна.

Напомена: Препоручује се да имате максималан број од 7 чланова са правом гласа са мешавином арбитара и секундарних чланова.

Изаберите име

Назив је само за референцу, али га користите у конфигурацији сета. Имајте на уму да можете имати више од једног скупа реплика у свом производном окружењу, тако да немојте занемарити име вашег скупа.

Овај водич подстиче корисника да одабере име скупа.

Дистрибуција чланова у различитим центрима података

Овај водич предлаже да се примени у истом центру података како бисте избегли проблеме у комуникацији.

Напомена: У случају примене у различитим центрима података, препоручује се да своје чворове обавите ВПН-ом

Упутства за примену

Корак 1: Поставите минималне чворове за своју инфраструктуру

Покрените 3 чвора Убунту 16.04 к64; у истом региону са вашег корисничког портала, ако је могуће. Не заборавите да их именујете у складу са типом пројекта којим се бавите и будите сигурни да имате исту величину сервера у свим овим чворовима.

Након што поставите своја 3 чвора, мораћете да будете сигурни да сваки чвор може да разговара са осталима. Морате ссх у два чвора и доћи до осталих користећи ping -c 4 EXAMPLE_IP. Промените EXAMPLE_IPна стварне ИП адресе ваших чворова.

Овде можете видети пример успешне комуникације између два чвора.

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: Инсталирајте МонгоДБ у сваки чвор ваше инфраструктуре

Уопштено говорећи, можете користити МонгоДБ пакет Убунту-а, али је боље да користите званични репо заједнице јер је увек ажуриран. Овај репо садржи ове пакете:

  • монгодб-орг , групни пакет који обухвата четири компоненте.
  • монгодб-орг-сервер , ово садржи mongodдемон (примарни процес који обрађује захтеве за подацима).
  • монгодб-орг-монгос , ово садржи mongosдемон (услуга рутирања за дељене примене).
  • монгодб-орг-схелл , ово је mongo shellЈаваСцрипт интерфејс.
  • монгодб-орг-тоолс , неки алати за административне активности.

Наставите са инсталирањем пакета.

Увезите јавни кључ у систем управљања пакетима.

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

Креирајте датотеку листе за МонгоДБ '/етц/апт/соурцес.лист.д/монгодб-орг-3.4.лист'.

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

Ажурирајте базу података пакета.

sudo apt-get update

Инсталирајте метапакет МонгоДБ.

sudo apt-get install -y mongodb-org

Покрените МонгоДБ услугу.

sudo service mongod start

Сада можете отворити mongo shellу било којој басх сесији. Да бисте то урадили, морате користити mongoкоманду. Дочекаће вас нешто слично овоме.

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

Не заборавите да искључите услугу са sudo service mongod stop, јер ћемо касније mongodпоново почети са неким параметрима. Поновите овај процес у сва 3 чвора скупа.

Корак 3: Конфигуришите приступну кључну датотеку

Коришћење кључног фајла намеће два концепта у администрацији скупа реплика. Први је Internal Authentication. Подразумевано можете започети mongo shellсесију без коришћења корисника и ова сесија ће имати пуну контролу над базом података, али када користите кључну датотеку за аутентификацију, ваша mongo shellсесија достиже стање које се зове localhost exception. Ово стање вам омогућава само да креирате администраторског корисника и скуп реплика. Други концепт је Role-Based Access Control, или другим речима ауторизација. Ово се примењује да би се управљало административним нивоима скупа реплика.

Креирајте своју кључну датотеку

Кључна датотека је лозинка која се користи у скупу, ова лозинка мора бити иста у свим члановима скупа. Да бисте повећали сигурност, важно је да користите насумични кључ са алатом по вашем избору.

Садржај мора да има између 6 и 1064 карактера. Такође морате подесити read onlyдозволу за кључну датотеку.

chmod 400 PATH_OF_YOUR_KEYFILE
Поставите кључну датотеку у сваки члан скупа

Сада копирајте своју кључну датотеку на сваког члана скупа, користите конзистентан фолдер за будућу референцу и немојте га чувати на преносивом медијуму.

Такође користите фасциклу за датотеку којој mongodможе да приступи.

Наметните коришћење кључног фајла у скупу реплика

У овом кораку треба да започнемо члан mongod daemon у сваком скупу . Постоје два начина за покретање mongodпроцеса: коришћењем конфигурационе датотеке или коришћењем командне линије. Обе су прилично једноставне методе, али само ради једноставности, овај водич користи верзију командне линије.

Конфигурација командне линије

Користите име које сте раније одабрали у овој команди.

mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"

Подразумевано mongodсе не покреће као демон. Мораћете да користите --forkпараметар или да га upstartу потпуности покренете као демон. У овом туторијалу не подстичемо рад mongodкао демон, тако да можете директно да видите логове у свом терминалу.

Напомена: Пажљиво откуцајте име скупа реплика јер га једном креирате не можете променити.

Корак 4: Повежите се на интерфејс локалног хоста са једног од чланова скупа

Напомена: Ако покренете mongodкао процес који није демон, онда ћете морати да отворите другу ссх везу да бисте наставили са радом.

Морате користити mongoкоманду да отворите mongo shell. Ово се може урадити у било ком члану скупа.

У овом тренутку се налазимо у стању које се зове localhost exception. Када се кључна датотека користи за подешавање mongodпроцеса, обавезни сте да креирате администратора базе података пре него што можете да примените операције читања и писања, али ћемо о томе касније.

Корак 5: Покретање скупа реплика

Ово је деликатан део, користимо команду rs.initiate()унутар mongo shellкорака 4. пре употребе ове команде, хајде да је прегледамо.

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

Прво _idпоље је стринг и мора се подударати са --replSetоним које је претходно прослеђено у mongod. Такође, свака вредност hostмора бити или ип или име домена сваког члана скупа реплика. Не заборавите да додате порт који монго инстанца користи у сваком члану.

Сада је време да извршите команду са вашим подацима на њој, ово ће покренути election, а затим ће примарни бити изабран аутоматски.

Овде треба да приметите да се курсор љуске променио у YOUR_SET_NAME:PRIMARY>или YOUR_SET_NAME:SECONDARY. То значи да је креирање комплета било успешно.

Да бисте наставили са радом, морате пронаћи primary, ако нисте на њему, наравно. Користите rs.status()команду да прикажете информације о скупу реплика и лоцирате primary. Ви тражите некретнину "stateStr" : "PRIMARY".

Корак 6: Креирање администратора

Након што пронађете primary, унесите mongo shellи покрените следећу команду користећи своје податке.

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

admin = db.getSiblingDB("admin")Део омогућава нам писати у adminиз неке друге базе података. Ово ствара псеудоним који се зове admin, тако да можемо да извршавамо команде користећи га уместо тога.

Ако је операција успешна, добићете обавештење да је корисник додат.

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

У овом тренутку имамо само администратора за све сервере, али постављање реплике нас приморава да имамо корисника са том clusterAdminулогом. Направићемо другог корисника само са том улогом да раздвојимо бриге.

Корак 7: Аутентификација као администратор

Достигли смо ограничење од localhost exception, због чега морамо да променимо аутентификацију на корисника који је креиран један корак раније.

Можете променити кориснике у mongo shellоквиру следећег.

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

Ако се већ нисте повезали са mongo shellовом командом уместо тога.

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

Бићете обавештени о промени корисника и можете да пређете на следећи корак.

Корак 8: Креирање главног кластера

clusterAdminУлога даје упутство потпуну контролу над скупа реплика. Креирање је лако као и креирање администраторског корисника.

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

Имајте на уму да је овај пут улога промењена уclusterAdmin .

Корак 9: Убацивање података у скуп реплика

У овом тренутку имамо 2 администратора корисника: једног који има потпуну контролу над сервером и другог који има приступ административним задацима на нивоу скупа реплика. Међутим, недостаје нам корисник који има приступ да „користи“ базу података, па ћемо сада креирати тог корисника.

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

Обратите пажњу да овај пут мењамо dbдео, ту стављамо базу података која је доступна кориснику, у овом случају користимо базу података под називом cars.

База података још није креирана. Да бисте то урадили, мораћете да откуцате неке команде да бисте га имплицитно креирали. Пребаците се на carsбазу података.

use cars

Добићете обавештење: switched to db cars.

База података још увек није креирана, да бисте то урадили, потребно је да у њу нешто упишете. Користимо следећи пример.

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

Овог пута ћете бити обавештени са WriteResult({ "nInserted" : 1 }).

Ако желите, можете да преузмете све објекте у бази, find()методом:

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

Имајте на уму да _idће се то разликовати у вашем излазу, али остали подаци би требали бити исти. Ако буде довољно времена, ови подаци ће се реплицирати на друге чланове.

Закључак

Прављење сета реплика у почетку може бити изазовно јер постоји много информација које треба разумети, али када добијете идеју иза тога, можете да је примените на повјетарцу, тако да немојте одустајати ако не можете да је схватите први пут. Имајте на уму да је скуп реплика важан у МонгоДБ администрацији јер отвара могућност додавања напредних функција као што је балансирање оптерећења.


Инсталирање ИнфлукДБ-а на Убунту 14

Инсталирање ИнфлукДБ-а на Убунту 14

Увод ИнфлукДБ је отворена, дистрибуирана база података временских серија без спољних зависности. Да, прочитали сте параграф без спољних зависности

Како инсталирати Апацхе Цассандра 3.11.к на Убунту 16.04 ЛТС

Како инсталирати Апацхе Цассандра 3.11.к на Убунту 16.04 ЛТС

Користите другачији систем? Апацхе Цассандра је бесплатан систем за управљање НоСКЛ базом података отвореног кода који је дизајниран да обезбеди скалабилност, високу

Како инсталирати Апацхе Цассандра 3.11.к на ЦентОС 7

Како инсталирати Апацхе Цассандра 3.11.к на ЦентОС 7

Користите другачији систем? Апацхе Цассандра је бесплатан систем за управљање НоСКЛ базом података отвореног кода који је дизајниран да обезбеди скалабилност, високу

Како инсталирати и конфигурисати АрангоДБ на ЦентОС 7

Како инсталирати и конфигурисати АрангоДБ на ЦентОС 7

Користите другачији систем? Увод АрангоДБ је НоСКЛ база података отвореног кода са флексибилним моделом података за документе, графиконе и кључ-вредности. То је

Како инсталирати Ларавел ГитСцрум на ЦентОС 7

Како инсталирати Ларавел ГитСцрум на ЦентОС 7

Ларавел ГитСцрум или ГитСцрум је алатка за продуктивност отвореног кода дизајнирана да помогне развојним тимовима да имплементирају Сцрум методологију на сличан начин т

Аутоматски резервишите више МиСКЛ или МариаДБ база података

Аутоматски резервишите више МиСКЛ или МариаДБ база података

Увод У овом тексту, добро прођите кроз како да направите резервну копију више МиСКЛ или МариаДБ база података које се налазе на истој машини користећи прилагођени басх скрипт

Како инсталирати и конфигурисати ОриентДБ Цоммунити Едитион на ЦентОС 7

Како инсталирати и конфигурисати ОриентДБ Цоммунити Едитион на ЦентОС 7

ОриентДБ је нова генерација мултимодела отвореног кода НоСКЛ ДБМС. Уз подршку за више модела података, ОриентДБ може пружити више функционалности и флексибилности у

Обезбеђивање МонгоДБ-а

Обезбеђивање МонгоДБ-а

МонгоДБ подразумевано није безбедан. Ако инсталирате МонгоДБ и покрећете га без конфигурисања за аутентификацију, имаћете лоше време

Прављење резервне копије МиСКЛ база података

Прављење резервне копије МиСКЛ база података

МиСКЛ је најпопуларнији софтвер на свету који се користи за базе података. Веома је важно да имате резервне копије базе података. Ова пракса дозвољава

Како направити резервну копију и вратити ПостгреСКЛ базе података на Убунту 16.04

Како направити резервну копију и вратити ПостгреСКЛ базе података на Убунту 16.04

Увод ПостгреСКЛ је бесплатан систем за управљање базама података отвореног кода који се може користити за чување информација у вези са веб локацијама. Такође је познато а

Како инсталирати ПостгреСКЛ 11.1 на Арцх Линук

Како инсталирати ПостгреСКЛ 11.1 на Арцх Линук

Предуслови Вултр сервер који ради са најновијим Арцх Линук-ом (погледајте овај чланак.) Судо приступ. Наредбе које су потребне за покретање као роот имају префикс # и један

Поставите скуп реплика са високом доступношћу у МонгоДБ 3.4 користећи кључну датотеку за контролу приступа на Убунту 16.04

Поставите скуп реплика са високом доступношћу у МонгоДБ 3.4 користећи кључну датотеку за контролу приступа на Убунту 16.04

Од своје концепције 2009. године МонгоДБ је водећи у НоСКЛ индустрији. Један од основних концепата МонгоДБ-а је скуп реплика, тако да пре рада са и

Инсталирајте новије верзије МонгоДБ-а на Дебиан 7

Инсталирајте новије верзије МонгоДБ-а на Дебиан 7

МонгоДБ је брза и моћна НоСКЛ база података. Међутим, Дебиан спремишта се ажурирају споро и често садрже веома старе верзије пакета. Овај туторијал

Сетуп Барниард 2 Витх Снорт

Сетуп Барниард 2 Витх Снорт

Барниард2 је начин чувања и обраде бинарних излаза из Снорт-а у МиСКЛ базу података. Пре него што почнемо Имајте на уму да ако немате хркање

Како инсталирати Апацхе Цассандра 3.11.к на Дебиан 9

Како инсталирати Апацхе Цассандра 3.11.к на Дебиан 9

Користите другачији систем? Апацхе Цассандра је бесплатан систем за управљање НоСКЛ базом података отвореног кода који је дизајниран да обезбеди скалабилност, високу

Инсталирајте РоцкМонго на ЦентОС 7

Инсталирајте РоцкМонго на ЦентОС 7

РоцкМонго је алат за управљање МонгоДБ заснован на вебу који је сличан МиСКЛ алату за управљање: пхпМиАдмин. Овај водич ће покрити процес инсталације

Инсталирајте ИнфлукДБ на Дебиан Јессие помоћу Телеграфа

Инсталирајте ИнфлукДБ на Дебиан Јессие помоћу Телеграфа

Увод ИнфлукДБ је база података заснована на временским серијама написана у Го. ИнфлукДБ има много практичних употреба, од којих је једна чување података за праћење на серверима. И

Обезбедите МариаДБ са подршком за ССЛ на Убунту 16.04

Обезбедите МариаДБ са подршком за ССЛ на Убунту 16.04

МариаДБ је бесплатна база података отвореног кода и најраспрострањенија је замена за МиСКЛ. Направљен је од стране програмера МиСКЛ-а и намерава да остане

Како инсталирати пхпРедисАдмин на ЦентОС 7

Како инсталирати пхпРедисАдмин на ЦентОС 7

пхпРедисАдмин је веб апликација која управља Редис базама података са интуитивним графичким корисничким интерфејсом. Овај водич ће објаснити како да инсталирате

Како инсталирати и користити АрангоДБ на Убунту 16.04

Како инсталирати и користити АрангоДБ на Убунту 16.04

Користите другачији систем? Увод АрангоДБ је НоСКЛ база података отвореног кода са флексибилним моделом података за документе, графиконе и кључ-вредности. То је

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више