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