Поднимаем MongoDB Replica Set на одном хосте (для тестов) в Docker
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
Успехов.
Дивись також:
- Справочник команд по Docker. Как поднять Swarm
- MongoDB Replica Set в Docker
- Справочник команд MongoDB
- Как настроить NGNIX Loader balancer + SSL в Docker
- Технология Push notifications. Как сделать на сайте
- Пример Websocket сервера и Websocket клиента. Пример простого чата на websocket
- Как использовать Memcached в Python
- Как использовать Radis в Python
Tags
bme280 bmp280 gps mpu-6050 options stm32 ssd1331 ssd1306 eb-500 3d-printer soldering tim mpu-9250 dma watchdog piezo exti web raspberry-pi docker ngnix solar bluetooth foc html css brushless flask dc-dc capture gpio avr rs-232 mpx4115a atmega mongodb st-link barometer pwm nvic git java-script programmator dht11 hih-4000 pmsm encoder max1674 smd sensors rtc adc lcd motor timer meteo examples i2c usb flash sms rfid python esp8266 servo books bldc remap eeprom bkp battery ethernet uart usart displays led websocket nodemcu wifi
Архіви