MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Ръководство за конфигуриране на Load Balancer в MongoDB Sharded Cluster

За всяка база данни балансирането на натоварването на всички заявки, идващи от клиенти, е важен и основен механизъм за осигуряване на мащабируемост. Правилното решение за балансиране на натоварването разпределя всички клиентски заявки равномерно във всички ресурси на базата данни. Ако клъстерът на базата данни не е защитен с подходящо решение за балансиране на натоварването, вашата база данни няма да може да се справи с повишеното натоварване на трафика върху нея.

За щастие, MongoDB предоставя вградена поддръжка за балансиране на натоварването на големия трафик, като поддържа хоризонтално мащабиране чрез разделяне. Можете да разпределите данните от вашите колекции на множество сървъри, като използвате разделяне. Можете също да добавите нови сървъри/машини към вашия клъстер, за да се справите с увеличения трафик на базата данни. Можете да следвате това ръководство, за да преобразувате своя клъстер реплики на MongoDB в клъстер за разделяне.

В тази статия ще научим за поведението на процеса на балансиране, който се изпълнява в разчленените клъстери на MongoDB и как да променим неговото поведение. Процесът на балансиране на MongoDB се грижи за равномерното разпределение на вашите колекции между фрагментите. Например, ако един фрагмент от вашия клъстер съдържа твърде много парчета от вашата разчленена колекция, този конкретен фрагмент може да получи повече трафик в сравнение с други фрагменти. Следователно процесът на балансиране балансира правилно парчетата колекции в парчетата. В повечето от внедряванията на MongoDB конфигурациите по подразбиране на процеса на балансиране са достатъчни за нормални операции. Но в някои ситуации администраторите на бази данни може да искат да променят поведението по подразбиране на този процес. Ако искате да промените поведението по подразбиране на процеса на балансиране за всякакви нужди на ниво приложение или оперативни изисквания, тогава можете да следвате това ръководство.

Нека започнем с някои основни команди, за да получим информация за състоянието и състоянието на процеса на балансиране.

Състояние на балансираното състояние

Тази команда проверява дали балансьорът е активиран или разрешен да работи или не. Ако процесът на балансиране не се изпълнява, тази команда ще върне false. Това няма да провери дали процесът на балансиране работи или не.

sh.getBalancerState()

Активиране на процеса на балансиране

Ако балансьорът не е активиран по подразбиране, тогава можете да го активирате, като изпълните следната команда. Тази команда няма да стартира процеса на балансиране, но ще активира процеса и гарантира, че балансирането на парчета няма да бъде блокирано, когато процесът на балансиране стартира следващия път.

sh.enableBalancing(<collection_name/namespace>)

Деактивирайте процеса на балансиране

Процесът за балансиране се изпълнява по всяко време по подразбиране. Следователно, ако искате да деактивирате процеса на балансиране за определен период от време, можете да използвате следната команда. Един идеален сценарий за използване на тази команда е, когато правите резервно копие на вашата база данни.

sh.stopBalancer()

Уверете се, че процесът на балансиране е спрян, преди да направите резервно копие. Ако процесът е активиран, докато правите резервно копие на базата данни, може да се окажете с някаква непоследователна реплика на вашата база данни. Това може да се случи, когато процесът на балансиране премести някои парчета през фрагментите за балансиране на натоварването по време на процеса на архивиране.

Можете също да деактивирате балансирането на някои конкретни колекции, като предоставите пълното пространство от имена на колекция като параметър, като използвате следната команда.

sh.disableBalancing("<db_name>.<collection_name>")

Състояние на работа на балансира

Тази команда проверява дали процесът на балансиране работи или не. Той също така проверява дали активно управлява парчетата за разделяне или не. Връща истина, ако процесът се изпълнява, в противен случай връща false.

sh.isBalancerRunning()

Конфигурации на размера на парчетата по подразбиране

По подразбиране размерът на парчето във всеки разчленен клъстер на MongoDB е 64MB. За повечето сценарии това е достатъчно добро за мигриране или разделяне на раздробените парчета. Въпреки това, понякога нормалният процес на миграция включва повече I/O операции, отколкото вашият хардуер може да обработи. В този тип ситуации може да искате да намалите размера на парчетата. Можете да направите това, като изпълните следния набор от команди.

use config

db.settings.save( { _id:"chunksize", value: <sizeInMB> } )

Ако промените размера на парчето по подразбиране в раздробения клъстер, имайте предвид следните неща

  • Можете да посочите размера на парчето само между 1 и 1024 MB
  • Автоматичното разделяне ще се случи само при вмъкване или актуализиране
  • По-малките размери на парчетата ще доведат до повече време по време на процеса на разделяне.

График за балансиране за определено време

Когато размерът на вашата база данни е огромен, процесите на балансиране или миграция могат да повлияят на цялостната производителност на вашата база данни. Ето защо е разумно да планирате процеса на балансиране през определен времеви прозорец, когато натоварването на базата данни е много по-малко. Можете да използвате следните команди, за да зададете времевия прозорец за стартиране на процеса на балансиране.

use config

db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } }, true )

Пример

Следната команда ще зададе времевия прозорец от 1:00 до 5:00 сутринта за стартиране на процеса на балансиране.

db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "01:00", stop : "05:00" } } }, true )

Уверете се, че даденият период от време е достатъчен за пълен процес на балансиране.

Можете също да премахнете всеки съществуващ времеви прозорец на процеса на балансиране, като изпълните следната команда.

db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })

Освен горните команди, можете също да промените поведението на репликация, докато извършвате процеса на миграция на парчета, като използвате параметъра _secondaryThrottle. Също така можете да използвате свойството _waitForDelete с командата moveChunk, за да кажете на процеса на балансиране да изчака фазата на изтриване на текущата миграция, преди да започне с новата фаза на мигриране на парчета.

Заключение

Надяваме се, че това ще е всичко, от което се нуждаете, докато променяте поведението по подразбиране на процеса на балансиране на MongoDB. Балансирането е много важен аспект на всеки разчленен клъстер на MongoDB. Така че, ако знаете за процеса на балансиране в подробности, става много лесно да промените поведението по подразбиране на процеса на балансиране според вашите нужди и случаи на употреба.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да създадете конфигурационен файл за MongoDB

  2. Съкращаване на колекция

  3. Node.js – Създаване на връзки с Mongoose

  4. Премахване чрез _id в конзолата на MongoDB

  5. Как да конфигурирам AppArmor за комплекти реплики на MongoDB?