Докато MongoDB е прекарал близо десетилетие в постигане на зрялост (първоначална версия на февруари 2009 г.), технологията е малко мистерия за тези, които имат опит в конвенционалните среди на релационни бази данни (RDBMS). Интегрирането на NoSQL в съществуваща среда без задълбочени познания може да бъде предизвикателство. Не е необичайно да видите MongoDB да работи заедно с MySQL или друга база данни RDBMS.
Опитът с RDBMS може да ви помогне да разберете някои от процесите, но трябва да знаете как да преведете своя опит в света на NoSQL. Управлението на производствени среди включва стъпки като внедряване, наблюдение на времето за работа и производителност, поддържане на сигурността на системата, управление на HA, архивиране и така нататък. Както RDBMS, така и NoSQL са жизнеспособни опции, но има специфични критични разлики между двете, които потребителите трябва да имат предвид, докато внедряват или управляват MongoDB. Технологията се променя бързо и ние трябва да се адаптираме бързо.
Когато MongoDB изведнъж е ваша отговорност, инструментите за управление гарантират, че базите данни на MongoDB, които управлявате, са стабилни и сигурни. Използването на предварително дефинирани процеси и автоматизация може не само да ви спести време, но и да ви предпази от често срещаните грешки. Платформа за управление, която систематично адресира всички различни аспекти на жизнения цикъл на базата данни, ще бъде по-стабилна от свързването на няколко точкови решения.
В основата на ClusterControl е неговата функционалност за автоматизация, която ви позволява да автоматизирате задачите на базата данни, които трябва да изпълнявате редовно, като разгръщане на нови бази данни, добавяне и мащабиране на нови възли, управление на архивиране, висока наличност и отказ, промени в топологията, надстройки и др. ClusterControl осигурява програмирана сигурност, запазвайки целостта на инфраструктурата на вашата база данни. Освен това с ClusterControl потребителите на MongoDB вече не са обект на заключване на доставчика; нещо, което напоследък беше поставено под въпрос от мнозина. Можете безплатно да разгръщате и импортирате различни версии и доставчици на MongoDB от една конзола. Потребителите на MongoDB често трябва да използват смесица от инструменти и собствени скриптове, за да постигнат своите изисквания и е добре да знаете, че можете да ги намерите комбинирани в един продукт.
В тази статия ще ви покажем как да внедрите и управлявате MongoDB 4.0 по автоматизиран начин. Тук ще намерите как да направите:
- Инсталиране на ClusterControl
- Процес на внедряване на MongoDB
- Внедряване на нов клъстер
- Импортиране на съществуващ клъстер
- Мащабиране на MongoDB
- Прочетете мащабиране (набор реплики)
- Мащабиране на запис (шардиране)
- Защита на MongoDB
- Наблюдение и тенденция
- Архивиране и възстановяване
Инсталиране на ClusterControl
За да започнете с ClusterControl, имате нужда от специална виртуална машина или хост. Изискванията за VM и поддържаните системи са описани тук. Базовата VM може да започне от 2 GB, 2 ядра и дисково пространство от 20 GB място за съхранение, локално или в облака.
Инсталацията е добре описана в документацията, но основно става дума за изтегляне на инсталационния скрипт, който ще ви преведе през съветника. Скриптът на съветника настройва вътрешната база данни, инсталира необходимите пакети, хранилища и прави други необходими настройки. За среди за заключване на интернет можете да използвате офлайн инсталационния процес.
ClusterControl изисква SSH достъп до хостовете на базата данни и наблюдението може да бъде базирано на агенти или без агенти. Управлението е без агенти.
Настройката на SSH без парола към всички целеви възли (ClusterControl и всички хостове на база данни) включва изпълнение на следните команди на сървъра на ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Разгръщане и мащабиране на MongoDB
Внедряване на нов MongoDB 4.0 клъстер
След като влезем в интерфейса на ClusterControl, първото нещо, което трябва да направите, е да разположите нов клъстер или да импортирате съществуващ. Новата версия 1.7.1 въвежда поддръжка за версия 4.0. Вече можете да разгръщате/импортирате и управлявате MongoDB v4.0 с поддръжка за SSL връзки.
Изберете опцията „Разгръщане на клъстер от база данни“ и следвайте инструкциите, които се появяват.
ClusterControl Разгръщане на клъстер с база данниКогато избираме MongoDB, трябва да посочим потребител, ключ или парола и порт за свързване чрез SSH към нашите сървъри. Нуждаем се и от името на нашия нов клъстер и ако искаме ClusterControl да инсталира съответния софтуер и конфигурации вместо нас.
След като настроим информацията за SSH достъп, трябва да въведете данните за достъп до нашата база данни. Можем също да посочим кое хранилище да използваме. Конфигурацията на хранилището е важен аспект за сървърите на бази данни и клъстерите. Можете да имате три типа хранилище, когато разгръщате сървър на база данни/клъстер с помощта на ClusterControl:
- Използвайте хранилище на доставчик
Предоставяне на софтуер чрез настройване и използване на предпочитаното от доставчика на базата данни хранилище на софтуера. ClusterControl ще инсталира най-новата версия на това, което се предоставя от хранилището на доставчика на базата данни. - Не настройвайте хранилища на доставчици
Предоставяйте софтуер чрез използване на съществуващото хранилище на софтуер, което вече е настроено на възлите. Потребителят трябва да настрои ръчно софтуерното хранилище на всеки възел на базата данни и ClusterControl ще използва това хранилище за внедряване. Това е добре, ако възлите на базата данни работят без интернет връзки. - Използвайте огледални хранилища (Създаване на ново хранилище)
Създайте и огледайте хранилището на текущия доставчик на база данни и след това разгръщайте с помощта на локалното огледално хранилище. Това ви позволява да „замразите“ текущите версии на софтуерните пакети.
В следващата стъпка трябва да добавим нашите сървъри към клъстера, който ще създадем. Когато добавяме нашите сървъри, можем да въведем IP или име на хост. За последното трябва да имаме DNS сървър или да сме добавили нашите MongoDB сървъри към локалния файл с разделителна способност (/etc/hosts) на нашия ClusterControl, за да може да разреши съответното име, което искате да добавите. За нашия пример ще разположим ReplicaSet с три сървъра, един основен и два вторични. Възможно е да се разположат само 2 възела на MongoDB (без арбитър). Предупреждението на този подход е да няма автоматично преминаване при отказ, тъй като настройката с 2 възела е уязвима за разделяне на мозъка. Ако основният възел се повреди, тогава е необходимо ръчно преминаване при отказ, за да се направи другият сървър като основен. Автоматичното преминаване при отказ работи добре с 3 възела и повече. Препоръчително е комплектът реплика да има нечетен брой членове с право на глас. Толерантността на грешки за набор от реплики е броят на членовете, които могат да станат недостъпни и все още да оставят достатъчно членове в набора, за да изберат първичен. Толерантността на грешки за трима члена е един, за пет е два и т.н.
На същата страница можете да избирате от различни версии на MongoDB:
ClusteControl Разгръщане на MongoDB версия 4.0Когато всичко е настроено, натиснете бутона за разгръщане. Можете да наблюдавате състоянието на създаването на нашия нов клъстер от монитора на активността на ClusterControl. След като задачата приключи, можем да видим нашия клъстер в главния екран на ClusterControl и в изгледа на топологията.
Изглед на топология на ClusterControlКакто можем да видим на изображението, след като създадем нашия клъстер, можем да изпълним няколко задачи върху него, като преобразуване на набор от реплики в шард или добавяне на възли към клъстера.
Мащабиране на ClusterControlИмпортиране на нов клъстер
Също така имаме възможност да управляваме съществуващ клъстер, като го импортираме в ClusterControl. Такава среда може да бъде създадена от ClusterControl или други методи като инсталиране на docker.
ClusterControl импортиране на MongoDBПърво, трябва да въведете идентификационните данни за SSH достъп до нашите сървъри. След това въвеждаме идентификационните данни за достъп до нашата база данни, директорията с данни на сървъра и версията. Добавяме възлите по IP или име на хост, по същия начин, както когато разгръщаме, и натискаме Импортиране. След като задачата приключи, ние сме готови да управляваме нашия клъстер от ClusterControl.
Мащабиране на MongoDB
Един от крайъгълните камъни на MongoDB е, че е изграден с мисъл за висока наличност и мащабиране. Мащабирането може да се извърши или вертикално чрез добавяне на повече ресурси към сървъра или хоризонтално с повече възли. Хоризонталното мащабиране е това, в което MongoDB е добър и не е много повече от разпределяне на натоварването на множество машини. Всъщност ние използваме множество евтини стокови хардуерни кутии, вместо да надграждаме до по-скъп високопроизводителен сървър. MongoDB предлага мащабиране както за четене, така и за запис и ние ще открием за вас разликите между тези две стратегии. Дали да изберете мащабиране за четене или запис зависи от работното натоварване на вашето приложение:ако приложението ви има тенденция да чете по-често, отколкото да записва данни, вероятно ще искате да използвате възможностите за мащабиране на четене на MongoDB.
С ClusterControl добавянето на повече сървъри към клъстера е лесна стъпка. Можете да направите това от GUI или CLI. За по-напреднали потребители можете да използвате ClusterControl Developer Studio и да напишете базово условие за ресурси, за да разширите хоризонтално своя клъстер.
MongoDB ReplicaSetРазделяне
Решението за разделяне на MongoDB е подобно на съществуващите рамки за споделяне за други основни решения за бази данни. Той използва типично решение за търсене, при което разделянето се дефинира в ключ за разделяне и диапазоните се съхраняват в конфигурационна база данни. MongoDB работи с три компонента, за да намери правилния фрагмент за вашите данни. Типична разчленена среда на MongoDB изглежда така:
Sharding MongoDBПървият използван компонент е рутерът за шард, наречен mongos. Всички операции за четене и запис трябва да бъдат изпратени до рутера за сегменти, което кара всички фрагменти да действат като единна база данни за клиентското приложение. Рутерът за фрагменти ще насочи заявките към съответните сегменти, като се консултира с Configserver.
Преобразуване на ClusterControl в ShardУправлението на фрагменти е наистина лесно в MongoDB. Можете да добавяте и премахвате фрагменти онлайн и рутерът за фрагменти на MongoDB автоматично ще се приспособи към това, което му кажете. Ако искате да научите повече за това как най-добре да управлявате фрагменти, моля, прочетете публикацията ни в блога за управлението на MongoDB фрагменти.
Осигуряване на MongoDB
Свързани ресурси ClusterControl за MongoDB Автоматизация и управление на MongoDB с ClusterControlMongoDB идва с много малко сигурност от кутията:например удостоверяването е деактивирано по подразбиране. С други думи:по подразбиране всеки има root права върху всяка база данни. Една от промените, приложени от MongoDB за смекчаване на рисковете, беше да промени обвързването по подразбиране на 127.0.0.1. Това предотвратява свързването му с външния IP адрес, но естествено това ще бъде върнато от повечето хора, които го инсталират. ClusterControl премахва човешката грешка и предоставя достъп до набор от функции за сигурност, за да защити автоматично вашите бази данни от хакове и други заплахи. По-рано публикувахме кратък видеоклип със съвети за сигурност.
Новата версия на ClusterControl предлага SSL поддръжка за MongoDB връзки. Активирането на SSL добавя още едно ниво на сигурност за комуникация между приложенията (включително ClusterControl) и базата данни. Клиентите на MongoDB отварят криптирани връзки към сървърите на базата данни и проверяват самоличността на тези сървъри, преди да прехвърлят каквато и да е чувствителна информация.
За да активирате SSL връзка, трябва да използвате най-новия клиент s9s. Можете да го инсталирате с
wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh
Или следвайте други възможни методи за инсталиране, описани тук.
След като имате инсталирани инструменти на s9s (мин. версия 1.7-93.1), можете да използвате флага --enable-ssl, за да активирате SSL връзка.
Пример по-долу:
[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 && runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.
ClusterControl ще изпълни всички необходими стъпки, включително създаване на сертифициране на всички възли на клъстера. Такива сертификати могат да се поддържат по-късно в раздела Key Management.
Управление на ключовете на ClusterControlНаблюдение
Когато работите със системи от бази данни, трябва да можете да ги наблюдавате. Това ще ви позволи да идентифицирате тенденции, да планирате надстройки или подобрения или да реагирате ефективно на всякакви проблеми или грешки, които могат да възникнат.
Преглед на ClusterControl MongoDBНовият ClusterControl 1.7.1 добавя мониторинг с висока разделителна способност за базиран на MongoDB. Той използва Prometheus като хранилище на данни с език за заявки PromQL. Списъкът с табла за управление включва табла за управление на MongoDB Server, MongoDB ReplicaSet, Преглед на системата и Преглед на клъстера. ClusterControl инсталира агенти на Prometheus, конфигурира метрики и поддържа достъп до конфигурацията на експортерите на Prometheus чрез своя GUI, така че можете по-добре да управлявате конфигурацията на параметри като флагове на колектор за експортерите (Prometheus). Описахме подробно какво може да се наблюдава наскоро в статията Как да наблюдаваме MongoDB с Prometheus &ClusterControl.
Табла за управление на ClusterControl MongoDB SCUMMСигнал
Като оператор на база данни, ние трябва да бъдем информирани всеки път, когато се случи нещо критично в нашата база данни. Трите основни метода в ClusterControl за получаване на сигнал включват:
- известия по имейл
- интеграции
- съветници
Можете да настроите имейл известията на потребителско ниво. Отидете в Настройки> Известия по имейл. Където можете да избирате между критичност и тип предупреждение, което да бъде изпратено.
Следващият метод е да използвате услуги за интеграция. Това е за предаване на конкретната категория събития към друга услуга, като билети на ServiceNow, Slack, PagerDuty и т.н., за да можете да създадете разширени методи за уведомяване и интеграции във вашата организация.
Услуги за интеграция на ClusterControlПоследният е да включите усъвършенстван анализ на показателите в секцията Съветник, където можете да изградите интелигентни проверки и задействания. Пример тук може да бъде прогнозиране на използването на дисково пространство или мащабиране на клъстера чрез добавяне на възли, когато работното натоварване достигне предварително зададено ниво.
ClusterControl съветници за MongoDBАрхивиране и възстановяване
Сега, след като вашият MongoDB replicaSet е настроен и работи и имате мониторинг, е време за следващата стъпка:уверете се, че имате резервно копие на вашите данни.
ClusterControl Създаване на правила за архивиранеClusterControl предоставя интерфейс за управление на архивиране на MongoDB с поддръжка за планиране и творчески отчети. Той ви дава две опции за методи за архивиране.
- Mongodump
- Последователно архивиране на Mongodb
Mongodump изхвърля всички данни в двоичен JSON (BSON) формат на посоченото място. Mongorestore може по-късно да използва BSON файловете, за да възстанови вашата база данни. Последователното архивиране на ClusterControl MongoDB включва транзакциите от oplog, които се изпълняваха по време на правенето на архива.
ClusterControl Backup EncryptionДобрата стратегия за архивиране е критична част от всяка система за управление на база данни. ClusterControl предлага много опции за архивиране и възстановяване/възстановяване.
Управление на графика за архивиране на ClusterControlЗапазването на резервно копие на ClusterControl може да се конфигурира; можете да изберете да запазите архива си за всеки период от време или никога да не изтривате резервни копия. AES256 криптиране се използва за защита на вашите архиви срещу измамни елементи. За бързо възстановяване резервните копия могат да бъдат възстановени директно в клъстера за архивиране - ClusterControl управлява пълния процес на възстановяване от стартиране до възстановяване на клъстера, като премахва от процеса ръчни стъпки, склонни към грешки.