Resumen de varios errores de inicialización del conjunto de réplicas de MongoDB encontrados
Cuando estaba construyendo un clúster de MongoDB, encontré varios problemas pequeños que provocaron que fallara la inicialización del conjunto de réplicas. Todos estos son obstáculos que los principiantes han superado antes. .
1. Error de inicialización del conjunto de réplicas de MongoDB causado por un error de IP
Este error se introdujo en otro artículo y no se repetirá aquí.
Para obtener más información, consulte el blog: Un error de IP provoca que falle la inicialización del conjunto de réplicas de MongoDB.
2 El contenido de los archivos mongodb-keyfile en los hosts PRIMARIO y SECUNDARIO es inconsistente. lo que provoca que no se pueda agregar un conjunto de réplicas en PRIMARIO
p>
Descripción del problema:
Construya otro conjunto de réplicas de MongoDB utilizando las siguientes asignaciones de funciones y host:
IP del host
ROL
SISTEMA
131.10.11.106
PRIMARIO
centos7
131.10.11.111
SECUNDARIO
centos7
131.10.11.114
SECUNDARIO
centos7
Versión del servidor MongoDB: 3.4.10.1
Agregue el host PRIMARY SECUNDARY 131.10.11.111, se produjo el siguiente error:
mongotest: PRIMARYgt(" 131.10.11.111:27017")
{
"ok": 0,
"errmsg": "La verificación del quórum falló porque no respondieron suficientes nodos de votación; Se requirieron 2 nodos de votación, pero solo 1 de los siguientes respondió: 131.10.11.106:27017; El siguiente nodo no respondió positivamente: 131.10.11.111:27017 Error de autenticación ",
"código" : 74 ,
"codeName" : " NodeNotFound. "
}
Análisis de la causa:
Después de solucionar el problema, se descubrió que mongodb -El archivo de claves del host 131.10.11.111 es inconsistente. 10.11.111 no es coherente con el nodo maestro y la autenticación segura no está configurada en el archivo mongo.conf del archivo de configuración del host 131.10.11.111.
Por lo tanto, la inicialización falló
Solución:
1. Copie el archivo mongodb-keyfile en el nodo principal al nodo en espera 131.10.11.111 y modifique los permisos a 400
2. Modifique el archivo de configuración /etc/mongodb/mongo.conf de la siguiente manera:
[root@mongodb111 mongodb]# cat mongo.conf
systemLog:
Destino: archivo
Ruta: "/opt/mongodbdata/mongod. log"
logAppend: true
almacenamiento:
diario:
habilitado: verdadero
dbPath:/opt/mongodbdata
setParameter:
enableLocalhostAuthBypass: verdadero
ProcessManagement:
fork: true
pidFilePath: "/opt/mongodbdata/mongod.pid"
Copia:
replSetName: mongotest
# Agregue las siguientes líneas:
seguridad:
autorización: habilitado
keyFile: "/etc/mongodb/ mongodb -keyfile"
[root@mongodb111 mongodb]#
Reinicie la máquina 131.10.11.111 mongodb y luego vuelva a ejecutar rs.add("131.10.11.111:27017 en PRIMARY "),éxito.
3. El archivo de configuración del nodo de respaldo no configura replSet, lo que provoca que no se pueda agregar un conjunto de réplicas
Descripción del problema:
El entorno encontrado en este El problema es el mismo que el problema 2. Al agregar 114 host a 106 host, se informó el siguiente error:
mongotest: PRIMARYgt("131.10.11.114:27017")
{
"ok": 0,
"errmsg": "La verificación del quórum falló porque no respondieron suficientes nodos de votación; se requirieron 2, pero solo respondieron los siguientes 1 nodos de votación: 131.10 .11.106: 27017; Respondió positivamente: 131.10.11.114:27017 Error al no ejecutar con --replSet",
"code": 74,
"codeName": "NodeNotFound"
p>}
Análisis de causa:
Según el mensaje "Los siguientes nodos no respondieron positivamente: 131.10.11.114: 27017 falló al no ejecutarse --replSe", verifique el archivo de configuración mongo.conf y descubrió que esto se debe a que no hay ningún conjunto de réplicas configurado en el archivo de configuración en el nodo en espera, por lo que no se puede agregar el conjunto de réplicas
Solución: p>
Modifique / en el archivo de configuración etc/mongodb/mongo.conf del nodo en espera y luego agregue la configuración del conjunto de replicación:
[root@mongodb114 mongodb] # cat mongo.conf
systemLog:
Destino: archivo
Ruta: "/opt/mongodbdata/mongod.log"
logAppend: true
almacenamiento:
diario:
habilitado: verdadero
dbPath:/opt/mongodbdata
setParameter:
enableLocalhostAuthBypass: verdadero
ProcessManagement:
fork: verdadero
pidFilePath: "/opt/mongodbdata/mongod.pid"
seguridad:
autorización: habilitada
archivo clave: "/etc/mongodb/mongodb-keyfile"
replicación: #Agregar configuración del conjunto de replicación,
replSetName: mongotest #Preste atención al nombre y al maestro. El nombre en el nodo permanece consistente
[root@ mongodb114 mongodb]#
Reinicie la máquina 131.10.11.114 mongodb y luego vuelva a ejecutar con éxito rs.add("131.10.11.114 on PRIMARY :27017")
4. bindIp tiene como valor predeterminado 127.0.0.1, lo que provoca que falle la inicialización del conjunto de réplicas de MongoDB<
/p>
Descripción del problema:
Al crear un conjunto de réplicas de MongoDB, el host y el rol se asignan de la siguiente manera:
IP del host
Rol
Sistema
10.0.0.101
PRIMARIO
centos7
10.0.0.102
SECUNDARIO
centos7
10.0.0.103
SECUNDARIO
centos7
Versión del servidor MongoDB. 4.0.2
Recibí este error al agregar el host secundario 10.0.0.102 en el host principal 10.0.0.101:
Error al agregar el nodo esclavo:
CrystalTest: PRIMARYgt ; rs.add("10.0.0.102.27017")
{
"horadeoperación" : Marca de tiempo(1539054715, 1),
"ok" : 0,
"errmsg": "La verificación del quórum falló porque no respondieron suficientes nodos de votación; se requirieron 2 pero solo respondieron los siguientes 1 nodo de votación: 10.0.0.101: 27017; Los siguientes nodos no respondieron positivamente: 10.0 .0.102:27017 Se produjo un error al conectarse a 10.0.0.102:27017, lo que resultó en: :Conexión rechazada",
"code": 74,
"codeName": " NodeNotFound",
"$clusterTime" : {
"clusterTime" : Marca de tiempo(1539054715, 1),
"firma" : {
"hash". Error al conectarse a 10.0.0.102:27017:: causado por:: Conexión rechazada "Esto es desconcertante, porque el puerto 27017 del host 10.0.0.102 es normal y el servicio se puede utilizar normalmente a través de Después de apagar, intente telnet en el host PRIMARIO 10.0.0.101 y descubra que no funciona correctamente:
[root@test101 ~]# telnet 10.0.0.102 27017
Probando 10.0.0.102...
Telnet: conéctese a la dirección 10.0.0.102: Conexión rechazada
Luego ingrese el host 102 para verificar el puerto y descubra que el bindIp es 127.0.0.1. El problema debería estar aquí.
101 El host no puede conectarse:
[root@test102 ~]# netstat -tlunp|grep mongo
tcp 0 0 127.0.0.1: 27017 0.0.0.0: * LISTEN 1065/mongod # Mostrar 127.0.0.1: 27017
Solución:
Modifique mongo.conf en el host 102, agregue "bindIp: 0.0.0.0" y luego reinicie MongoDB en el host 102 p>
[root@test102 bin]# cat /etc/mongodb/mongo.conf
systemLog:
Destino: archivo
Ruta: " /opt/mongodbdata/mongod.log"
logAppend: verdadero
almacenamiento:
diario:
habilitado: verdadero p >
dbPath:/opt/mongodbdata
setParameter:
enableLocalhostAuthBypass.True
processManagement:
fork: true< / p>
pidFilePath: "/opt/mongodbdata/mongod.pid"
replicación:
replSetName: CrystalTest
seguridad:
autorización: habilitada
keyFile: "/etc/mongodb/mongodb-keyfile"
net:
puerto: 27017
p >bindIp: 0.0.0.0 #Agregue esta línea
Compruebe el puerto nuevamente:
[root@test102 mongodb]# netstat -tlunp|grep 27017
tcp 0 0.0.0.0:27017 0.0.0.0:* LISTEN 3433/mongod # se convierte en 0 0.0.0.0:27017
[root@test102 mongodb]#
Luego telnet 101 Host, puede conectarse:
[root@test101 ~]# telnet 10.0.0.102 27017
Pruebe 10.0.0.102...
Conectado a 10.0. 0.102.
El carácter de escape es '^]'.
^C^C
Conexión cerrada por un host externo.
[root @test101 ~]#
Volver a agregar el host 102 en el host PRIMARIO 10.0.0.101 funcionó:
CrystalTest: PRIMARYgt("10.0.0.102:27017") p> p>
{
"ok" : 1,
"operaciónTi
me": marca de tiempo(1539056959, 1),
"$ clusterTime": {
"clusterTime": marca de tiempo(1539056959, 1),
"firma ": {
"hash": BinData(0, " headcentosnectelnetnodalt modifica mongodtry