Overview
Este tutorial consiste en crear un nuevo clúster compartimentado que conste de un
mongos, el conjunto de réplicas del servidor de configuración y dos conjuntos de réplicas de fragmentos.
Considerations
Conectividad
Cada nodo de un clúster compartido debe poder conectarse a todos los demás nodos del clúster. Esto incluye todas las particiones y servidores de configuración. Asegúrate 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 utilizas localhost o su dirección IP como la parte del nombre de host de cualquier identificador de host, debes utilizar ese identificador como la configuración de host para cualquier otro componente de MongoDB en el clúster.
Por ejemplo, el método sh.addShard() requiere un parámetro host para el hostname de la partición de destino. Si configuras host en localhost, entonces debes usar localhost como el host para todas las demás particiones en el clúster.
Seguridad
Este tutorial no incluye los pasos requeridos para configurar Autenticación interna/de miembros autogestionada o Control de acceso basado en roles en implementaciones autogestionadas.
En los entornos de producción, los clústeres fragmentados deben emplear al menos seguridad x.509 para la autenticación interna y el acceso de clientes.
Procedimiento
Crear el set de réplicas del servidor de configuración
Los siguientes pasos implementan un conjunto de réplicas de servidor de configuración.
Para una implementación en producción, implemente un set de réplicas de servidores de configuración con al menos tres nodos. Para fines de prueba, puedes crear un set de réplicas de un solo nodo.
Nota
El set de réplicas del servidor de configuración no debe usar el mismo nombre que ninguno de los set de réplicas de las particiones.
Para este tutorial, los miembros del conjunto de réplicas del servidor de configuración están asociados con los siguientes hosts:
Miembro del servidor de configuración set de réplicas | Nombre del host |
|---|---|
Miembro 0 |
|
Miembro 1 |
|
Miembro 2 |
|
Inicie cada nodo del set de réplicas del servidor de configuración.
Al iniciar cada mongod, especifica la configuración de mongod ya sea mediante un archivo de configuración o desde la línea de comandos.
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.clusterRoleaconfigsvr,replication.replSetNameal nombre deseado del set de réplicas del servidor de configuración,net.bindIpopción a la dirección de host/ip o lista delimitada por coma de direcciones de host o ip que los clientes remotos (incluidos los otros miembros del set de réplicas del servidor de configuración e incluso otros miembros del clúster) pueden usar para conectarse a la instancia.Advertencia
Antes de enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer la infraestructura de red.
Configuraciones adicionales según corresponda a su implementación, tales como
storage.dbPathynet.port. Para obtener más información sobre el archivo de configuración, consulte opciones de configuración.
Inicie el mongod con la opción --config configurada en la ruta del archivo de configuración.
mongod --config <path-to-config-file>
Si utiliza las opciones de línea de comandos, inicie el mongod con las opciones --configsvr, --replSet, --bind_ip y otras opciones según corresponda a su implementación. Por ejemplo:
Advertencia
Antes de enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer 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 referencia mongod.
Conectar con 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
configsvrcampo está establecido entruepara el set de réplicas del servidor de configuración.El
membersarreglo con un documento por cada nodo del set de réplicas.
Importante
Ejecuta rs.initiate() en solo una y únicamente una instancia mongod para el conjunto de 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" } ] } )
Consulta Configuración de set de réplicas autogestionada para obtener más información sobre los documentos de configuración del set de réplicas.
Nota
El comando rs.initiate() puede tardar unos segundos en completarse. Para utilizar el set de réplicas del servidor de configuración (CSRS) en este procedimiento, debe esperar hasta que complete su inicialización. Si el CSRS no se ha inicializado, se verán errores de NotYetInitialized cuando se intenten realizar operaciones en un nodo de 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 sets de réplicas de particiones
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 sets de réplicas de particiones no deben usar el mismo nombre que el set de réplicas del servidor de configuración.
Para cada partición, utiliza los siguientes pasos para crear el set de réplicas de la partición:
Inicie cada miembro del conjunto de réplicas de fragmentos.
Al iniciar cada mongod, especifica la configuración de mongod ya sea mediante un archivo de configuración o desde la línea de comandos.
Si utiliza un archivo de configuración, configure:
sharding: clusterRole: shardsvr replication: replSetName: <replSetName> net: bindIp: localhost,<ip address>
replication.replSetNameal nombre deseado del set de réplicas,sharding.clusterRoleopción parashardsvr,net.bindIpopción al ip o una lista de ips delimitados por comas que los clientes remotos (incluidos los demás miembros del set de réplicas del servidor de configuración, así como los demás miembros del clúster) pueden usar para conectarse a la instancia.Advertencia
Antes de enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer la infraestructura de red.
Configuraciones adicionales según corresponda a su implementación, tales como
storage.dbPathynet.port. Para obtener más información sobre el archivo de configuración, consulte opciones de configuración.
Inicie el mongod con la opción --config configurada en la ruta del archivo de configuración.
mongod --config <path-to-config-file>
Si utilizas la opción de línea de comandos, inicia el mongod con las opciones --replSet, --shardsvr, --bind_ip y otras opciones que correspondan a tu 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 referencia mongod.
Conéctese a un nodo del conjunto de réplicas de la partición.
Conectar mongosh a uno del set de 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 set de réplicas de tres nodos.
Importante
Ejecuta rs.initiate() en solo una y únicamente una instancia mongod para el conjunto de 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" } ] } )
Inicia un mongos para el clúster
Inicia un mongos usando un archivo de configuración o un parámetro de línea de comando para especificar los servidores de configuración.
Si usas un archivo de configuración, debes asignar el sharding.configDB al nombre del conjunto de réplicas del servidor de configuración y asegurar que al menos un nodo del conjunto de réplicas esté en el formato <replSetName>/<host:port>.
Advertencia
Antes de enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer la infraestructura de red.
sharding: configDB: <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 net: bindIp: localhost,<hostname(s)|ip address(es)>
Inicie el mongos especificando la opción --config 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 enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer 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)>
Incluye cualquier otra opción que sea apropiada para tu implementación.
En este punto, tu clúster particionado consiste en el mongos y los servidores de configuración. Ahora puedes conectarte al clúster shard usando mongosh.
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 particiones al clúster
En una mongosh sesión conectada al mongos, usar el método sh.addShard() para añadir cada partición 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, conecta mongosh al mongos y utiliza el método sh.shardCollection().
Nota
Particionado 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 proporciona dos estrategias para particionar las colecciones:
Particionado encriptada utiliza un índice encriptada de un solo campo como la clave de partición para particionar los datos a través de su clúster.
sh.shardCollection("<database>.<collection>", { <shard key field> : "hashed" } ) El particionamiento basado en rangos puede utilizar múltiples campos como clave de partición y dividir los datos en rangos contiguos determinados por los valores de la clave de partición.
sh.shardCollection("<database>.<collection>", { <shard key field> : 1, ... } )
Consideraciones de la clave de partición
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 convertShardKeyToHashed(). Este método utiliza la misma función encriptada que el índice encriptada y puede utilizarse para ver cuál sería el valor encriptada para una clave.
Tip
Para claves de fragmentos de fragmentación con hash, consulte Clave de fragmento de fragmentación con hash
Para claves de partición clasificado por rango, consulte selección de clave de partición