Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A Instância Gerenciada do Azure para Apache Cassandra é um serviço totalmente gerenciado para clusters puros de código aberto do Apache Cassandra. O serviço também permite que as configurações sejam substituídas, dependendo das necessidades específicas de cada carga de trabalho, para máxima flexibilidade e controle.
Este início rápido demonstra como usar os comandos da CLI do Azure para configurar um cluster híbrido. Se você tiver datacenters existentes em um ambiente local ou auto-hospedado, poderá usar a Instância Gerenciada do Azure para Apache Cassandra para adicionar outros datacenters a esses clusters e mantê-los.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para saber mais, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Este artigo requer a CLI do Azure versão 2.30.0 ou posterior. Se você está usando o Azure Cloud Shell, a última versão já está instalada.
- Use uma rede virtual do Azure com conectividade com seu ambiente auto-hospedado ou local. Para obter mais informações sobre como conectar ambientes locais ao Azure, consulte Conectar uma rede local ao Azure.
Configurar um cluster híbrido
Entre no portal do Azure e acesse o recurso de rede virtual.
Selecione a guia Sub-redes e crie uma nova sub-rede. Para saber mais sobre os campos no formulário Adicionar sub-rede , consulte Adicionar uma sub-rede.
A implantação da Instância Gerenciada do Azure para Apache Cassandra requer acesso à Internet. A implantação falha em ambientes em que o acesso à Internet é restrito. Verifique se você não está bloqueando o acesso em sua rede virtual aos seguintes serviços vitais do Azure necessários para que a Instância Gerenciada do Azure para Apache Cassandra funcione corretamente. Para obter uma lista de dependências de endereço IP e porta, consulte as regras de rede de saída necessárias.
- Armazenamento do Azure
- Azure Key Vault
- Conjuntos de dimensionamento de máquina virtual do Azure
- Azure Monitor
- Microsoft Entra ID
- Microsoft Defender para Nuvem
Aplique algumas permissões especiais à rede virtual e à sub-rede, que a Instância Gerenciada do Azure para Apache Cassandra exige, usando a CLI do Azure. Use o comando
az role assignment create. Substitua<subscriptionID>,<resourceGroupName>e<vnetName>pelos valores apropriados: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>Os valores
assigneeeroleno comando anterior são identificadores fixos de principal de serviço e de função, respectivamente.Configure recursos para o cluster híbrido. Como você já tem um cluster, o nome do cluster é um recurso lógico para identificar o nome do cluster existente. Use o nome do cluster existente quando você definir
clusterNameeclusterNameOverridevariáveis no script a seguir.Você também precisa, no mínimo, dos nós de semente do datacenter existente e dos certificados de fofoca necessários para criptografia de nó a nó. A Instância Gerenciada do Azure para Apache Cassandra exige a criptografia de nó a nó para a comunicação entre datacenters. Se você ainda não implementou a criptografia de nó a nó em seu cluster atual, é necessário fazê-lo. Para obter mais informações, confira Criptografia nó a nó. Forneça o caminho para o local dos certificados. Cada certificado deve estar no formato PEM (Email Avançado de Privacidade), por exemplo,
-----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----. Em geral, há duas maneiras de implementar certificados:- Certificados autoassinados. Certificados públicos e privados sem AC (Autoridade de Certificação) para cada nó. Nesse caso, você precisa de todos os certificados públicos.
- Certificados assinados por uma Autoridade Certificadora (AC). Certificados emitidos por uma AC autoassinada ou uma AC pública. Nesse caso, você precisa do certificado da Autoridade Certificadora raiz e dos certificados de todos os intermediários, se aplicável. Para obter mais informações, consulte Preparar certificados SSL (Secure Sockets Layer) para produção.
Opcionalmente, se você quiser implementar a autenticação de certificado cliente a nó ou o TLS (Transport Layer Security), forneça os certificados no mesmo formato que quando você criou o cluster híbrido. Consulte o exemplo da CLI do Azure mais adiante neste artigo. Os certificados são fornecidos no
--client-certificatesparâmetro.Essa abordagem carrega e aplica seus certificados de cliente ao repositório de confiança para o cluster da Instância Gerenciada do Azure para Apache Cassandra. Você não precisa editar
cassandra.yamlas configurações. Depois que os certificados são aplicados, o cluster requer que o Cassandra verifique os certificados quando um cliente se conecta. Para obter mais informações, consulterequire_client_auth: trueCassandra client_encryption_options.O valor da
delegatedManagementSubnetIdvariável que você fornece neste código é o mesmo que o valor fornecido--scopeem um comando anterior:resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster-legal-name' clusterNameOverride='cassandra-hybrid-cluster-illegal-name' location='eastus2' delegatedManagementSubnetId='/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>' # You can override the cluster name if the original name isn't legal for an Azure resource: # overrideClusterName='ClusterNameIllegalForAzureResource' # the default cassandra version will be v3.11 az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --external-seed-nodes 10.52.221.2 10.52.221.3 10.52.221.4 \ --external-gossip-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/gossipKeyStore.crt_signed # optional - add your existing datacenter's client-to-node certificates (if implemented): # --client-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/nodeKeyStore.crt_signedSe o cluster já tiver criptografia de nó a nó e cliente para nó, você deverá saber onde seus certificados TLS/SSL de fofoca ou cliente existentes são mantidos. Se você não tiver certeza, execute
keytool -list -keystore <keystore-path> -rfc -storepass <password>para imprimir os certificados.Após a criação do recurso de cluster, execute o seguinte comando para obter os detalhes de configuração do cluster:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' az managed-cassandra cluster show \ --cluster-name $clusterName \ --resource-group $resourceGroupName \O comando anterior retorna informações sobre o ambiente da instância gerenciada. Você precisa dos certificados de gossip para poder instalá-los no repositório de confiança para nós em seu datacenter existente. A captura de tela a seguir mostra a saída do comando anterior e o formato dos certificados.
Os certificados retornados do comando anterior contêm quebras de linha que são representadas como texto. Um exemplo é
\r\n. Copie cada certificado para um arquivo e formate-o antes de tentar importá-lo para o repositório de confiança existente.Copie o valor da
gossipCertificatesmatriz mostrado na captura de tela em um arquivo. Use o script Bash a seguir para formatar os certificados e criar arquivos PEM separados para cada um. Para baixar o script Bash, consulte Baixar o jq para sua plataforma.readarray -t cert_array < <(jq -c '.[]' gossipCertificates.txt) # iterate through the certs array, format each cert, write to a numbered file. num=0 filename="" for item in "${cert_array[@]}"; do let num=num+1 filename="cert$num.pem" cert=$(jq '.pem' <<< $item) echo -e $cert >> $filename sed -e 's/^"//' -e 's/"$//' -i $filename doneEm seguida, crie um datacenter no cluster híbrido. Substitua os valores de variável pelos detalhes do cluster:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' 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 9 --sku $virtualMachineSKU \ --disk-capacity $noOfDisksPerNode \ --availability-zone falseEscolha o valor de
--skudentre as seguintes faixas de produto disponíveis:- 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
O valor de
--availability-zoneé definido comofalse. Para habilitar zonas de disponibilidade, defina esse valor comotrue. As zonas de disponibilidade aumentam o SLA (contrato de nível de serviço) de disponibilidade do serviço. Para obter mais informações, consulte SLA para serviços online.Não há suporte para zonas de disponibilidade em todas as regiões. As implantações falharão se você selecionar uma região em que não há suporte para zonas de disponibilidade. Para regiões com suporte, consulte a lista de regiões do Azure.
A implantação bem-sucedida de zonas de disponibilidade também está sujeita à disponibilidade de recursos de computação em todas as zonas da região específica. As implantações poderão falhar se a camada de produto selecionada ou a capacidade não estiver disponível em todas as zonas.
Agora que o novo datacenter foi criado, execute o
datacenter showcomando para exibir seus detalhes:resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' dataCenterName='dc1' az managed-cassandra datacenter show \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterNameO comando anterior exibe os nós de semente do novo datacenter.
Adicione os novos nós de semente do datacenter à configuração de nó de semente do datacenter existente no arquivo cassandra.yaml. Instale os certificados de fofoca da instância gerenciada que você coletou anteriormente no repositório de confiança para cada nó em seu cluster existente. Use o
keytoolcomando para cada certificado:keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePassSe você quiser adicionar mais datacenters, repita as etapas anteriores, mas precisará apenas dos nós de semente.
Importante
Se o cluster do Apache Cassandra existente tiver apenas um único datacenter e esse datacenter for o primeiro adicionado, verifique se o parâmetro
endpoint_snitchemcassandra.yamlestá definido comoGossipingPropertyFileSnitch.Se o código do aplicativo existente usar
QUORUMpara consistência, certifique-se de que, antes de alterar as configurações de replicação na próxima etapa, o código do aplicativo existente esteja usandoLOCAL_QUORUMpara se conectar ao cluster existente. Caso contrário, as atualizações ao vivo falharão depois que você alterar as configurações de replicação na etapa a seguir. Depois de alterar a estratégia de replicação, você poderá, se preferir, reverter paraQUORUM.Por fim, use a seguinte consulta de Linguagem de Consulta Cassandra para atualizar a estratégia de replicação em cada keyspace para abranger todos os datacenters no cluster.
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3};Você também precisa atualizar várias tabelas do sistema:
ALTER KEYSPACE "system_auth" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3} ALTER KEYSPACE "system_distributed" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3} ALTER KEYSPACE "system_traces" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3}Se os datacenters em seu cluster existente não imporem a criptografia cliente a nó (SSL) e você pretende que o código do aplicativo se conecte diretamente à Instância Gerenciada do Azure para Apache Cassandra, você também precisará habilitar o TLS/SSL no código do aplicativo.
Usar um cluster híbrido para migração em tempo real
As instruções anteriores fornecem diretrizes sobre como configurar um cluster híbrido. Essa abordagem também é uma ótima maneira de realizar uma migração sem interrupções e sem tempo de inatividade. O procedimento a seguir mostra como migrar um ambiente local ou outro ambiente de Cassandra que você deseja descomissionar, sem interrupção, para a Instância Gerenciada do Azure para Apache Cassandra.
Configurar um cluster híbrido. Siga as instruções anteriores.
Desabilite temporariamente os reparos automáticos na Instância Gerenciada do Azure para Apache Cassandra durante a migração:
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled falseNa CLI do Azure, use o comando a seguir para ser executado
nodetool rebuildem cada nó em seu novo datacenter da Instância Gerenciada do Azure para Apache Cassandra. Substitua<ip address>pelo endereço IP do nó. Substitua<sourcedc>pelo nome do datacenter existente, aquele do qual você está migrando:az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "<sourcedc>"=""Execute este comando somente depois de executar todas as etapas anteriores. Essa abordagem deve garantir que todos os dados históricos sejam replicados para seus novos datacenters na Instância Gerenciada do Azure para Apache Cassandra. Você pode executar
rebuildem um ou mais nós ao mesmo tempo. Execute em um nó de cada vez para reduzir o efeito no cluster existente. Execute em vários nós quando o cluster puder manipular a E/S adicional e a pressão de rede. Para a maioria das instalações, você pode executar apenas uma ou duas em paralelo para não sobrecarregar o cluster.Aviso
Você deve especificar a origem
data centerao executarnodetool rebuild. Se você fornecer o datacenter incorretamente na primeira tentativa, os intervalos de tokens serão copiados sem que os dados sejam copiados para suas tabelas não-sistema. As tentativas subsequentes falharão mesmo se você fornecer o centro de dados corretamente. Para resolver esse problema, exclua entradas para cada keyspace não-sistema emsystem.available_rangesutilizando a ferramenta de consultacqlshno datacenter de destino da Instância Gerenciada do Azure para Apache Cassandra:delete from system.available_ranges where keyspace_name = 'myKeyspace';Corte o código do aplicativo para apontar para os nós de semente em seus novos datacenters da Instância Gerenciada do Azure para Apache Cassandra.
Como também mencionado nas instruções de instalação híbrida, se os datacenters em seu cluster existente não imporem a criptografia de cliente para nó (SSL), habilite esse recurso no código do aplicativo. A Instância Gerenciada do Azure para Apache Cassandra impõe esse requisito.
Execute
ALTER KEYSPACEpara cada keyspace da mesma maneira que foi feito anteriormente. Agora você pode remover seus datacenters antigos.Execute o encerramento da ferramenta de nó para cada nó de datacenter antigo.
Alterne o código da aplicação de volta para
QUORUM, se for necessário ou preferido.Reativar reparos automáticos:
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled true
Solução de problemas
Se você encontrar um erro ao aplicar permissões à sua rede virtual usando a CLI do Azure, poderá aplicar a mesma permissão manualmente no portal do Azure. Um exemplo desse erro é "Não é possível localizar o usuário ou o serviço principal no banco de dados gráfico para e5007d2c-4b13-4a74-9b6a-605d99f03501". Para obter mais informações, consulte Usar o portal do Azure para adicionar o serviço principal do Azure Cosmos DB.
A atribuição de função Azure Cosmos DB é usada somente para fins de implantação. A Instância Gerenciada do Azure para Apache Cassandra não tem dependências de back-end no Azure Cosmos DB.
Limpar os recursos
Se você não quiser continuar a usar esse cluster de instância gerenciada, siga estas etapas para excluí-lo:
- No menu esquerdo do portal do Azure, selecione Grupos de recursos.
- Na lista, selecione o grupo de recursos que você criou para este início rápido.
- Na página Visão geral do grupo de recursos, selecione Excluir grupo de recursos.
- No próximo painel, insira o nome do grupo de recursos a ser excluído e selecione Excluir.


