Проверьте конфигурацию установки mongodb

Я настроил mongodb для кластерной среды. Мой конфиг-сервер и маршрутизатор работают на одной машине, тогда как шардинг работает на трех разных машинах. Я хочу знать, есть ли какая-либо доступная команда, которую я могу запустить на терминале (на котором запущен configsvr и маршрутизатор), и он будет отображать все имя маршрутизатора, configserver (связанный с ним), другие защищенные базы данных (связанные с ним).

Чтобы упростить это больше.

Предположим, я запускаю mycommand / кусок кода, он отображается.

router1---> configserver1----> Shardeddb1
                         ----> Shardeddb2
                         -----> shardeddb3

Модификация, чтобы сделать его более понятным.

Мой router1 и configserver1 работают на одной машине (скажем, ip 19.0.0.123), Shardeddb1(скажем, ip 19.0.0.124),Shardeddb2(скажем, ip 19.0.0.125),Shardeddb3(скажем, ip 19.0.0.126).

Я хочу сделать Shardeddb1 в качестве основного и (Shardeddb2,Shardeddb3) в качестве дополнительного. Если я запускаю sh.status(); он показывает мне детали, но не о том, какая база данных принадлежит какой машине. Так есть ли сценарий, который может показать мне больше деталей?

sharding version: {
    "_id" : 1,
    "version" : 4,
    "minCompatibleVersion" : 4,
    "currentVersion" : 5,
    "clusterId" : ObjectId("545b632e9be3f019d6ef788f")
}
shards:
    {  "_id" : "ps1",  "host" : "ps1/19.0.0.123:27017","draining" : true }
    {  "_id" : "ps2",  "host" : "ps2/19.0.0.124:27017" }
    {  "_id" : "shard0000",  "host" : "19.0.0.125:27017" }
    {  "_id" : "shard0001",  "host" : "19.0.0.126:27017" }
databases:
    {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
    {  "_id" : "test",  "partitioned" : true,  "primary" : "shard0000" }
    {  "_id" : "demo",  "partitioned" : true,  "primary" : "shard0000" }
    {  "_id" : "db",  "partitioned" : false,  "primary" : "ps1" }
    {  "_id" : "mongotestDB",  "partitioned" : true,  "primary" : "ps1" }
            mongotestDB.logcoll
                    shard key: { "id" : 1 }
                    chunks:
                            shard0000       4
                            shard0001       9
                            ps2     7
                            ps1     5
                    too many chunks to print, use verbose if you want to force print

1 ответ

Поскольку ваша диаграмма показывает иначе:

  1. Вы можете иметь ровно 1 или 3 сервера конфигурации.
  2. Вы всегда должны иметь свой mongos экземпляры имеют точно такую ​​же строку для параметра configdb. И эта строка должна содержать все серверы конфигурации в одном порядке. В противном случае вы рискуете испортить метаданные.
  3. Все configservers и mongos должны иметь возможность подключаться ко всем узлам кластера и быть подключенными к ним.
  4. Самый простой способ получить обзор вашего кластера - это бесплатный мониторинг службы управления MongoDB.
  5. Бег mongos' и configservers на той же машине возможно - пока вы следите за нагрузкой. Если что-то становится не так, и у серверов конфигурации есть задержки в обновлении метаданных, потому что mongos потреблять все IO, вы можете ухудшить вещи. Если разбиение на фрагменты задерживается (и они, скорее всего, находятся под высокой нагрузкой), это может привести к JumboChunks, которые нужно разделить вручную и - до тех пор, пока это не будет сделано - не могут быть перенесены. Поэтому очень плохая идея - запускать экземпляры mongos на серверах конфигурации, imvho. Гораздо лучшим решением является запуск экземпляров mongos на серверах приложений, по одному на каждом.
Другие вопросы по тегам