om du arbetar med docker kan du få den här handledningen
https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb
Monstache är en synkroniseringsdemon skriven i Go som kontinuerligt indexerar dina MongoDB-samlingar till Elasticsearch. Monstache ger dig möjligheten att använda Elasticsearch för att göra komplexa sökningar och aggregering av dina MongoDB-data och enkelt bygga Kibana-visualiseringar och dashboards i realtid.dokumentation för 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 detta kommando en terminal$ sysctl -w vm.max_map_count=262144
om du arbetar på en server vet jag inte om det är nödvändigt
2)kör en terminaldocker-compose build
3) kör en terminal$ docker-compose up -d
lägg inte ner din behållare.
$ docker ps
kopiera IP-adressen till mongo db-bilden
$ docker inspektera id_of_mongo_image
kopiera IP-adressen och ställ in den i replicaset.sh och kör replicaset.sh
$ ./replicaset.sh
på terminalen bör du se => replikuppsättning skapad
$ docker-compose down
4)kör en terminal$ docker-compose up
äntligen .......
Replikering i MongoDB
En replikuppsättning är en grupp av mongod
instanser som upprätthåller samma datamängd. En replikuppsättning innehåller flera databärande noder och valfritt en arbiternod. Av de databärande noderna anses en och endast en medlem vara den primära noden, medan de andra noderna anses vara sekundära noder.
The primär nod
tar emot alla skrivoperationer. En replikuppsättning kan bara ha en primär som kan bekräfta skrivningar med { w:"majoritet" }
skriva oro; även om under vissa omständigheter kan en annan mongod-instans tillfälligt tro sig vara primär.
Visa replikuppsättningens konfiguration. Använd rs.conf()