hvis du arbejder med docker kan du få denne tutorial
https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb
Monstache er en synkroniseringsdæmon skrevet i Go, der løbende indekserer dine MongoDB-samlinger til Elasticsearch. Monstache giver dig mulighed for at bruge Elasticsearch til at lave komplekse søgninger og sammenlægninger af dine MongoDB-data og nemt bygge realtime Kibana-visualiseringer og dashboards.dokumentation til 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) kør denne kommando en terminal$ sysctl -w vm.max_map_count=262144
hvis du arbejder på en server ved jeg ikke om det er nødvendigt
2)kør en terminaldocker-compose build
3) kør en terminal$ docker-compose up -d
ikke ned din container.
$ docker ps
kopier mongo db-billedets IP-adresse
$ docker inspicer id_of_mongo_image
kopier IP-adressen og indstil den i replicaset.sh og kør replicaset.sh
$ ./replicaset.sh
på terminal skal du se => replikasæt oprettet
$ docker-compose down
4)kør en terminal$ docker-compose up
endelig .......
Replikering i MongoDB
Et replikasæt er en gruppe af mongoder
instanser, der opretholder det samme datasæt. Et replikasæt indeholder flere databærende noder og eventuelt en arbiter-knude. Af de databærende noder anses kun ét medlem for at være den primære node, mens de andre noder anses for at være sekundære noder.
primær node
modtager alle skriveoperationer. Et replikasæt kan kun have én primær, der er i stand til at bekræfte skrivninger med { w:"majoritet" }
skrive bekymring; selvom en anden mongod-instans under nogle omstændigheder forbigående tror, at den også er primær.
Se konfigurationen af replikasættet. Brug rs.conf()