si vous travaillez avec docker, vous pouvez obtenir ce tutoriel
https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb
Monstache est un démon de synchronisation écrit en Go qui indexe en continu vos collections MongoDB dans Elasticsearch. Monstache vous donne la possibilité d'utiliser Elasticsearch pour effectuer des recherches complexes et des agrégations de vos données MongoDB et créer facilement des visualisations et des tableaux de bord Kibana en temps réel.documentation pour 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) exécutez cette commande en terminal$ sysctl -w vm.max_map_count=262144
si vous travaillez sur un serveur je ne sais pas si c'est nécessaire
2) exécuter la construction terminaldocker-compose
3) exécutez en terminal$ docker-compose up -d
ne videz pas votre conteneur.
$ docker ps
copier l'adresse IP de mongo db image
$ docker inspecte id_of_mongo_image
copiez l'adresse IP et définissez-la dans replicaset.sh et exécutez replicaset.sh
$ ./plicaset.sh
sur le terminal, vous devriez voir => jeu de répliques créé
$ docker-composer vers le bas
4) exécuter en terminal$ docker-compose up
enfin .......
Réplication dans MongoDB
Un jeu de répliques est un groupe de mongod
instances qui maintiennent le même ensemble de données. Un jeu de répliques contient plusieurs nœuds porteurs de données et éventuellement un nœud arbitre. Parmi les nœuds porteurs de données, un et un seul membre est considéré comme le nœud principal, tandis que les autres nœuds sont considérés comme des nœuds secondaires.
Le nœud principal
reçoit toutes les opérations d'écriture. Un jeu de répliques ne peut avoir qu'un seul primaire capable de confirmer les écritures avec { w :"majorité" }
écrire préoccupation; bien que dans certaines circonstances, une autre instance de mongod puisse provisoirement croire qu'elle est également principale.
Affichez la configuration du jeu de réplicas.Utilisez rs.conf()