Поднимаем mongodb кластер на docker.

Условные обозначения :

node1 - mongo-master.server.com - first_ip
node2 - mongo-slave1.server.com - second_ip
node3 - mongo-slave2.server.com - third_ip

1. Создаем на сервере окружение :

mkdir -p /opt/mongo
cd /opt/mongo
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile
chown 999 mongodb-keyfile

2. Собираем и стартуем контейнер на node1 :

docker run --name mongo -v /opt/mongo/mongo-files/data:/data/db -v /opt/mongo/mongo-files:/opt/keyfile --hostname="mongo-master.server.com" -p 27017:27017 -d mongo:2.6.5 --smallfiles

3. Заходим в контейнер

docker exec -it mongo /bin/bash

4. Конфигурируем mongo-master :

mongo

use admin

db.createUser( {
user: "siteUserAdmin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
});

db.createUser( {
user: "siteRootAdmin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
});

exit

5. Выходим из контейнера :

exit
docker stop mongo

6. Удаляем текущий контейнер и запускаем новый с ключом :

docker run --name mongo -v /opt/mongo/mongo-files/data:/data/db -v /opt/mongo/mongo-files:/opt/keyfile --hostname="mongo-master.server.com" --add-host mongo-master.server.com: --add-host mongo-slave1.server.com: --add-host mongo-slave2.server.com: -p 27017:27017 -d mongo:2.6.5 --smallfiles --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"

7. Заходим на node1 в контейнер и включаем репликацию :

docker exec -it mongo /bin/bash

mongo

use admin

db.auth("siteRootAdmin", "password");


rs.initiate()


{
"info2" : "no configuration explicitly specified -- making one",
"me" : "node1.example.com:27017",
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}


rs.conf()


{
"_id" : "rs0",
"version" : 1,r
"members" : [
{
"_id" : 0,
"host" : "node1.example.com:27017"
}
]
}

8. Стартуем node2 , node3 mongo docker

docker run --name mongo -v /opt/mongo/mongo-files/data:/data/db -v /opt/mongo/mongo-files:/opt/keyfile --hostname="mongo-slave1.server.com" --add-host mongo-master.server.com: --add-host mongo-slave1.server.com: --add-host mongo-slave2.server.com: -p 27017:27017 -d mongo:2.6.5 --smallfiles --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"

9. После успешного старта node2, node3 заходим в mongo на мастере и подключаем слейвы :

rs.add("mongo-slave1.server.com")
rs.add("mongo-slave2.server.com")

и проверяем статус :

rs.status()

Tags: , , ,

Leave a Reply