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

Как да разположите MongoDB за висока наличност

Въведение

MongoDB има страхотна поддръжка за висока наличност чрез ReplicaSets. Въпреки това, разполагането на ReplicaSet не е достатъчно за готова за производство система. Последното изисква малко планиране. Разгръщането е само началната стъпка, след това трябва да въоръжим оперативните екипи с наблюдение, предупреждение, сигурност, откриване на аномалии или повреди, автоматично възстановяване/отказ при отказ, управление на архивиране и други инструменти, за да поддържаме средата работеща.

Предварителни условия

Преди да можете да започнете с внедряването на MongoDB с ClusterControl, е необходима известна подготовка. Поддържаните платформи са RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS и Debian 7.x/8.x Минималните изисквания за ресурсите на ОС са 2GB RAM, 2CPU и 20GB дисково пространство, работещи на x86 архитектура. Самият ClusterControl може да работи на обикновени виртуални машини или barebone хостове, работещи локално, зад защитна стена или на облачни виртуални машини.

Освен това ClusterControl изисква портове, използвани от следните услуги, да бъдат отворени/разрешени:
ICMP (ехо отговор/заявка)
SSH (по подразбиране е 22)
HTTP (по подразбиране е 80)
HTTPS (по подразбиране е 443)
MySQL (по подразбиране е 3306) (вътрешна база данни)
CMON RPC (по подразбиране е 9500)
CMON RPC TLS (по подразбиране е 9501)
CMON събития (по подразбиране е 9510)
CMON SSH (по подразбиране е 9511)
CMON Cloud (по подразбиране е 9518)

Порт за поточно предаване за архивиране чрез netcat (по подразбиране е 9999)

Най-лесният и удобен начин за инсталиране на ClusterControl е да използвате инсталационния скрипт, предоставен от Severalnines. Просто изтеглете скрипта и го изпълнете като root потребител или потребител с sudo root разрешение. Ако имате нужда от по-ръчен подход, например ако вашите сървъри са изцяло без достъп до интернет, можете да следвате инструкциите, предоставени в документацията на ClusterControl.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Следвайте съветника за инсталиране, където ще бъдете напътствани с настройката на вътрешен сървър на база данни ClusterControl и неговите идентификационни данни, паролата cmon за използване на ClusterControl и т.н. Трябва да получите следния ред, след като инсталацията приключи:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Следващата стъпка е да генерираме SSH ключ, който ще използваме, за да настроим SSH без парола по-късно. Ако имате двойка ключове, която искате да използвате, можете да пропуснете създаването на нов.

Можете да използвате всеки потребител в системата, но той трябва да има способността да извършва операции на суперпотребител (sudoer). В този пример избрахме root потребител:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Настройте SSH без парола за всички възли, които искате да наблюдавате/управлявате чрез ClusterControl. В този случай ще настроим това на всички възли в стека (включително самия възел ClusterControl). На възела ClusterControl изпълнете следните команди, за да копирате ssh ключове и посочете root паролата, когато бъдете подканени:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

След това можете да проверите дали работи, като изпълните следната команда на възел ClusterControl:

$ ssh [email protected] "ls /root"

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

https://<your_vm_name>/clustercontrol/#

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

ClusterControl Разгръщане и импортиране на съществуващ клъстер

Конфигуриране на хранилища

Преди да започнем да внедряваме, нека да разгледаме системата за управление на пакети. Процесът на внедряване на ClusterControl поддържа целия процес на инсталиране на клъстер. Това включва корекции на ОС и изтегляне и инсталиране на пакет. Ако възлите на вашата база данни имат ограничен достъп до интернет и не можете да изтегляте пакети директно от възела, можете да създадете хранилище на пакети директно на хоста на ClusterControl.

хранилище на пакети ClusterControl

Има три начина за поддържане на пакети MongoDB в ClusterControl.

Използвайте хранилища на доставчици

Инсталирайте софтуера, като настроите и използвате предпочитаното хранилище на софтуера на доставчика на базата данни. ClusterControl ще инсталира най-новата версия на това, което се съхранява в хранилището на MongoDB.

Не настройвайте хранилища на доставчици

Инсталирайте софтуера, като използвате вече съществуващото софтуерно хранилище, което вече е настроено в операционната система. Потребителят трябва да настрои ръчно софтуерното хранилище на всеки възел на базата данни и ClusterControl ще използва това хранилище за внедряване на пакети. Това е добре, ако възлите на базата данни работят без интернет връзки и вашата компания има външна пакетна система с MongoDB пакети.

Използвайте огледални хранилища (Създаване на ново хранилище)

