Overview
Este tutorial implica la creación de un nuevo clúster fragmentado que consta de un
mongos, el conjunto de réplicas del servidor de configuración y dos conjuntos de réplicas de fragmentos.
Considerations
Conectividad
Cada miembro de un clúster fragmentado debe poder conectarse a todos los demás miembros del clúster. Esto incluye todos los fragmentos y servidores de configuración. Asegúrese de que los sistemas de red y seguridad, incluidas todas las interfaces y firewalls, permitan estas conexiones.
Nombres de host y configuración
Importante
Para evitar actualizaciones de configuración debido a cambios en las direcciones IP, utilice nombres de host DNS en lugar de direcciones IP. Es particularmente importante usar un nombre de host DNS en lugar de una dirección IP al configurar miembros de set de réplicas o miembros de clústeres particionados.
Utiliza nombres de host en lugar de direcciones IP para configurar clústeres en un horizonte de red dividido. A partir de MongoDB 5.0, los nodos que solo están configurados con una dirección IP no pasan la validación de inicio y no se inician.
Implementaciones de host local
Si utiliza localhost o su dirección IP como la parte del nombre de host de cualquier identificador de host,debe utilizar ese identificador como configuración de host para cualquier otro componente MongoDB en el clúster.
Por ejemplo, el método toma sh.addShard() el host parámetro para el nombre de host del fragmento de destino. Si host establece localhost en, debe usar localhost como host para todos los demás fragmentos del clúster.
Seguridad
Este tutorial no incluye los pasos necesarios para configurar la autenticación interna/de membresía autoadministrada o el control de acceso basado en roles en implementaciones autoadministradas.
En entornos de producción, los clústeres fragmentados deben emplear como mínimo x.509 de seguridad para la autenticación interna y el acceso del cliente.
Procedimiento
Crear el conjunto de réplicas del servidor de configuración
Los siguientes pasos implementan un conjunto de réplicas del servidor de configuración.
Para una implementación de producción, implemente un conjunto de réplicas del servidor de configuración con al menos tres miembros. Para realizar pruebas, puede crear un conjunto de réplicas de un solo miembro.
Nota
El conjunto de réplicas del servidor de configuración no debe usar el mismo nombre que ninguno de los conjuntos de réplicas de fragmentos.
Para este tutorial, los miembros del conjunto de réplicas del servidor de configuración están asociados con los siguientes hosts:
Miembro del conjunto de réplicas del servidor de configuración | Nombre del host |
|---|---|
Miembro 0 |
|
Miembro 1 |
|
Miembro 2 |
|
Inicie cada miembro del conjunto de réplicas del servidor de configuración.
Al iniciar cada,especifique la configuración ya sea mediante un mongod mongod archivo de configuración o la línea de comando.
Si utiliza un archivo de configuración, configure:
sharding: clusterRole: configsvr replication: replSetName: <replica set name> net: bindIp: localhost,<hostname(s)|ip address(es)>
sharding.clusterRolea,configsvrreplication.replSetNameal nombre deseado del conjunto de réplicas del servidor de configuración,net.bindIpopción para el nombre de host/dirección IP o una lista delimitada por comas de nombres de host o direcciones IP que los clientes remotos (incluidos los otros miembros del conjunto de réplicas del servidor de configuración, así como otros miembros del clúster fragmentado) pueden usar para conectarse a la instancia.Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
Ajustes adicionales según corresponda a su implementación, como y. Para obtener más información sobre el archivo de configuración, consulte las
storage.dbPathnet.portopcionesde configuración.
Inicie con mongod la --config opción establecida en la ruta del archivo de configuración.
mongod --config <path-to-config-file>
Si usa las opciones de la línea de comandos, inicie mongod --configsvr--replSet--bind_ipcon,, y otras opciones según corresponda a su implementación. Por ejemplo:
Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>
Para obtener más información sobre los parámetros de inicio, consulte la página de mongod referencia.
Conéctese a uno de los servidores de configuración.
Conecte a uno de los miembros del servidor de mongosh configuración.
mongosh --host <hostname> --port <port>
Inicia el set de réplicas.
Desde mongosh, ejecuta el método rs.initiate().
rs.initiate() puede tomar un documento de configuración de Set de réplicas opcional. En el documento de configuración del Set de réplicas, incluya:
El conjunto
_idal nombre del conjunto de réplicas especificado en la opciónreplication.replSetNameo--replSet.El campo establecido
configsvrentruepara el conjunto de réplicas del servidor de configuración.El
membersarreglo con un documento por cada nodo del set de réplicas.
Importante
Ejecute rs.initiate() en una sola instancia para el conjunto de mongod réplicas.
rs.initiate( { _id: "myReplSet", configsvr: true, members: [ { _id : 0, host : "cfg1.example.net:27019" }, { _id : 1, host : "cfg2.example.net:27019" }, { _id : 2, host : "cfg3.example.net:27019" } ] } )
Consulte Configuración del conjunto de réplicas autoadministradas para obtener más información sobre los documentos de configuración del conjunto de réplicas.
Nota
El comando puede tardar unos segundos en completarse. Para usar el conjunto de réplicas del servidor de configuración (CSRS) en este procedimiento, debe esperar a que se inicialice. Si el CSRS no se ha inicializado,rs.initiate() verá NotYetInitialized errores al intentar realizar operaciones en un miembro del CSRS.
Una vez iniciado y en funcionamiento el set de réplicas del servidor de configuración (CSRS), procede a crear los sets de réplicas de las particiones.
Crear los conjuntos de réplicas de fragmentos
Para una implementación de producción, utilice un conjunto de réplicas con al menos tres miembros. Para realizar pruebas, puede crear un conjunto de réplicas con un solo miembro.
Nota
Los conjuntos de réplicas de fragmentos no deben usar el mismo nombre que el conjunto de réplicas del servidor de configuración.
Para cada fragmento, utilice los siguientes pasos para crear el conjunto de réplicas de fragmentos:
Inicie cada miembro del conjunto de réplicas de fragmentos.
Al iniciar cada,especifique la configuración ya sea mediante un mongod mongod archivo de configuración o la línea de comando.
Si utiliza un archivo de configuración, configure:
sharding: clusterRole: shardsvr replication: replSetName: <replSetName> net: bindIp: localhost,<ip address>
replication.replSetNameal nombre deseado del conjunto de réplicas,sharding.clusterRoleopciónshardsvra,net.bindIpopción para la IP o una lista delimitada por comas de IP que los clientes remotos (incluidos los otros miembros del conjunto de réplicas del servidor de configuración, así como otros miembros del clúster fragmentado) pueden usar para conectarse a la instancia.Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
Ajustes adicionales según corresponda a su implementación, como y. Para obtener más información sobre el archivo de configuración, consulte las
storage.dbPathnet.portopcionesde configuración.
Inicie con mongod la --config opción establecida en la ruta del archivo de configuración.
mongod --config <path-to-config-file>
Si usa la opción de línea de comandos, inicie con mongod las --replSet --shardsvr--bind_ip opciones,, y otras opciones según corresponda a su implementación. Por ejemplo:
mongod --shardsvr --replSet <replSetname> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>
Para obtener más información sobre los parámetros de inicio, consulte la página de mongod referencia.
Conectarse a un miembro del conjunto de réplicas de fragmentos.
Conecte a uno de los miembros del conjunto de mongosh réplicas.
mongosh --host <hostname> --port <port>
Inicia el set de réplicas.
Desde mongosh, ejecuta el método rs.initiate().
rs.initiate() puede tomar un documento de configuración de Set de réplicas opcional. En el documento de configuración del Set de réplicas, incluya:
El campo
_idse establece en el nombre del Set de réplicas especificado en elreplication.replSetNameo en la opción--replSet.El
membersarreglo con un documento por cada nodo del set de réplicas.
El siguiente ejemplo inicia un conjunto de réplicas de tres miembros.
Importante
Ejecute rs.initiate() en una sola instancia para el conjunto de mongod réplicas.
rs.initiate( { _id : "myReplSet", members: [ { _id : 0, host : "s1-mongo1.example.net:27018" }, { _id : 1, host : "s1-mongo2.example.net:27018" }, { _id : 2, host : "s1-mongo3.example.net:27018" } ] } )
Iniciar un mongos para el clúster fragmentado
Inicie un utilizando un archivo de configuración o un parámetro de línea de comando para especificar los servidores de mongos configuración.
Si utiliza un archivo de configuración, establezca sharding.configDB en el nombre del conjunto de réplicas del servidor de configuración y al menos un miembro del conjunto de réplicas en <replSetName>/<host:port> formato.
Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
sharding: configDB: <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 net: bindIp: localhost,<hostname(s)|ip address(es)>
Inicie mongos especificando --config la opción y la ruta al archivo de configuración.
mongos --config <path-to-config>
Para obtener más información sobre el archivo de configuración, consultar opciones del archivo de configuración.
Si utiliza parámetros de línea de comandos, inicie mongos --configdby--bind_ip especifique, y otras opciones según corresponda a su implementación. Por ejemplo:
Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019,cfg3.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>
Incluya cualquier otra opción según sea apropiado para su implementación.
En este punto, su clúster fragmentado consta de los servidores y de configuración. Ahora puede conectarse al clúster mongos fragmentado mongosh mediante.
Conectarse al clúster fragmentado
Conecta mongosh a la mongos. Especifica el host y el port en los que se ejecuta el mongos:
mongosh --host <hostname> --port <port>
Una vez que haya conectado a, continúe con el siguiente procedimiento para agregar fragmentos al mongosh mongosclúster.
Agregar fragmentos al clúster
En una sesión mongosh que esté conectada a,mongos sh.addShard() use el método para agregar cada fragmento al clúster.
La siguiente operación agrega un único conjunto de réplicas de fragmentos al clúster:
sh.addShard( "<replSetName>/s1-mongo1.example.net:27018,s1-mongo2.example.net:27018,s1-mongo3.example.net:27018")
Repita estos pasos hasta que el clúster incluya todos los fragmentos deseados.
Fragmenta una colección
Para fragmentar una colección, conecte mongosh a sh.shardCollection() mongos y use el método.
Nota
Fragmentación e índices
Si la colección ya contiene datos, debe crear un índice compatible con la clave de fragmentación antes de fragmentarla. Si la colección está vacía, MongoDB crea el índice como parte sh.shardCollection() de.
MongoDB ofrece dos estrategias para fragmentar colecciones:
La fragmentación hash utiliza un índice hash de un solo campo como clave de fragmentación para particionar los datos en todo el clúster fragmentado.
sh.shardCollection("<database>.<collection>", { <shard key field> : "hashed" } ) La fragmentación basada en rango puede usar múltiples campos como clave de fragmento y divide los datos en rangos contiguos determinados por los valores de la clave de fragmento.
sh.shardCollection("<database>.<collection>", { <shard key field> : 1, ... } )
Consideraciones clave de fragmentos
La selección de la clave de fragmentación afecta la eficiencia de la fragmentación, así como su capacidad para aprovechar ciertas funciones, como las zonas. Para saber cómo elegir una clave de fragmentación eficaz, consulte Elegir una clave de fragmentación.
mongosh proporciona el método. Este método utiliza la misma función hash que el índice hash y permite determinar cuál sería el valor hash de una convertShardKeyToHashed() clave.
Tip
Para claves de fragmentos de fragmentación con hash, consulte Clave de fragmento de fragmentación con hash
Para obtener claves de fragmentos de fragmentación a distancia, consulte Selección de claves de fragmentos