Установка и настройка кластера MongoDB (replication set)
В этой статье мы рассмотрим как установить и настроить кластер MongoDB (replication set), создать базы, пользователей, включить авторизацию по ключу.
Установка MongoDB делается следующим образом:
на Ubuntu:
Импортируем публичный ключ
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 |
Создаем list файл с данными репозитория
Создаем /etc/apt/sources.list.d/mongodb-org-4.0.list
1 |
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list |
Устанавливаем MongoDB
1 2 3 |
sudo apt-get update sudo apt-get install -y mongodb-org |
на CentOS:
Создаем файл с данными по репозиторию /etc/yum.repos.d/mongodb-org-4.0.repo
1 2 3 4 5 6 7 8 9 10 11 12 |
[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc |
Устанавливаем MongoDB
1 |
sudo yum install -y mongodb-org |
Для установки на Windows ставим KB2999226 и скачиваем и устанавливаем msi с MongoDB Download Center (https://www.mongodb.com/download—center/community?jmp=docs)
После установки открываем конфиг MongoDB, в /etc на Linux или в каталоге C:\Program Files\MongoDB\Server\4.0\bin\ на Windows
в конфиге настраиваем сетевые интерфейсы, добавьте ip адрес сервера
1 2 3 4 5 6 7 |
# network interfaces net: port: 27017 bindIp: localhost,192.168.1.10 |
Перезапустите сервис MongoDB
Далее создадим ключ для авторизации между нодами MongoDB, сделать это можно через openssl
1 |
openssl rand -base64 756 > <path-to-keyfile> |
Создаем супер пользователя, для этого запускаем консоль mongo и выполняем:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
db.createUser( { user: "mongo-root", pwd: "Password", roles: [ { role: "root", db: "admin" } ] } ) |
Теперь создадим пользователя с правами администратора
1 |
db.createUser({user:"mongoadmin", pwd:"password",roles:["userAdminAnyDatabase","dbAdmin"]}) |
Далее редактируем конфиг следующим образом, добавляем или редактируем секции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#включаем авторизацию по ключам security: keyFile: C:\Program Files\MongoDB\Server\4.0\bin\mongo.key authorization: enabled #указываем replication set replication: replSetName: "rs0" |
Сохраняем конфиг, копируем ключ по пути указанному в keyFile и перезапускаем сервис MongoDB
Выполнить эти действия нужно на всех серверах MongoDB
Теперь подключаемся к консоли MongoDB и авторизуемся на одной из нод:
1 |
mongo |
1 |
db.auth("mongo-root", "Password") |
Далее добавляем все ноды в кластер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
rs.initiate( { _id : "rs0", members: [ { _id: 0, host: "mongo-1.local:27017" }, { _id: 1, host: "mongo-2.local:27017" }, { _id: 2, host: "mongo-3.local:27017" } ] }) |
Изменить приоритет серверов можно следующим образом:
получаем текущий конфиг:
1 |
conf = rs.conf() |
Выставляем приоритеты:
1 2 3 4 5 |
conf['members'][0].priority = 7 conf['members'][1].priority = 5 conf['members'][2].priority = 1 |
Применяем изменения:
1 |
rs.reconfig(conf) |
Проверяем что изменения были применены:
1 |
rs.conf()['members'] |
Настройка кластера на этом завершена, перейдем к настройке БД.
Подключаемся к MongoDB
1 |
mongo |
Создаем базу
1 |
use new_database |
Добавим в нее тестовую запись
1 |
db.new_collection2.insert({ some_key: "some_value" }) |
Чтобы очистить все данные в БД выполните следующие команды:
1 2 3 |
use new_database; db.dropDatabase(); |
Посмотрим данные в бд
1 |
show collections |
Создадим пользователя для БД
1 2 3 4 5 6 7 8 9 10 11 12 13 |
db.createUser( { user: "dbadmin", pwd: "password", roles: [ { role: "readWrite", db: "new_database" } ] } ) |
Посмотреть список пользователей можно командой:
1 |
db.getUsers() |
Посмотреть список созданных БД можно командой
1 |
show dbs |
Для импорта/ экспорта БД используйте следующие команды:
1 |
mongorestore --archive=test.20150715.archive --db test |
Для экспорта:
1 |
mongodump --archive=test.20150715.archive --db test |
Если нужно использовать логин / пароль или подключаться к внешнему серверу добавьте параметры:
1 |
--host mongodb1.example.net --port 37017 --username user --password "pass" |
На этом основная настройка завершена.
Ну и напоследок, для повышения уровня безопасности MongoDB, не выставляйте ее наружу, тщательно настраивайте правила на ваших firewall, в идеале чтобы к кластеру могли подключаться только клиенты и сами ноды кластера.
Добавить комментарий