Para continuar, necesitará tres nodos de cómputo. Puede lanzar nodos de cómputo bajo demanda en E2E Public Cloud. Haga clic aquí para saber más .
Como parte de este clúster MongoDB de 3 nodos, un nodo será principal y los otros dos serán nodos secundarios.
El beneficio de esta configuración es que lo ayuda a superar un único punto de falla. Cuando el nodo primario deja de funcionar, los nodos secundarios actúan como primarios; por lo tanto, asegurando una alta disponibilidad.
Siga los pasos a continuación para configurar un clúster MongoDB de 3 nodos:
Actualice y actualice los 3 nodos (ubuntu 16.04):
$ sudo apt-get update $ sudo apt-get upgrade
Instalación de MongoDB:
$sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 $echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list $sudo apt-get update $sudo apt-get install -y mongodb-org=4.0.10 mongodb-org-server=4.0.10 mongodb-org-shell=4.0.10 mongodb-org-mongos=4.0.10 mongodb-org-tools=4.0.10
Configure el nombre de host y la entrada de host en los 3 nodos:
$ sudo vim /etc/hosts ````````` 172.16.1.x test-mongo-1 172.16.2.x test-mongo-2 172.16.3.x test-mongo-3 ```````` $hostname test-mongo1 $ sudo vim /etc/hostname `````` test-mongo-1 ```````
Establezca el nombre de host correspondiente en los 3 nodos
Si el servidor es de E2E Cloud, elimine 05-hostname 02-ssh_public_key del directorio /etc/one-context.d/
Genera un archivo de clave y cópialo en los otros 2 nodos:
$ sudo cd /etc/ $ sudo mkdir mongo $ cd $ sudo openssl rand -base64 756 > /etc/mongo/mongo-keyfile $ sudo cd /etc/mongo/ $ sudo chmod 400 mongo-keyfile $ sudo chown mongodb:mongodb /etc/mongo -R $ cd $ sudo rsync -avrP /etc/mongo [email protected]:/etc/ $ sudo rsync -avrP /etc/mongo [email protected]:/etc/
Agregue la sección de replicación en mongodb.conf en los 3 nodos:
replication: replSetName: mongo-cluster enableMajorityReadConcern: true
Inicie y verifique el estado de mongodb en los 3 nodos:
$ sudo service mongod start $ sudo service mongod status
Asegúrese de que mongodb se inicie en los 3 nodos.
Cambiar la dirección de enlace de MongoDB a la IP privada del servidor en los 3 nodos:
$ sudo vim /etc/mongod.conf # network interfaces net: port: 27017 bindIp: 172.16.1.x $ sudo service mongod restart
Inicie sesión en Mongodb en cualquiera de los nodos:
$ mongo -host 172.16.1.x $ config = { _id : "mongo-cluster", members : [ {_id : 0, host : "test-mongo-1:27017"}, {_id : 1, host : "test-mongo-2:27017"}, {_id : 2, host : "test-mongo-3:27017"}, ] } $ rs.initiate(config)
Nota:después de un tiempo, esta máquina (desde donde se ejecuta el comando se convertirá en la principal; puede cerrar sesión en MongoDB e iniciar sesión para verificar lo mismo)
Ahora cree la base de datos de administración y base de datos principal y el usuario para acceder a la base de datos:
$ use admin $ db.createUser({ user: "admin", pwd: "E580nOOUE6cDhQ", roles: [{ role: "root", db: "admin" }] }) $ stagedatabase $ db.createUser({ user: "stage", pwd: "4n1PdUKkyoU9wcTNW", roles: [{ role: "dbOwner", db: "maindatabase" }] })
Agregar sección de seguridad en mongod.conf en los 3 nodos:
security: keyFile: /etc/mongo/mongo-keyfile clusterAuthMode: keyFile authorization: enabled
Reiniciar y verificar el estado de mongodb en los 3 nodos:
$ sudo service mongod restart $ sudo service mongod status
Inicie sesión en Mongodb con las credenciales:
$ mongo -host 172.16.1.x admin -u admin -p'E580nOOUE6cDhQ'
Inicie sesión en Mongodb con la base de datos del otro usuario:
mongo 172.16.1.x:27017/maindatabase -u stage -p 4n1PdUKkyoU9wcTNW
Ahora la configuración está completa.