Създайте и огледайте хранилището на текущия доставчик и след това разгръщайте с помощта на локалното огледално хранилище. Той също така ви позволява да „замразите“ последните версии на софтуерните пакети, използвани за предоставяне на клъстер от база данни за конкретен доставчик (т.е. да използвате само пакети на Percona).

ClusterControl автоматизира създаването на вътрешно хранилище на пакети

Разгръщане на ReplicaSet

ClusterControl поддържа MongoDB/Percona Server за MongoDB 3.x ReplicaSet. За да започнете с внедряването на новия клъстер, отидете на опцията за разгръщане в горния десен ъгъл. Когато инсталирате възлите на базата данни, винаги използвайте чисти и минимални VM. Съществуващите зависимости на пакета могат да бъдат премахнати, ако е необходимо. Нови пакети ще бъдат инсталирани и съществуващите пакети могат да бъдат премахнати, когато се осигури възела с необходимия софтуер.

Първата стъпка от процеса на внедряване е да предоставите ssh идентификационни данни, подходящи за хостовете, на които разгръщате своя клъстер. Тъй като ClusterControl използва ssh без парола за свързване и конфигуриране на вашите хостове, е необходим ssh ключ.

ClusterControl разгръща съветника за клъстери на MongoDB

Препоръчително е да използвате непривилегирован потребителски акаунт, за да влезете в хостовете, така че може да бъде предоставена sudo парола за улесняване на административните задачи. Ако потребителският акаунт не подканва за sudo парола, това не е необходимо. Също така имате възможност да деактивирате iptables и AppArmor или SELinux на хоста, за да избегнете проблема с първоначалното внедряване.

На следващия екран можете да изберете да инсталирате MongoDB двоични файлове от MongoDB Inc или от Percona. Тук също трябва да посочите своя административен потребителски акаунт и парола на MongoDB, тъй като защитата на ниво потребител е задължителна.

ClusterControl разгръща MongoDB съветник, ReplicaSet

На този екран можете също да видите кой шаблон за конфигурация се използва. ClusterControl използва шаблони на конфигурационни файлове, за да осигури повторяеми внедрявания. Шаблоните се съхраняват на хоста на ClusterControl и могат да бъдат редактирани директно с помощта на командния ред или чрез потребителския интерфейс на ClusterControl. Можете също да изберете да използвате хранилищата на доставчици, ако желаете, или да изберете свое собствено хранилище. Освен това можете автоматично да създадете ново хранилище на хоста на ClusterControl. Това позволява да се замрази версията на MongoDB, която ClusterControl ще разгърне в текущата версия. След като извършите подходящата конфигурация тук, щракнете върху Разгръщане, за да продължите.

Внедряване на разделяне

ClusterControl може също да разгръща разчленени клъстери. Поддържат се два метода за това. Първо, можете да конвертирате съществуващ MongoDB ReplicaSet в раздробен клъстер, както е показано по-долу.

ClusterControl Разгръщане на фрагменти на MongoDB

Когато щракнете върху „Convert to Shard“, ще бъдете подканени да добавите поне един Config сървър (за производствени среди трябва да добавите три) и рутер, известен също като процес „mongos“. Последният етап е да изберете вашите шаблони за конфигурация на MongoDB за конфигурационен сървър и рутер, както и вашата директория с данни. Накрая щракнете върху разгръщане. Когато приключи, той ще се покаже във вашия изглед на клъстери от бази данни. Той ще покаже здравето на вашия фрагмент вместо отделни екземпляри. Възможно е също да добавите допълнителни части, ако е необходимо.

Преобразуване в Shard

Ако случайно срещнете проблеми с мащабирането, можете да мащабирате този ReplicaSet, като добавите още вторични елементи, или го намалите чрез раздробяване. Можете да конвертирате съществуващ ReplicaSet в раздробен клъстер, но това е дълъг процес, при който лесно можете да направите грешки. В ClusterControl ние автоматизирахме този процес, при който автоматично добавяме конфигурационните сървъри, маршрутизаторите за сегменти и активираме разделянето.

За да конвертирате ReplicaSet в разделен клъстер, можете просто да го задействате чрез падащото меню за действия:

ClusterControl Преобразуване в шард

Правила за планиране на архивиране

Важно е да запазите архива на вашата база данни и вашата база данни да има добър и лесен процес за архивиране. ClusterControl има поддръжка за напълно последователно архивиране и възстановяване на вашия комплект реплики на MongoDB или разчленен клъстер.

