Inicio rápido: Creación de un clúster de Azure Managed Instance for Apache Cassandra mediante la CLI de Azure
Azure Managed Instance for Apache Cassandra es un servicio completamente administrado para clústeres de Apache Cassandra de código abierto puros. El servicio también permite invalidar las configuraciones, en función de las necesidades específicas de cada carga de trabajo, lo que permite la máxima flexibilidad y el mayor control cuando sean necesarios.
En este inicio rápido se muestra cómo usar los comandos de la CLI de Azure para crear un clúster con Azure Managed Instance for Apache Cassandra. También se muestra cómo crear un centro de recursos y escalar o reducir verticalmente los nodos en el centro de seguridad.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
Azure Virtual Network con conectividad a su entorno autohospedado o local. Para obtener más información sobre cómo conectar entornos locales a Azure, consulte el artículo Conexión de una red local a Azure.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Importante
Este artículo requiere la CLI de Azure 2.30.0 o una versión posterior. Si usa Azure Cloud Shell, la versión más reciente ya está instalada.
Creación de un clúster de instancia administrada
Inicie sesión en el Portal de Azure
Establezca el identificador de la suscripción en la CLI de Azure:
az account set -s <Subscription_ID>
A continuación, cree una red virtual con una subred dedicada en el grupo de recursos:
az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
Nota
La implementación de Azure Managed Instance for Apache Cassandra requiere acceso a Internet. En entornos con acceso limitado a Internet se produce un error de implementación. Asegúrese de no bloquear el acceso a los siguientes servicios de Azure que son esenciales para que las instancias administradas de Cassandra funcionen correctamente:
- Azure Storage
- Azure KeyVault
- Conjuntos de escalado de máquinas virtuales de Azure
- Supervisión de Azure
- Microsoft Entra ID
- Azure Security
Aplique algunos permisos especiales a la red virtual, ya que serán necesarios para la instancia administrada. Utilice el comando
az role assignment create
y reemplace<subscriptionID>
,<resourceGroupName>
y<vnetName>
con los valores adecuados:az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>
Nota
Los valores
assignee
yrole
del comando anterior son valores fijos. Escriba estos valores exactamente como se mencionó en el comando. Si no lo hace, se producirán errores al crear el clúster. Si se producen errores al ejecutar este comando, es posible que no tenga permisos para ejecutarlo. Para obtenerlos, póngase en contacto con el administrador.Luego, cree el clúster en la red virtual recién creada mediante el comando az managed-cassandra cluster create. Ejecute el siguiente comando en el valor de la variable
delegatedManagementSubnetId
:Nota
El valor de la variable
delegatedManagementSubnetId
que proporcionará a continuación es exactamente el mismo que el valor de--scope
proporcionado en el comando anterior:resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster_Name>' location='eastus2' delegatedManagementSubnetId='/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/<VNet name>/subnets/<subnet name>' initialCassandraAdminPassword='myPassword' cassandraVersion='3.11' # set to 4.0 for a Cassandra 4.0 cluster az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --initial-cassandra-admin-password $initialCassandraAdminPassword \ --cassandra-version $cassandraVersion \ --debug
Por último, cree un centro de datos para el clúster, con tres nodos, SKU de máquina virtual Standard D8s v4 y 4 discos P30 conectados para cada nodo mediante el comando az managed-cassandra datacenter create:
dataCenterName='dc1' dataCenterLocation='eastus2' virtualMachineSKU='Standard_D8s_v4' noOfDisksPerNode=4 az managed-cassandra datacenter create \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --data-center-location $dataCenterLocation \ --delegated-subnet-id $delegatedManagementSubnetId \ --node-count 3 \ --sku $virtualMachineSKU \ --disk-capacity $noOfDisksPerNode \ --availability-zone false
Nota
El valor de
--sku
se puede elegir entre las siguientes SKU disponibles:- Standard_E8s_v4
- Standard_E16s_v4
- Standard_E20s_v4
- Standard_E32s_v4
- Standard_DS13_v2
- Standard_DS14_v2
- Standard_D8s_v4
- Standard_D16s_v4
- Standard_D32s_v4
Tenga en cuenta también que
--availability-zone
está establecido enfalse
. Para habilitar las zonas de disponibilidad, establezca esta opción entrue
. Las zonas de disponibilidad aumentan el Acuerdo de Nivel de Servicio de disponibilidad del servicio. Para más información, revise los detalles completos del Acuerdo de Nivel de Servicio aquí.Advertencia
Las zonas de disponibilidad no se admiten en todas las regiones. Se producirá un error en las implementaciones si selecciona una región en la que no se admiten las zonas de disponibilidad. Consulte aquí las regiones admitidas. La implementación correcta de las zonas de disponibilidad también depende de la disponibilidad de los recursos de proceso en todas las zonas de la región dada. Podría producirse un error en las implementaciones si la SKU o la capacidad que ha seleccionado no están disponibles en todas las zonas.
Una vez que se crea el centro de datos, si quiere escalar o reducir verticalmente los nodos que contiene, ejecute el comando az managed-cassandra datacenter update. Cambie el valor del parámetro
node-count
al valor deseado:resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster Name>' dataCenterName='dc1' dataCenterLocation='eastus2' az managed-cassandra datacenter update \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --node-count 9
Conexión al clúster
Azure Managed Instance for Apache Cassandra no crea nodos con direcciones IP públicas. Para conectarse al clúster de Cassandra recién creado, tiene que crear otro recurso dentro de la red virtual. Este recurso puede ser una aplicación o una máquina virtual que tenga instalada la herramienta de consulta de código abierto de Apache CQLSH. Puede usar una plantilla de Resource Manager para implementar una máquina virtual de Ubuntu.
Conexión desde CQLSH
Tras la implementación de la máquina virtual, use SSH para conectarse a la máquina e instalar CQLSH, tal y como se muestra en los siguientes comandos:
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl
Conexión desde una aplicación
Al igual que con CQLSH, la conexión desde una aplicación mediante uno de los controladores de cliente de Apache Cassandra admitidos requiere que el cifrado de SSL esté habilitado y la verificación de certificación esté deshabilitada. Consulte ejemplos para conectarse a Azure Managed Instance for Apache Cassandra mediante Java, .NET, Node.js y Python.
Se recomienda deshabilitar la comprobación de certificados porque esta comprobación no funcionará a menos que asigne las direcciones IP de los nodos de clúster al dominio adecuado. Si tiene una directiva interna que exige que realice la comprobación de certificados SSL para cualquier aplicación, puede facilitarlo agregando entradas como 10.0.1.5 host1.managedcassandra.cosmos.azure.com
en el archivo de hosts para cada nodo. Si adopta este enfoque, también tendrá que agregar nuevas entradas cada vez que escale verticalmente los nodos.
Para Java, también se recomienda habilitar la directiva de ejecución especulativa en la que las aplicaciones son sensibles a la latencia alta. Aquí encontrará una demostración que describe cómo funciona y cómo se habilita la directiva.
Nota:
En la gran mayoría de los casos, no debería ser necesario configurar o instalar certificados (rootCA, nodo o cliente, almacenes de confianza, etc.) para conectarse a Azure Managed Instance for Apache Cassandra. El cifrado SSL se puede habilitar mediante el almacén de confianza predeterminado y la contraseña del runtime que usa el cliente (consulte los ejemplos de Java, .NET, Node.js y Python), ya que los certificados de Azure Managed Instance for Apache Cassandra serán de confianza para ese entorno. En raras ocasiones, si el certificado no es de confianza, es posible que tenga que agregarlo al almacén de confianza.
Configuración de certificados de cliente (opcional)
La configuración de certificados de cliente es opcional. Una aplicación cliente puede conectarse a Azure Managed Instance for Apache Cassandra siempre que se hayan realizado los pasos anteriores. Sin embargo, si lo prefiere, también puede crear y configurar certificados de cliente adicionales para la autenticación. En general, hay dos maneras de crear certificados:
- Certificados autofirmados. Esto significa que existe un certificado privado y público (sin CA) para cada nodo. En este caso, necesitamos todos los certificados públicos.
- Certificados firmados por una CA. Puede ser una entidad de certificación autofirmada o incluso una pública. En este caso, necesitamos el certificado de CA raíz (consulte las instrucciones sobre cómo preparar certificados SSL para producción) y todos los intermediarios (si procede).
Si desea implementar la autenticación de certificados de cliente a nodo o Seguridad de la capa de transporte (mTLS), debe proporcionar los certificados a través de la CLI de Azure. El siguiente comando cargará y aplicará los certificados de cliente al almacén de confianza para el clúster de la instancia administrada de Cassandra (es decir, no es necesario editar la configuración de cassandra.yaml
). Una vez aplicado, el clúster requerirá que Cassandra compruebe los certificados cuando un cliente se conecte (consulte require_client_auth: true
cassandra client_encryption_options).
resourceGroupName='<Resource_Group_Name>'
clusterName='<Cluster Name>'
az managed-cassandra cluster update \
--resource-group $resourceGroupName \
--cluster-name $clusterName \
--client-certificates /usr/csuser/clouddrive/rootCert.pem /usr/csuser/clouddrive/intermediateCert.pem
Solución de problemas
Si se produce un error al aplicar permisos a la red virtual mediante la CLI de Azure, por ejemplo, se indica que no se encuentra el usuario o la entidad de servicio en la base de datos de grafos para "e5007d2c-4b13-4a74-9b6a-605d99f03501" , puede aplicar el mismo permiso manualmente desde Azure Portal. Aprenda cómo hacerlo aquí.
Nota
La asignación de roles de Azure Cosmos DB se usa solo con fines de implementación. Azure Managed Instance for Apache Cassandra no tiene dependencias de back-end en Azure Cosmos DB.
Limpieza de recursos
Puede usar el comando az group delete
para quitar el grupo de recursos, la máquina virtual y todos los recursos relacionados cuando ya no se necesiten:
az group delete --name <Resource_Group_Name>
Pasos siguientes
En este inicio rápido, ha aprendido a crear un clúster de Azure Managed Instance for Apache Cassandra mediante la CLI de Azure. Ahora puede empezar a trabajar con el clúster: