jeśli pracujesz z dockerem, możesz pobrać ten samouczek
https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb
Monstache to demon synchronizacji napisany w Go, który stale indeksuje kolekcje MongoDB w Elasticsearch. Monstache daje możliwość korzystania z Elasticsearch do wykonywania złożonych wyszukiwań i agregacji danych MongoDB oraz łatwego tworzenia wizualizacji Kibana w czasie rzeczywistym i dashboards.documentation dla Monstache :
https://rwynn.github.io/monstache-site/
github :
https://github.com/rwynn/monstache
docker-compose.yml
Wersjaversion: '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
replika.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) uruchom to polecenie w terminalu$ sysctl -w vm.max_map_count=262144
jeśli pracujesz na serwerze, nie wiem czy jest to konieczne
2)uruchom kompilację terminaldocker-compose
3) uruchom en terminal$ docker-compose up -d
nie opuszczaj pojemnika.
$ doker ps
skopiuj adres IP obrazu mongo db
$ Docker sprawdź id_of_mongo_image
skopiuj adres IP i ustaw go w repliceset.sh i uruchom repliceset.sh
$ ./replicaset.sh
na terminalu, który powinieneś zobaczyć => zestaw replik utworzony
$ docker-compose down
4)uruchom w terminalu$ docker-compose up
w końcu .......
Replikacja w MongoDB
Zestaw replik to grupa mongod
instancje, które zachowują ten sam zestaw danych. Zestaw replik zawiera kilka węzłów przenoszących dane i opcjonalnie jeden węzeł arbitra. Spośród węzłów przenoszących dane jeden i tylko jeden element jest uważany za węzeł główny, podczas gdy pozostałe węzły są uważane za węzły drugorzędne.
węzeł podstawowy
odbiera wszystkie operacje zapisu. Zestaw replik może mieć tylko jedną podstawową, która może potwierdzać zapisy za pomocą { w:"większość" }
napisz troskę; chociaż w niektórych okolicznościach inna instancja mongod może przejściowo uważać się za podstawową.
Wyświetl konfigurację zestawu replik.Użyj rs.conf()