Поднимаем 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
Недавні записи
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
- U-FOC - Векторне керування безколекторними моторами
Tags
esp8266 examples adc usart rfid eb-500 soldering lcd stm32 raspberry-pi python mongodb gps mpu-9250 sensors led hih-4000 foc ngnix wifi servo sms ethernet bldc 3d-printer bluetooth mpx4115a web pmsm options remap solar timer bme280 mpu-6050 avr docker flash bkp capture gpio uart meteo i2c usb rtc encoder programmator ssd1306 battery displays java-script barometer watchdog eeprom flask websocket pwm dht11 motor ssd1331 piezo smd brushless atmega books css git st-link dc-dc html nodemcu dma nvic rs-232 exti tim bmp280 max1674
Архіви