Почему запуск одиночного экземпляра MongoDB в качестве набора реплик не рекомендуется в производственной среде? - PullRequest
1 голос
/ 24 февраля 2020

После обсуждения в комментариях на этот ответ , @kevinadi рекомендовал мне открыть новые вопросы, связанные с его комментарием:

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

Многие люди запускают набор реплик для индивидуальных экземпляров MongoDB и получают четкий ответ о ПОЧЕМУ это не так. Рекомендуется, это интересно для дальнейшего использования.

Я надеюсь, что @kevinadi ответит на него, предоставив аргументы с точки зрения памяти, процессора, производительности и всех последствий и причин, по которым не рекомендуется запускать набор реплик для Экземпляр MongoDB.

1 Ответ

1 голос
/ 25 февраля 2020

Основная функция набора реплик заключается в обеспечении избыточности данных и высокой доступности для вашего развертывания MongoDB. То есть, если основной узел в наборе реплик по какой-либо причине вышел из строя, вторичный сервер сразу же заменит новый первичный (в среднем в течение ~ 10 секунд). См. Репликация для получения дополнительной информации об этой топике c.

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

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

Это другая философия по сравнению с монолитной c базой данных. сервер, где есть только один настоящий большой сервер. Несмотря на то, что в развертывании c есть определенные достоинства (и это опять другое обсуждение :)), MongoDB задумывался как отказоустойчивая распределенная база данных. Непосредственный недостаток одного сервера состоит в том, что сервер должен постоянно работать на 100%, иначе приложение будет повреждено. Набор реплик был спроектирован таким образом, чтобы ваше приложение могло работать без перебоев на 100%, не оказывая давления на отдельные серверы, которые требуют 100% безотказной работы.

В качестве бонуса, набор реплик может иметь возможность обеспечить масштабируемость чтения, установив драйвер для чтения из вторичных серверов (запись должна всегда go в первичную). Обратите внимание, что при выполнении вторичных операций чтения следует соблюдать осторожность, поскольку это может помешать аспекту высокой доступности в случае злоупотребления.

Таким образом, набор реплик может обеспечить:

  • Высокая доступность и отказоустойчивость
  • Нет обслуживания простоя
  • Избыточность данных для масштабирования чтения

без необходимости обеспечения надежности оборудования на 100%. Вот почему набор реплик настоятельно рекомендуется при развертывании prod.

Более подробные сведения о развертывании набора реплик см. В Архитектура развертывания набора реплик .

...