se lavori con docker puoi ottenere questo tutorial
https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb
Monstache è un demone di sincronizzazione scritto in Go che indicizza continuamente le tue raccolte MongoDB in Elasticsearch. Monstache ti dà la possibilità di utilizzare Elasticsearch per eseguire ricerche complesse e aggregazioni dei tuoi dati MongoDB e creare facilmente visualizzazioni e dashboard Kibana in tempo reale.documentazione per 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) esegui questo comando sul terminale$ sysctl -w vm.max_map_count=262144
se lavori su un server non so se è necessario
2) esegui su terminaldocker-compose build
3) esegui su terminal$ docker-compose up -d
non buttare giù il tuo contenitore.
$ docker ps
copia l'immagine Ipadress di mongo db
$ docker ispeziona id_of_mongo_image
copia l'indirizzo IP e impostalo in replicaset.sh ed esegui replicaset.sh
$ ./replicaset.sh
sul terminale dovresti vedere => set di repliche creato
$ docker-componi verso il basso
4)esegui su terminale$ docker-componi
finalmente .......
Replica in MongoDB
Un set di repliche è un gruppo di mongod
istanze che mantengono lo stesso set di dati. Un set di repliche contiene diversi nodi portanti dati e facoltativamente un nodo arbitro. Dei nodi portanti dati, uno e un solo membro è considerato il nodo principale, mentre gli altri nodi sono considerati nodi secondari.
Il nodo principale
riceve tutte le operazioni di scrittura. Un set di repliche può avere solo una primaria in grado di confermare le scritture con { w:"maggioranza" }
scrivere preoccupazione; sebbene in alcune circostanze, un'altra istanza mongod possa temporaneamente ritenersi primaria.
Visualizza la configurazione del set di repliche.Usa rs.conf()