Реплика Bitnami MongoDB установлена ​​на Google Compute Engine - PullRequest
1 голос
/ 14 июля 2020

У меня есть три оптимизированные для контейнеров виртуальные машины , работающие на Google Compute Engine (GCE), каждая из которых Bitnami MongoDB Docker Контейнер , одна должна быть основным экземпляром Mon go DB. и два должны быть вторичными.

При создании виртуальных машин я указал в качестве образа контейнера "bitnami / mongodb: latest" и установил переменные среды в соответствии с документацией bitnami с использованием gce-container-declaration (также возможно через пользовательский интерфейс в разделе «Расширенные параметры контейнера»)

Я могу подключиться к основному mongodb с помощью пароля, определенного через MONGODB_ROOT_PASSWORD, а также другие виртуальные машины работают и слушают на их 27017 портах. Виртуальные машины также могут связываться друг с другом, поэтому правила VP C и брандмауэра подходят для Port 27017, 22 and 80 INGRESS / EGRESS.

Но когда я хочу получить статус набора реплик rs.status() на основном сервере, я всегда получить ошибку "errmsg" : "no replset config has been received". Таким образом, узлы не создают набор реплик ... С Docker -Compose это работает из коробки, и изображение Bitnami также должно автоматически запускать набор реплик, не так ли?

Я пробовал много вещей, включая использование MONGODB_ADVERTISED_HOSTNAME с именами хостов custom GCE VM, но ничего не работает, и я не знаю, как найти проблему.

введите описание изображения здесь

Первичный узел - окружение контейнера. Варианты:

MONGODB_ROOT_PASSWORD = 'password123'
MONGODB_REPLICA_SET_NAME = 'rep'
MONGODB_REPLICA_SET_MODE = 'primary'
MONGODB_REPLICA_SET_KEY = '321abc123'

Secondary1 Node - Container Env. Варианты:

MONGODB_PRIMARY_ROOT_PASSWORD = 'password123'
MONGODB_REPLICA_SET_NAME = 'rep'
MONGODB_PRIMARY_HOST = '${VPC_LOCAL_IP_PRIMARY_NODE}'
MONGODB_PRIMARY_PORT_NUMBER = '27017'
MONGODB_REPLICA_SET_MODE = 'secondary'
MONGODB_REPLICA_SET_KEY = '321abc123'

Узел Secondary2 - Контейнер Env. Варс:

MONGODB_PRIMARY_ROOT_PASSWORD = 'password123'
MONGODB_REPLICA_SET_NAME = 'rep'
MONGODB_PRIMARY_HOST = '${VPC_LOCAL_IP_PRIMARY_NODE}'
MONGODB_PRIMARY_PORT_NUMBER = '27017'
MONGODB_REPLICA_SET_MODE = 'secondary'
MONGODB_REPLICA_SET_KEY = '321abc123'

1 Ответ

0 голосов
/ 22 июля 2020

Это вообще-то странная ошибка. Я сам попытался запустить экземпляр и не смог столкнуться с какой-либо проблемой.

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

1 - Создайте новый экземпляр виртуальной машины в GCP: назначьте ему имя (mongodb-01 в моем случае) и свойства, используя пользовательский интерфейс, как вы заявили.

Включение развертывания контейнера виртуальной машины через UI

Указание переменных среды через UI

2 - Создайте второй экземпляр ВМ в GCP: присвойте ему имя (mongodb -02 в моем случае) и действуйте так же, как в предыдущем примере. Не забудьте использовать частный адрес, присвоенный mongodb-01, при указании значения для MONGODB_PRIMARY_HOST.

3 - Подключитесь к mongodb-01 через S SH: вы должны иметь возможность перечислять запущенные контейнеры и успешно выполнять команды:

$ docker exec -it klt-mongodb-01-xyz mongo -u root -p
$ rep:PRIMARY> rs.status()
{
        "set" : "rep",
        "date" : ISODate("2020-07-22T13:40:15.172Z"),
        ...
        "members" : [
                {
                        "_id" : 0,
                        "name" : "10.XXX.0.29:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        ...
                },
                {
                        "_id" : 1,
                        "name" : "10.XXX.0.34:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        ...
                 }

ПРИМЕЧАНИЕ: вы также можете использовать docker logs <container-name> для дальнейшего расследования, если есть какие-либо проблемы под капотом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...