Назад | Перейти на главную страницу

Шардинг MongoDB: mongos и серверы конфигурации вместе?

Мы хотим создать осколок MongoDB (версия 2.4). Официальная документация рекомендует иметь 3 сервера конфигурации.

Однако политика нашей компании не позволяет нам получить для этой цели 3 дополнительных сервера. Поскольку у нас уже есть 3 сервера приложений (1 веб-узел, 2 узла процессов), мы рассматриваем возможность размещения серверов конфигурации на тех же серверах приложений с mongos. Доступность для нас не критична.

Что вы думаете об этой конфигурации? Можем ли мы столкнуться с какой-то проблемой или это не рекомендуется по какой-то причине?

Термин «сервер», к сожалению, в этом контексте перегружен: он может относиться либо к процессу демона сервера конфигурации, либо к физическому / виртуальному серверу.

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

Серверы конфигурации обычно достаточно легкие с точки зрения использования хранилища и ЦП / памяти, поскольку метаданные для сегментированного кластера значительно меньше, чем фактические данные кластера. Если вы решите разместить серверы конфигурации, mongos будет гораздо лучшим соседом, чем несущий данные mongod серверы шардов.

Некоторые ключевые моменты при размещении компонентов сегментированного кластера включают:

  • Устойчивость: отказ одного сервера / экземпляра теперь может привести к недоступности нескольких компонентов.

  • Использование ресурсов: несколько компонентов будут конкурировать за одни и те же ресурсы (RAM, CPU, I / O, ...).

  • Будущее масштабирование: вам следует использовать CNAME для серверов конфигурации, чтобы их можно было в будущем перемещать на отдельные хосты без простоев.

Вы также обнаружите, что первый сервер конфигурации, указанный в вашем mongos --configdb string получит больший процент сетевого трафика, чем два других сервера конфигурации. Это может повлиять на то, размещаете ли вы первый сервер конфигурации с вашим веб-узлом или узлом обработки; вы, вероятно, захотите выбрать тот, у которого в настоящее время более доступная пропускная способность сети.