сайт для палких паяльників

MongoDB Replica Set можно поднять на одном компе. Разумеется, это только для тестов, для тренировки и понимания как это работает. Поднимать MongoDB будем в контейнерах Docker.

Создаем сеть в Docker чтобы mongodb ноды могли видеть другдруга по имени (–name):

docker network create mynet

mongodb юзаем без авторизации. С включенной авторзацией у меня не удалось собрать Replica Set. Поднимаем три экземпляра mongodb в Docker. Две монги будут воркерами, третья в качестве арбитра.

В локальный хост они будут торчать портами 27017, 27018, 27019, а в своей (в Докеровской) сетке видеть друг друга по портам 27017. На локальном хосте папки, куда Монги будут складывать свои базы:
/var/mongo/db1
/var/mongo/db1
/var/mongo/dba

docker run --name mongodb1 --net=mynet -d -v /var/mongo/db1:/data/db -p 27017:27017 --restart unless-stopped mongo --replSet "rs0"
docker run --name mongodb2 --net=mynet -d -v /var/mongo/db2:/data/db -p 27018:27017 --restart unless-stopped mongo --replSet "rs0"
docker run --name mongodba --net=mynet -d -v /var/mongo/dba:/data/db -p 27019:27017 --restart unless-stopped mongo --replSet "rs0"

Смотрим кому какие адреса раздались:

sudo docker network inspect mynet

и прописываем в /etc/hosts :

#172.19.0.4	5e5f08e3f93d
172.19.0.4      mongodb1
172.19.0.2      mongodb2
172.19.0.3      mongodba

Теперь, собственно, собираем Replica Set

Подключаемся к первому Mongo:

sudo mongo 127.0.0.1:27017

Инициируем репликасет:

> rs.initiate()

Через минуту чекаем:

> db.isMaster()

Если уже готов, и назвался rs0:PRIMARY, идем дальше:

Добавляем в репликасет второе манго Монго:

> rs.add("mongodb2:27017")

Добавляем арбитра:

> rs.add("mongodba:27017", {arbiterOnly: true})

Смотрим статус:

> rs.status()

Done.

P.S. могут быть грабли с сетью Докера, и именами, глубоко не копал, просто дописал в /etc/hosts строку типа:

172.19.0.4 5e5f08e3f93d

(Когда Монго начнет ругаться, сообразите что это :))

Если что-то надо править в репликасете, подкючаемся к PRIMARY и рулим, рулим. При коннекте с PyMongo, драйверу указать весь список хостов, он сам занюхает кто сейчас PRIMARY.

Если нет желания поднимать репликасет у себя, идем сюда: https://www.mongodb.com/cloud, регимся и бесплатно делаем себе репликасет на трех нодах и базой 500MB (инфа на момент написания заметки). Спасибо AWS за мелкую халяву. подробности тут: https://www.mongodb.com/cloud/atlas?jmp=nav

MongoDB Compass – визуальная гляделка для MongoDB. Качать здесь:

https://www.mongodb.com/products/compass

Успехов.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

 
Translate
Архіви

© 2011-2018 Андрій Корягін, Кременчук - Київ, Україна