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

Как установить разделенный кластер MongoDB на CentOS 7


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

  1. Разделение и репликация
  2. Три компонента сегментирования
  3. Шаг 1. Отключите SELinux и настройте хосты
  4. Шаг 2. Установите MongoDB на все экземпляры
  5. Шаг 3. Создание набора реплик сервера конфигурации
  6. Шаг 4. Создание наборов реплик сегментов
  7. Шаг 5. Настройка mongos/маршрутизатора запросов
  8. Шаг 6. Добавьте сегменты в mongos/Query Router
  9. Шаг 7. Тестирование
  10. Справочник

Разделение — это процесс MongoDB для хранения набора данных на разных машинах. Он позволяет выполнять горизонтальное масштабирование данных, разбивать данные по независимым экземплярам, и это могут быть наборы реплик. Разделение набора данных на шардинге использует ключ сегмента. Разделение позволяет вам добавлять больше машин в зависимости от роста данных в вашем стеке.

Шардинг и репликация

Давайте сделаем это просто. Если у вас есть музыкальные коллекции, Sharding сохранит их в другой папке. С другой стороны, репликация — это просто синхронизация ваших музыкальных коллекций с другими экземплярами.

Три компонента шардинга

Осколок — используется для хранения всех данных, а в производственной среде каждый осколок представляет собой наборы реплик. Обеспечивает высокую доступность и согласованность данных.

Сервер конфигурации — используется для хранения метаданных кластера, содержит сопоставление набора данных кластера и сегментов. Эти данные используются сервером mongos/query для выполнения операций. Рекомендуется использовать более 3 экземпляров в производстве.

Mongos/Query Router — это просто экземпляры mongo, работающие как интерфейсы приложений. Приложение будет делать запросы к экземплярам mongos, а затем mongos будет доставлять запросы, используя ключ осколка, к наборам реплик осколков.