Архивирането може да се прави ръчно или да се планира. Поддържа се централизирането на архивирането, като архивите се съхраняват или във файловата система на контролера, включително монтирани в мрежа директории или качени в предварително конфигуриран доставчик на облак - в момента поддържаните доставчици са Google Cloud Platform, Amazon Web Services и Microsoft Azure. Това ви позволява да се възползвате изцяло от разширената функционалност за управление на жизнения цикъл, предоставена от Amazon и Google за такива функции като персонализирани графици за съхранение, дългосрочно архивиране и криптиране в покой, наред с други.

Запазването на резервно копие може да се конфигурира; можете да изберете да запазите архива си за всеки период от време или никога да не изтривате резервни копия. AES256 криптиране се използва за защита на вашите архиви срещу измамни елементи.

За бързо възстановяване резервните копия могат да бъдат възстановени директно в клъстера за архивиране - ClusterControl управлява пълния процес на възстановяване от стартиране до възстановяване на клъстера, премахвайки от процеса ръчни стъпки, склонни към грешки.

Активиране на оперативните отчети

С ClusterControl можете да планирате отчети за различни среди като „Ежедневен системен отчет“, „Доклад за надстройка на пакета“, „Доклад за промяна на схемата“, както и „Архивни копия“ и „Наличност“. Тези отчети ще ви помогнат да поддържате вашата среда сигурна и работеща. Ще видите и препоръки как да коригирате пропуските. Отчетите в HTML формат могат да се изпращат по имейл до SysOps, DevOps или дори до мениджъри, които биха искали да получават редовни актуализации на състоянието за състоянието на дадена система.

Съветници за ефективност

Съветниците предоставят конкретни съвети как да се справят с проблеми в области като производителност, сигурност, управление на регистрационни файлове, конфигурация, пространство за съхранение и други. ClusterControl идва със списък с предварително дефинирани съветници, които са предназначени да проследяват състоянието на различни показатели и състоянието на вашите бази данни. Когато е необходимо, се създава предупреждение. Те могат да бъдат разширени с ръчни скриптове. За повече информация, моля, следвайте нашия скорошен блог „Как да автоматизирате анализа на натоварването на базата данни със съветници за ефективност на ClusterControl“.

Сред различни съветници за производителност на операционната система, можете да намерите по-долу, свързани с MongoDB.

MongoDB съветници за споделяне
използвани връзки
проверка на репликация
прозорец за репликация

Внедряване в облака

Започвайки от версия 1.6, ClusterControl ви позволява да създавате MongoDB 3.4 ReplicaSets в облака. Поддържаните облачни платформи са Amazon AWS, Google Cloud и Microsoft Azure.

Помощникът ще ви преведе през създаването на VM машината и настройките на MongoDB, всичко това на едно място.

ClusterControl разгръща MongoDB ReplicaSet в облак

Процесът ви позволява да изберете параметри на ОС, включително настройка на мрежата. Няма нужда да копирате SSH ключове, те ще бъдат добавени автоматично. След като работата приключи, ще видите своя клъстер в главното табло. Отсега нататък можете да управлявате своя MongoDB клъстер като всеки друг в ClusterControl.

ClusterControl разгръща MongoDb RelicaSet в облак, настройки на мрежата за VM

Съвети за сигурност

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

Промяна на портовете по подразбиране - по подразбиране MongoDB ще се свързва със стандартни портове:27017 за MongoDB ReplicaSets или Shard Routers, 27018 за фрагменти и 27019 за Config сървъри. Използването на стандартни портове не се препоръчва, тъй като опростява възможността за хакерска атака.

Активиране на удостоверяването - без удостоверяване, потребителите могат да влизат без парола. Активирайте удостоверяването във всичките ви среди (разработка, сертифициране и производство).

security:
    Authentication: on

Използвайте силни пароли - ако е необходимо, използвайте генератор на пароли за генериране на сложни пароли.

Добавяне на ключов файл за репликация - с активиран ключов файл, удостоверяването на репликационния поток ще бъде криптирано.

Шифроване на вашите резервни копия - ClusterControl ви позволява да шифровате вашите архивни копия.

За допълнително четене имаме блог как да защитим MongoDB.

Активиране на автоматичното възстановяване на клъстер

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

ClusterControl може да работи за вас като разширен 24/7 член на екипа на DBA. Тук има две основни функции. Автоматично възстановяване на възел и автоматично възстановяване на клъстер.

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

Опцията за възстановяване на клъстера е още по-усъвършенствана. Той ще извърши превключване, ако е необходимо.

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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ и оператор на конвейер за агрегиране

  2. Съхранение и извличане на JavaScript обекти в/от MongoDB

  3. Как ефективно да изтриете документи чрез заявка в mongo?

  4. MongoDB - вземете документи с максимум атрибут за група в колекция

  5. Mongo преобразува всички числови полета, които се съхраняват като низ