Ejemplos de AWS CLI sobre puntos de conexión personalizados para Amazon Aurora - Amazon Aurora

Ejemplos de AWS CLI sobre puntos de conexión personalizados para Amazon Aurora

En el siguiente tutorial, se usan ejemplos AWS CLI con sintaxis de shell Unix para mostrar cómo se puede definir un clúster con varias instancias de base de datos “pequeñas” y algunas “grandes”; también se muestra cómo crear puntos de conexión personalizados para conectarse a cada conjunto de instancias de base de datos. Para ejecutar comandos similares en su propio sistema, debe estar suficientemente familiarizado con los aspectos básicos de trabajar con los clústeres de Aurora y el uso de AWS CLI a fin de proporcionar sus propios valores para parámetros, como región, grupo de subredes y grupo de seguridad de VPC.

En este ejemplo se muestran los pasos de configuración iniciales: creación de un clúster de Aurora y adición de instancias de base de datos a este. Este es un clúster heterogéneo, lo que significa que no todas las instancias de base de datos tienen la misma capacidad. La mayoría de las instancias usan la clase AWS de instancia db.r4.4xlarge, pero las dos últimas instancias de base de datos usan db.r4.16xlarge. Cada uno de estos comandos create-db-instance de ejemplo muestra su resultado en la pantalla y ahorra una copia del JSON en un archivo para su posterior inspección.

aws rds create-db-cluster --db-cluster-identifier custom-endpoint-demo --engine aurora-mysql \ --engine-version 8.0.mysql_aurora.3.02.0 --master-username $MASTER_USER --manage-master-user-password \ --db-subnet-group-name $SUBNET_GROUP --vpc-security-group-ids $VPC_SECURITY_GROUP \ --region $REGION for i in 01 02 03 04 05 06 07 08 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.4xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done for i in 09 10 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.16xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done

Las instancias más grandes están reservadas para tipos especializados de consultas de informes. Para que sea poco probable que se conviertan en la instancia principal, en el siguiente ejemplo la prioridad de su nivel de promoción pasa a ser la más baja. En este ejemplo se especifica la opción --manage-master-user-password para generar la contraseña del usuario maestro y administrarla en Secrets Manager. Para obtener más información, consulte Administración de contraseñas con Amazon Aurora y AWS Secrets Manager. También puede utilizar la opción --master-password para especificar y administrar la contraseña usted mismo.

for i in 09 10 do aws rds modify-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --region $REGION --promotion-tier 15 done

Supongamos que desea usar las dos instancias «más grandes» solo para las consultas que más recursos consumen. Para ello, primero puede crear un punto de enlace de solo lectura personalizado. A continuación, puede agregar una lista estática de miembros para que el punto de enlace se conecte solo a esas instancias de base de datos. El nivel de promoción de esas instancias ya es el más bajo, lo que reduce la probabilidad de que cualquiera de ellas se convierta alguna vez en la instancia principal. Si una de ellas se convirtiera en la instancia principal, resultaría inaccesible a través de este punto de enlace, ya que especificamos el tipo READER en lugar del tipo ANY.

En el siguiente ejemplo se muestran los comandos de punto de enlace de creación y modificación, así como la salida JSON de ejemplo que muestra el estado inicial y modificado del punto de enlace personalizado.

$ aws rds create-db-cluster-endpoint --region $REGION \ --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier big-instances --endpoint-type reader { "EndpointType": "CUSTOM", "Endpoint": "big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "DBClusterEndpointIdentifier": "big-instances", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "ExcludedMembers": [], "CustomEndpointType": "READER", "Status": "creating", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier big-instances \ --static-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "EndpointType": "CUSTOM", "ExcludedMembers": [], "DBClusterEndpointIdentifier": "big-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "Status": "modifying", "Endpoint": "big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "DBClusterIdentifier": "custom-endpoint-demo" }

El punto de enlace READER predeterminado del clúster puede conectarse a las instancias de base de datos “pequeñas” o “grandes”, lo que hace poco práctico predecir el rendimiento y la escalabilidad de las consultas cuando el clúster está ocupado. Para dividir la carga de trabajo limpiamente entre los conjuntos de instancias de base de datos, puede omitir el punto de enlace READER predeterminado y crear un segundo punto de enlace personalizado que se conecte a las demás instancias de base de datos. El siguiente ejemplo lo hace creando un punto de enlace personalizado y, a continuación, añadiendo una lista de exclusión. Cualquier otra instancia de base de datos que añada al clúster posteriormente se añadirá a este punto de enlace automáticamente. El tipo ANY significa que este punto de enlace se asocia a ocho instancias en total: la instancia principal y otras siete réplicas de Aurora. Si en el ejemplo se usó el tipo READER, el punto de enlace personalizado solo se asociaría a las siete réplicas de Aurora.

$ aws rds create-db-cluster-endpoint --region $REGION --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier small-instances --endpoint-type any { "Status": "creating", "DBClusterEndpointIdentifier": "small-instances", "CustomEndpointType": "ANY", "EndpointType": "CUSTOM", "Endpoint": "small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "StaticMembers": [], "ExcludedMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier small-instances \ --excluded-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "DBClusterEndpointIdentifier": "small-instances", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:c7tj4example:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "CustomEndpointType": "ANY", "Endpoint": "small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "EndpointType": "CUSTOM", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "StaticMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "modifying" }

En el siguiente ejemplo se comprueba el estado de los puntos de enlace de este clúster. El clúster aún tiene su punto de enlace del clúster original, con EndPointType de WRITER, que aún usaría para la administración, ETL y otras operaciones de escritura. Aún tiene su punto de enlace READER original, que no usaría porque cada conexión a este podría dirigirse a una instancia de base de datos “pequeña” o “grande”. Los puntos de enlace personalizados hacen que este comportamiento sea predecible, con conexiones garantizadas para usar una de las instancias de base de datos “pequeñas” o “grandes” en función del punto de enlace que especifique.

$ aws rds describe-db-cluster-endpoints --region $REGION { "DBClusterEndpoints": [ { "EndpointType": "WRITER", "Endpoint": "custom-endpoint-demo.cluster-c7tj4example.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "EndpointType": "READER", "Endpoint": "custom-endpoint-demo.cluster-ro-c7tj4example.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "Endpoint": "small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "ANY", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "small-instances", "Status": "modifying" }, { "Endpoint": "big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "ExcludedMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "big-instances", "Status": "available" } ] }

En el ejemplo final se muestra cómo conexiones de base de datos sucesivas a los puntos de enlace personalizados se conectan a las diversas instancias de base de datos del clúster de Aurora. El punto de enlace small-instances siempre se conecta a las instancias de base de datos db.r4.4xlarge, que son los hosts con la numeración más baja de este clúster.

$ mysql -h small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-02 | +-------------------------+ $ mysql -h small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-07 | +-------------------------+ $ mysql -h small-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-01 | +-------------------------+

El punto de enlace big-instances siempre se conecta a las instancias de base de datos db.r4.16xlarge, que son los dos hosts con la numeración más alta de este clúster.

$ mysql -h big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-10 | +-------------------------+ $ mysql -h big-instances.cluster-custom-c7tj4example.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-09 | +-------------------------+