Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Instância Gerenciada do Azure para Apache Cassandra é um serviço totalmente gerenciado para clusters Apache Cassandra de código aberto puro. 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 guia de 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 mais informações, veja Get started with Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
- Este artigo requer a CLI do Azure versão 2.30.0 ou posterior. Se você estiver usando o Azure Cloud Shell, a versão mais recente 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 vá para seu 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 onde o acesso à Internet é restrito. Certifique-se de que não está a bloquear o acesso na sua rede virtual aos seguintes serviços vitais do Azure que são necessários para que a Instância Gerida do Azure para Apache Cassandra funcione corretamente. Para obter uma lista de dependências de porta e endereço IP, consulte Regras de rede de saída necessárias.
- Storage do Azure
- Azure Key Vault
- Conjuntos de Dimensionamento de Máquinas Virtuais do Azure
- Azure Monitor
- Microsoft Entra ID
- Microsoft Defender para a Cloud
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>com os 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 entidade de serviço e de função, respectivamente.Configure recursos para seu 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 ao definir
clusterNameeclusterNameOverridevariáveis no script a seguir.Você também precisa, no mínimo, dos nós primários do seu datacenter existente e dos certificados de comunicação necessários para a criptografia nó a nó. A Instância Gerenciada do Azure para Apache Cassandra requer criptografia nó a nó para comunicação entre datacenters. Se você não tiver a criptografia nó a nó implementada em seu cluster existente, precisará implementá-la. Para obter mais informações, consulte Criptografia nó a nó. Forneça o caminho para o local dos certificados. Cada certificado deve estar no formato PEM (Privacy Enhanced Mail), por exemplo,
-----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----. Em geral, há duas maneiras de implementar certificados:- Certificados autoassinados. Certificados privados e públicos sem Autoridade de Certificação (CA) para cada nó. Nesse caso, você precisa de todos os certificados públicos.
- Certificados assinados por uma autoridade de certificação. Certificados emitidos por uma autoridade de certificação autoassinada ou pública. Nesse caso, você precisa do certificado de autoridade de certificação raiz e 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 de cliente para nó ou TLS (Transport Layer Security) mútuo, forneça os certificados no mesmo formato de 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 os certificados do cliente ao repositório de confiança para a sua Instância Gerida do Azure para o cluster Apache Cassandra. Não é necessário editar
cassandra.yamlas configurações. Depois que os certificados são aplicados, o cluster exige que Cassandra verifique os certificados quando um cliente se conecta. Para obter mais informações, consulterequire_client_auth: trueem Cassandra client_encryption_options.O valor da
delegatedManagementSubnetIdvariável fornecida 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 nó a nó e cliente a nó, você deve saber onde estão mantidos seus certificados TLS/SSL existentes ou de troca de mensagens. Se estiver incerto, execute
keytool -list -keystore <keystore-path> -rfc -storepass <password>para imprimir os certificados.Depois que o recurso de cluster for criado, execute o seguinte comando para obter os detalhes da 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 de instância gerenciada. Você precisa dos certificados de gossip para que possa instalá-los na loja de confiança para os nós no 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 seu armazenamento confiável existente.Copie o valor da
gossipCertificatesmatriz mostrado na captura de tela para um arquivo. Use o seguinte script Bash para formatar os certificados e criar arquivos PEM separados para cada um. Para baixar o script Bash, consulte Baixar 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 novo datacenter no cluster híbrido. Substitua os valores das variáveis 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 para
--skuentre as seguintes camadas 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 for
--availability-zoneé definido comofalse. Para habilitar zonas de disponibilidade, defina esse valor comotrue. As zonas de disponibilidade aumentam o contrato de nível de serviço (SLA) de disponibilidade do serviço. Para obter mais informações, consulte SLA para serviços online.As zonas de disponibilidade não são suportadas em todas as regiões. As implantações falham se você selecionar uma região onde as zonas de disponibilidade não são suportadas. 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 na região específica. As implantações podem 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 inicialização do novo datacenter.
Adicione os nós semente do novo centro de dados à configuração do nó semente do centro de dados existente no arquivo cassandra.yaml. Instale os certificados de gossip da managed instance que coletou anteriormente no repositório de confiança para cada nó do 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 quiser adicionar mais datacenters, repita as etapas anteriores, mas precisará apenas dos nós semente.
Importante
Se o cluster Apache Cassandra existente tiver apenas um único datacenter e este datacenter for o primeiro adicionado, certifique-se de que o
endpoint_snitchparâmetro incassandra.yamlesteja definido comoGossipingPropertyFileSnitch.Se o código do aplicativo existente usa
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 useLOCAL_QUORUMpara se conectar ao cluster existente. Caso contrário, as atualizações em tempo real 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ê pode reverter paraQUORUMse preferir.Por fim, use a seguinte consulta Cassandra Query Language para atualizar a estratégia de replicação em cada espaço de chave para incluir 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 criptografia de cliente para nó (SSL) e você pretender que o código do aplicativo se conecte diretamente à Instância Gerenciada do Azure para Apache Cassandra, também precisará habilitar TLS/SSL no código do aplicativo.
Usar um cluster híbrido para migração em tempo real
As instruções anteriores fornecem orientação sobre como configurar um cluster híbrido. Essa abordagem também é uma ótima maneira de alcançar uma migração sem tempo de inatividade. O procedimento a seguir mostra como migrar um ambiente local ou outro ambiente Cassandra que você deseja descomissionar, com tempo de inatividade zero, para a Instância Gerenciada do Azure para Apache Cassandra.
Configure um cluster híbrido. Siga as instruções anteriores.
Desative 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 seguinte comando para executar
nodetool rebuildem cada nó em sua nova Instância Gerenciada do Azure para o datacenter Apache Cassandra. Substitua<ip address>pelo endereço IP do servidor. Substitua<sourcedc>pelo nome do seu 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. Executado em vários nós quando o cluster pode lidar com a E/S extra e a pressão da 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 token serão copiados sem que os dados sejam copiados para suas tabelas que não sejam do sistema. As tentativas subsequentes falham mesmo se você fornecer o datacenter corretamente. Para resolver esse problema, exclua entradas para cada espaço de chave que não seja do sistema emsystem.available_rangesusando acqlshferramenta de consulta em sua instância gerenciada do Azure de destino para o datacenter Apache Cassandra.delete from system.available_ranges where keyspace_name = 'myKeyspace';Redirecione o código da aplicação para apontar para os nós de origem na sua nova Instância Gerida do Azure para datacenters Apache Cassandra.
Como também mencionado nas instruções de configuração híbrida, se os datacenters em seu cluster existente não imporem 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 espaço de chave, da mesma maneira que feito anteriormente. Agora você pode remover seus datacenters antigos.Execute node tool decommission para cada nó antigo do datacenter.
Mude o código do aplicativo de volta para
QUORUM, se necessário ou preferido.Reative os reparos automáticos:
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled true
Resolução de Problemas
Se encontrar um erro ao aplicar permissões à sua rede virtual utilizando a CLI do Azure, pode aplicar a mesma permissão manualmente a partir do portal do Azure. Um exemplo desse erro é "Não é possível encontrar o utilizador ou o principal de serviço no banco de dados gráfico para e5007d2c-4b13-4a74-9b6a-605d99f03501." Para obter mais informações, consulte adicionar o principal de serviço do Azure Cosmos DB através do portal do Azure.
A atribuição de função do Azure Cosmos DB é usada apenas 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.
Clean up resources (Limpar recursos)
Se você não quiser continuar a usar esse cluster de instância gerenciado, 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.
- No painel Visão geral do grupo de recursos, selecione Excluir grupo de recursos.
- No painel seguinte, introduza o nome do grupo de recursos a eliminar e, em seguida, selecione Eliminar.