ако работите с докер, можете да получите този урок
https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb
Monstache е синхронизиращ демон, написан на Go, който непрекъснато индексира вашите MongoDB колекции в Elasticsearch. Monstache ви дава възможност да използвате Elasticsearch за извършване на сложни търсения и агрегиране на вашите MongoDB данни и лесно изграждане на визуализации и табла за управление на Kibana в реално време.документация за Monstache:
https://rwynn.github.io/monstache-site/
github :
https://github.com/rwynn/monstache
docker-compose.yml
version: '2.3'
networks:
test:
driver: bridge
services:
db:
image: mongo:3.0.2
expose:
- "27017"
container_name: mongodb
volumes:
- ./mongodb:/data/db
- ./mongodb_config:/data/configdb
ports:
- "27018:27017"
command: mongod --smallfiles --replSet rs0
networks:
- test
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.7
container_name: elasticsearch
volumes:
- ./elastic:/usr/share/elasticsearch/data
- ./elastic/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
command: elasticsearch -Enetwork.host=_local_,_site_ -Enetwork.publish_host=_local_
healthcheck:
test: "wget -q -O - http://localhost:9200/_cat/health"
interval: 1s
timeout: 30s
retries: 300
ulimits:
nproc: 65536
nofile:
soft: 65536
hard: 65536
memlock:
soft: -1
hard: -1
networks:
- test
monstache:
image: rwynn/monstache:rel4
expose:
- "8080"
ports:
- "8080:8080"
container_name: monstache
command: -mongo-url=mongodb://db:27017 -elasticsearch-url=http://elasticsearch:9200 -direct-read-namespace=Product_DB.Product -direct-read-split-max=2
links:
- elasticsearch
- db
depends_on:
db:
condition: service_started
elasticsearch:
condition: service_healthy
networks:
- test
replicaset.sh
#!/bin/bash
# this configuration is so important
echo "Starting replica set initialize"
until mongo --host 192.168.144.2 --eval "print(\"waited for connection\")"
do
sleep 2
done
echo "Connection finished"
echo "Creating replica set"
mongo --host 192.168.144.2 <<EOF
rs.initiate(
{
_id : 'rs0',
members: [
{ _id : 0, host : "db:27017", priority : 1 }
]
}
)
EOF
echo "replica set created"
1) изпълнете тази команда в terminal$ sysctl -w vm.max_map_count=262144
ако работите на сървър, не знам дали е необходимо
2)изпълнете компилация на terminaldocker-compose
3) стартирайте en terminal$ docker-compose up -d
не сваляйте контейнера си.
$ докер ps
копирайте Ipadres на mongo db изображение
$ docker инспектира id_of_mongo_image
копирайте IPAddress и го задайте в replicaset.sh и стартирайте replicaset.sh
$ ./replicaset.sh
на терминала трябва да видите => създаден комплект реплики
$ docker-compose down
4)изпълнете en terminal$ docker-compose up
накрая .......
Репликация в MongoDB
Набор от реплики е група от mongod
екземпляри, които поддържат същия набор от данни. Набор от реплики съдържа няколко носещи данни възли и по избор един арбитър възел. От възлите, носещи данни, един и само един член се счита за първичен възел, докато другите възли се считат за вторични възли.
основен възел
получава всички операции за запис. Набор от реплики може да има само една основна, способна да потвърждава записвания с { w:"мнозинство" }
пишете загриженост; въпреки че при някои обстоятелства друг екземпляр на mongod може временно да смята, че също е първичен.
Вижте конфигурацията на набора реплики. Използвайте rs.conf()