Предпосылки

  • 2 сервера CentOS 7 в качестве наборов реплик конфигурации
      • 10.0.15.31      configsvr1
      • 10.0.15.32      configsvr2

        • 10.0.15.21      shardsvr1
        • 10.0.15.22      shardsvr2
        • 10.0.15.23      shardsvr3
        • 10.0.15.24      shardsvr4

          • 10.0.15.11       монго

          Шаг 1. Отключите SELinux и настройте хосты.

          В этом уроке мы отключим SELinux. Измените конфигурацию SELinux с принудительной на отключенную.

          Подключайтесь ко всем узлам через OpenSSH.

          ssh 

          Отключите SELinux, отредактировав файл конфигурации.

          vim /etc/sysconfig/selinux

          Измените значение SELinux на отключенное.

          SELINUX=disabled

          Сохранить и выйти.

          Затем отредактируйте файл hosts на каждом сервере.

          vim /etc/hosts

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

              10.0.15.31      configsvr1
              10.0.15.32      configsvr2
              10.0.15.11      mongos
              10.0.15.21      shardsvr1
              10.0.15.22      shardsvr2
              10.0.15.23      shardsvr3
              10.0.15.24      shardsvr4

          Сохранить и выйти.

          Теперь перезапустите все серверы:

          reboot

          Шаг 2 — Установите MongoDB на все экземпляры

          Мы будем использовать последнюю версию MongoDB (MongoDB 3.4) для всех экземпляров. Добавьте новый репозиторий MongoDB, выполнив следующие команды:

          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 3.4 из репозитория mongodb, используя приведенную ниже команду yum.

          sudo yum -y install mongodb-org

          После установки mongodb используйте команду mongo или mongod следующим образом, чтобы проверить сведения о версии.

          mongod --version

          Шаг 3. Создайте набор реплик сервера конфигурации

          В разделе предварительных условий мы уже определили сервер конфигурации с двумя машинами configsvr1 и configsvr2. И на этом этапе мы настроим его как набор реплик.

          Если на сервере запущена служба mongod, остановите ее с помощью следующей команды systemctl.

          systemctl stop mongod

          Отредактируйте конфигурацию mongodb по умолчанию mongod.conf.

          vim /etc/mongod.conf

          Измените путь к хранилищу БД на свой собственный каталог. Мы будем использовать каталог /data/db1 для первого сервера и каталог /data/db2 для второго сервера конфигурации.

          storage:
            dbPath: /data/db1

          Измените значение строки bindIP на адрес вашей внутренней сети. configsvr1 с IP-адресом 10.0.15.31, а второй сервер с 10.0.15.32.

          bindIP: 10.0.15.31

          В разделе репликации задайте имя репликации.

          replication:
            replSetName: "replconfig01"

          И в разделе сегментирования определите роль экземпляров. Мы будем использовать эти два экземпляра как configsvr.

          sharding:
            clusterRole: configsvr

          Сохранить и выйти.

          Затем мы должны создать новый каталог для данных MongoDB, а затем изменить права владения этим каталогом на пользователя mongod.

          mkdir -p /data/db1
          chown -R mongod:mongod /data/db1

          Затем запустите службу mongod с помощью следующей команды.

          mongod --config /etc/mongod.conf

          Вы можете проверить, работает ли служба mongod на порту 27017, с помощью команды netstat.

          netstat -plntu

          Configsvr1 и Configsvr2 готовы для набора реплик. Подключитесь к серверу configsvr1 и получите доступ к оболочке mongo.

          ssh 
          mongo --host configsvr1 --port 27017

          Инициируйте имя набора реплик со всеми членами configsvr, используя приведенный ниже запрос.

          rs.initiate(
            {
              _id: "replconfig01",
              configsvr: true,
              members: [
                { _id : 0, host : "configsvr1:27017" },
                { _id : 1, host : "configsvr2:27017" }
              ]
            }
          )

          Если вы получите результат { \ok\ : 1 }, это означает, что configsvr уже настроен с набором реплик.

          и вы сможете увидеть, какой узел является главным, а какой вторичным.

          rs.isMaster()
          rs.status()

          Настройка набора реплик сервера конфигурации завершена.

          Шаг 4. Создание наборов реплик осколков

          На этом этапе мы настроим 4 сервера Centos 7 в качестве сервера Shard с 2 наборами реплик.

          • 2 сервер — shardsvr1 и shardsvr2 с именем набора реплик: shardreplica01
          • Сервер 2 — shardsvr3 и shardsvr4 с именем набора реплик: shardreplica02

          Подключитесь к каждому серверу и остановите службу mongod (если служба запущена) и отредактируйте файл конфигурации MongoDB.

          systemctl stop mongod
          vim /etc/mongod.conf

          Измените хранилище по умолчанию на ваш конкретный каталог.

          storage:
            dbPath: /data/db1

          В строке bindIP измените значение на адрес вашей внутренней сети.

          bindIP: 10.0.15.21

          В разделе репликации вы можете использовать shardreplica01 для первого и второго экземпляров. И используйте shardreplica02 для третьего и четвертого сервера шардов.

          replication:
            replSetName: "shardreplica01"

          Далее определите роль сервера. Все это мы будем использовать как экземпляры shardsvr.

          sharding:
            clusterRole: shardsvr

          Сохранить и выйти.

          Теперь создайте новый каталог для данных MongoDB.

          mkdir -p /data/db1
          chown -R mongod:mongod /data/db1

          Запустите службу монгод.

          mongod --config /etc/mongod.conf

          Проверьте, работает ли MongoDB, с помощью следующей команды:

          netstat -plntu

          Вы увидите, что MongoDB работает по локальному сетевому адресу.

          Затем создайте новый набор реплик для этих двух экземпляров сегментов. Подключитесь к shardsvr1 и получите доступ к оболочке mongo.

          ssh 
          mongo --host shardsvr1 --port 27017

          Инициируйте набор реплик с именем shardreplica01, членами которого являются shardsvr1 и shardsvr2.

          rs.initiate(
            {
              _id : "shardreplica01",
              members: [
                { _id : 0, host : "shardsvr1:27017" },
                { _id : 1, host : "shardsvr2:27017" }
              ]
            }
          )

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

          Результаты shardsvr3 и shardsvr4 с именем набора реплик shardreplica02.

          Повторите этот шаг на серверах shardsvr3 и shardsvr4 с другим именем набора реплик shardreplica02.

          Теперь мы создали 2 набора реплик в качестве шарда — shardreplica01 и shardreplica02.

          Шаг 5. Настройте mongos/маршрутизатор запросов

          Query Router или mongos — это просто экземпляры, на которых работает mongos. Вы можете запустить mongos с файлом конфигурации или запустить его только с помощью командной строки.

          Войдите на сервер mongos и остановите службу MongoDB.

          ssh   
          systemctl stop mongod

          Запустите mongos с помощью команды ниже.

          mongos --configdb "replconfig01/configsvr1:27017,configsvr2:27017"

          используйте параметр --configdb для определения сервера конфигурации. Если вы работаете в производственной среде, используйте как минимум 3 сервера конфигурации.

          Результаты вы увидите ниже.

          Successfully connected to configsvr1:27017
          Successfully connected to configsvr2:27017

          экземпляры mongos запущены.

          Шаг 6 — Добавьте осколки в mongos/Query Router

          Откройте другую оболочку из шага 5, снова подключитесь к серверу mongos и получите доступ к оболочке mongo.

          ssh 
          mongo --host mongos --port 27017

          Добавьте сервер шарда с запросом sh mongodb.

          Для экземпляров shardreplica01.

          sh.addShard( "shardreplica01/shardsvr1:27017")
          sh.addShard( "shardreplica01/shardsvr2:27017")

          Для экземпляров shardreplica02.

          sh.addShard( "shardreplica02/shardsvr3:27017")
          sh.addShard( "shardreplica02/shardsvr4:27017")

          Убедитесь, что ошибки нет, и проверьте статус шарда.

          sh.status()

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

          У нас есть 2 набора реплик осколков и 1 экземпляр mongos, работающий в нашем стеке.

          Шаг 7 — Тестирование

          Теперь хорошо протестируйте сервер MongoDB, включив сегментирование, а затем добавьте документы.

          Получите доступ к оболочке mongo сервера mongos.

          ssh 
          mongo --host mongos --port 27017

          Включить сегментирование для базы данных

          Создайте новую базу данных и включите сегментирование для новой базы данных.

          use lemp
          sh.enableSharding("lemp")
          sh.status()

          Теперь посмотрите состояние базы данных — она была разделена на набор реплик shardreplica01.

          Включить шардинг для коллекций

          Далее добавляем в базу новые коллекции с поддержкой шардинга. Мы добавим новую коллекцию с именем stack с именем коллекции осколков, а затем увидим статус базы данных и коллекций.

          sh.shardCollection("lemp.stack", {"name":1})
          sh.status()

          Добавлен новый стек коллекций с именем коллекции осколков.

          Добавляйте документы в стопку коллекций.

          Теперь вставьте документы в коллекции. Когда мы добавляем документы в коллекцию в сегментированном кластере, мы должны включать ключ сегмента.

          Вы можете использовать пример ниже. Мы используем имя ключа сегмента, как мы добавили при включении сегментирования для коллекций.

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

          Документы успешно добавлены в коллекцию, как показано на следующем снимке экрана.

          Если вы хотите протестировать базу данных, вы можете подключиться к набору реплик shardreplica01 PRIMARY server и открыть оболочку mongo. Я захожу на ГЛАВНЫЙ сервер shardsvr2.

          ssh 
          mongo --host shardsvr2 --port 27017

          Проверьте базу данных, доступную в наборе реплик.

          show dbs
          use lemp
          db.stack.find()

          Вы увидите, что база данных, коллекции и документы доступны в наборе реплик.

          Разделенный кластер MongoDB на CentOS 7 успешно установлен и развернут.

          Ссылка

          • https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/