pokud pracujete s dockerem, můžete získat tento tutoriál
https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb
Monstache je synchronizační démon napsaný v Go, který nepřetržitě indexuje vaše sbírky MongoDB do Elasticsearch. Monstache vám dává možnost používat Elasticsearch ke komplexnímu vyhledávání a agregaci vašich dat MongoDB a snadno vytvářet vizualizace Kibana a dashboardy v reálném čase.documentation pro 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
replikaset.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) spusťte tento příkaz en terminal$ sysctl -w vm.max_map_count=262144
pokud pracujete na serveru, nevím, zda je to nutné
2)spusťte sestavení sestavení terminaldocker-compose
3) spusťte en terminal$ docker-compose up -d
nespouštějte svůj kontejner.
$ docker ps
zkopírujte IPadresu mongo db image
$ docker zkontrolovat id_of_mongo_image
zkopírujte IPAddress a nastavte ji v replicaset.sh a spusťte replicaset.sh
$ ./replicaset.sh
na terminálu byste měli vidět => vytvořená sada replik
$ docker-compose down
4)spusťte na terminálu$ docker-compose up
konečně .......
Replikace v MongoDB
Sada replik je skupina mongod
instance, které udržují stejnou datovou sadu. Sada replik obsahuje několik datových uzlů a volitelně jeden rozhodovací uzel. Z uzlů nesoucích data je jeden a pouze jeden člen považován za primární uzel, zatímco ostatní uzly jsou považovány za sekundární uzly.
primární uzel
přijímá všechny operace zápisu. Sada replik může mít pouze jednu primární možnost potvrzovat zápis pomocí { w:"většina" }
napsat znepokojení; i když za určitých okolností se může jiná instance mongoda přechodně domnívat, že je také primární.
Zobrazte konfiguraci sady replik. Použijte rs.conf()