Поиск по сайту:

Репликация MongoDB на CentOS 7


На этой странице

  1. Шаг 1. Подготовьте сервер
  2. Шаг 2. Установите MongoDB на все узлы
  3. Шаг 3. Настройка Firewalld
  4. Шаг 4. Настройка набора реплик MongoDB
  5. Шаг 5. Запуск набора реплик MongoDB
  6. Шаг 6. Проверка репликации
  7. Справочник

MongoDB — это база данных корпоративного класса NoSQL, которая обеспечивает высокую производительность, высокую доступность и автоматическое масштабирование. В базе данных NoSQL вы не можете использовать SQL (язык структурированных запросов) для вставки и извлечения данных, и он не хранит данные в таблицах, таких как MySQL или Postgres. Вместо этого данные хранятся в структуре «документа» в формате JSON (в MongoDB называется BSON). MongoDB впервые была представлена в 2009 году и в настоящее время разрабатывается компанией MongoDB Inc.

В этом руководстве я покажу вам пошаговую инструкцию по созданию набора реплик в MongoDB. Мы будем использовать 3 серверных узла с установленной на них CentOS 7, а затем установим и настроим MongoDB.

Предпосылки

  • Три сервера с установленной ОС CentOS 7

            10.0.15.21      mongo1
            10.0.15.22      mongo2
            10.0.15.23      mongo3

  • Привилегии root

Шаг 1 – Подготовьте сервер

В этом руководстве я отключу SELinux для MongoDB. Нам нужно отредактировать файл конфигурации SELinux и изменить значение enforcement на disabled.

Подключитесь ко всем узлам сервера с помощью ssh.

ssh 

Отредактируйте файл hosts с помощью vim.

vim /etc/hosts

Вставьте конфигурацию хостов ниже:

10.0.15.21  mongo1
10.0.15.22  mongo2
10.0.15.23  mongo3

Сохраните файл и выйдите.

Далее мы отключим SELinux, отредактировав файл конфигурации с помощью vim.

vim /etc/sysconfig/selinux

Измените принудительное значение на отключенное.

SELINUX=disabled

Сохраните и выйдите, затем перезагрузите серверы.

reboot

Проверьте статус SELinux с помощью команды.

getenforce

Убедитесь, что в результате вы получили Disabled.

Шаг 2 — Установите MongoDB на все узлы

На этом этапе мы установим MongoDB из официального репозитория. Первый шаг — добавить новый репозиторий MongoDB 3.4 в каталог /etc/yum.repos.d/.

Запустите команду ниже, чтобы добавить репозиторий.

cat <<'EOF' >> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

EOF

Затем установите пакет mongodb-org с помощью команды yum.

sudo yum -y install mongodb-org

MongoDB был установлен на всех узлах CentOS 7.

Примечание:

Если вам нужно полное руководство по установке MongoDB, перейдите по этой ссылке.

Шаг 3 — Настройте Firewalld

На первом этапе мы уже отключили SELinux. Из соображений безопасности мы теперь включим firewalld на всех узлах и откроем только те порты, которые используются MongoDB и SSH.

Установите Firewalld с помощью команды yum.

yum -y install firewalld

Запустите firewalld и включите его запуск во время загрузки.

systemctl start firewalld
systemctl enable firewalld

Затем откройте свой порт ssh и порт MongoDB по умолчанию 27017.

firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=27017/tcp

Перезагрузите firewalld, чтобы применить изменения.

firewall-cmd --reload

Шаг 4. Настройка набора реплик MongoDB

Набор реплик — это группа процессов mongod в MongoDB, которые поддерживают одни и те же данные и информацию. Набор реплик обеспечивает высокую доступность и отказоустойчивость для производственных развертываний базы данных.

Репликация в mongodb состоит из нескольких экземпляров сервера MongoDB, на которых запущен процесс mongod, только один экземпляр работает как ОСНОВНОЙ, все остальные экземпляры являются ВТОРИЧНЫМИ. Данные записываются только на ОСНОВНОЙ экземпляр, затем наборы данных реплицируются на все ВТОРИЧНЫЕ экземпляры.

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

Отредактируйте файл конфигурации MongoDB mongod.conf с помощью vim.

vim /etc/mongod.conf

В строке 27 сетевого раздела прокомментируйте bindIP.

net:
  port: 27017
  # bindIP: 127.0.0.1

Затем раскомментируйте строку репликации 36 и задайте имя репликации myreplica01.

replication:
  replSetName: "myreplica01"

Сохраните файл и выйдите из vim.

Перезапустите MongoDB на всех узлах.

systemctl restart mongod

Теперь проверьте mongodb и убедитесь, что он работает на IP-адресе сервера, а не на локальном IP-адресе.

netstat -plntu

Шаг 5 — инициация набора реплик MongoDB

На этом шаге мы создадим набор реплик. Мы будем использовать сервер mongo1 в качестве ОСНОВНОГО узла, а mongo2 и mongo3 в качестве ВТОРИЧНЫХ узлов.

Войдите на сервер mongo1 и запустите оболочку mongo.

ssh 
mongo

Инициируйте набор реплик с сервера mongo1 с помощью приведенного ниже запроса.

rs.initiate()

Убедитесь, что значение ok равно 1.

Теперь добавьте узлы mongo2 и mongo3 в наборы реплик.

rs.add("mongo2")
rs.add("mongo3")

Вы увидите результаты ниже и убедитесь, что нет ошибки.

Затем проверьте состояние наборов реплик с помощью приведенного ниже запроса rs.

rs.status()

Другой запрос для проверки статуса:

rs.isMaster()

Шаг 6. Проверка репликации

Протестируйте репликацию набора данных с ПЕРВИЧНОГО экземпляра mongo1 на ВТОРИЧНЫЕ узлы mongo2 и mongo3.

На этом этапе мы попытаемся написать или создать новую базу данных на ОСНОВНОМ узле mongo1, а затем проверить, работает ли репликация, проверив базу данных на ВТОРИЧНЫХ узлах mongo2 и mongo3.

Войдите на сервер mongo1 и откройте оболочку mongo.

ssh 
mongo

Теперь создайте новую базу данных lemp и новую коллекцию стека для базы данных.

use lemp
db.stack.save(
{
    "desc": "LEMP Stack",
    "apps":  ["Linux", "Nginx", "MySQL", "PHP"],
})

Затем перейдите на ВТОРИЧНЫЙ узел mongo2 и откройте оболочку mongo.

ssh 
mongo

Включите чтение из ВТОРИЧНОГО узла с помощью запроса rs.slaveOk(), а затем проверьте, существует ли база данных lemp на ВТОРИЧНЫХ узлах.

rs.slaveOk()
show dbs
use lemp
show collections
db.stack.find()

Если ошибки нет, вы увидите результаты ниже:

База данных с ПЕРВИЧНОГО узла была реплицирована на ВТОРИЧНЫЕ узлы, база данных lemp из экземпляра mongo1 успешно реплицирована на экземпляры mongo2 и mongo3.

Набор реплик MongoDB успешно создан.

Ссылка

  • https://docs.mongodb.com/manual/core/replica-set-members/