Ich habe zwei Server mit Replikatsatzes Config erstellt Name rs0 in Docker-compose.yml Datei als sudo eingesetzt Docker Stapel deploy --with-Registry-Auth - komponieren-Datei docker-compose.yml Test.Initiieren MongoDB Replik in Docker Schwarm gesetzt
version: "3.3"
services:
cfg1-r1:
image: mongo:3.2
deploy:
placement:
constraints: [node.hostname == ram-ThinkPad-E470]
restart_policy:
condition: on-failure
volumes:
- /opt/mongoshard/tmp:/var/lib/mongodb
- /opt/mongoshard/mongod.conf:/etc/mongod.conf
networks:
- mongoshard
command: ["mongod", "--configsvr", "--replSet", "rs0", "--dbpath", "/var/lib/mongodb", "--port", "27017"]
cfg2-r1:
image: mongo:3.2
deploy:
placement:
constraints: [node.hostname == prasanna-ThinkPad-E470]
restart_policy:
condition: on-failure
volumes:
- /opt/mongoshard/tmp:/var/lib/mongodb
- /opt/mongoshard/mongod.conf:/etc/mongod.conf
networks:
- mongoshard
command: ["mongod", "--configsvr", "--replSet", "rs0", "--dbpath", "/var/lib/mongodb", "--port", "27017"]
networks:
mongoshard:
Inhalt in mongod.conf Datei
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
Wenn ich versuche, mit Service-Namen zu initiieren als
sudo Docker exec $ (sudo Docker ps -qf Label-it = com.docker.swarm.service.name = test_cfg1-r1) mongo --eval 'rs.initiate ({_id: "rs0", Mitglieder: [{_id: 1, host: "cfg1-r1: 27017"}, { _id: 2, Host: "cfg2-r1: 27017"}], Einstellungen: {getLastErrorDefaults: {w: "Mehrheit", wtimeout: 30000}}) '
Bearbeiten Ich habe vergessen, während der Initialisierung cfg2-r1 zu erwähnen. Jetzt habe ich es hinzugefügt.
Es Fehler
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
{
"ok" : 0,
"errmsg" : "No host described in new configuration 1 for replica set rs0 maps to this node",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig"
}
EDIT geben: ich glaube, das Problem CFG1-r1 und CFG2-r2-Dienste sind nicht in demselben Netzwerk ist. Wenn ich eine Stack-Datei bereitstelle, wird ein Netzwerk namens mongo_mongoshard (overlay) erstellt und wenn ich es inspiziere, zeigt es nur cfg1-r1 als Container in seiner Container-Liste an.
Vielen Dank Mathieu Lescaudron. –