Aracılığıyla paylaş


Hızlı Başlangıç: Apache Cassandra için Azure Yönetilen Örneği ile karma küme yapılandırma

Apache Cassandra için Azure Yönetilen Örneği, saf açık kaynak Apache Cassandra kümeleri için tam olarak yönetilen bir hizmettir. Hizmet ayrıca her iş yükünün belirli gereksinimlerine bağlı olarak yapılandırmaların geçersiz kılınmasına olanak tanıyarak gerektiğinde maksimum esneklik ve denetim sağlar.

Bu hızlı başlangıçta hibrit küme yapılandırmak için Azure CLI komutlarının nasıl kullanılacağı gösterilmektedir. Şirket içinde veya şirket içinde barındırılan bir ortamda mevcut veri merkezleriniz varsa, bu kümeye başka veri merkezleri eklemek ve bunların bakımını yapmak için Apache Cassandra için Azure Yönetilen Örneği'ni kullanabilirsiniz.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Karma küme yapılandırma

  1. Azure portalında oturum açın ve Sanal Ağ kaynağınıza gidin.

  2. Alt ağlar sekmesini açın ve yeni bir alt ağ oluşturun. Alt ağ ekle formundaki alanlar hakkında daha fazla bilgi edinmek için Sanal Ağ makalesine bakın:

    Add a new subnet to your Virtual Network.

    Not

    Apache Cassandra için Azure Yönetilen Örneği dağıtımı için İnternet erişimi gerekir. İnternet erişiminin kısıtlandığı ortamlarda dağıtım başarısız olur. Yönetilen Cassandra'nın düzgün çalışması için gerekli olan aşağıdaki önemli Azure hizmetlerine sanal ağınızdaki erişimi engellemediğinizden emin olun. Ip adresi ve bağlantı noktası bağımlılıklarının kapsamlı bir listesini burada da bulabilirsiniz.

    • Azure Storage
    • Azure KeyVault
    • Azure Sanal Makine Ölçek Kümeleri
    • Azure İzleme
    • Microsoft Entra ID
    • Azure Güvenlik
  3. Şimdi Azure CLI kullanarak Cassandra Yönetilen Örneği'nin gerektirdiği sanal ağa ve alt ağa bazı özel izinler uygulayacağız. az role assignment create komutunu kullanarak , <resourceGroupName>ve <vnetName> değerlerini uygun değerlerle değiştirin<subscriptionID>:

    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>
    

    Not

    assignee Önceki komuttaki ve role değerleri sırasıyla sabit hizmet ilkesi ve rol tanımlayıcılarıdır.

  4. Ardından, karma kümemiz için kaynakları yapılandıracağız. Zaten bir kümeniz olduğundan, buradaki küme adı yalnızca mevcut kümenizin adını tanımlayan mantıksal bir kaynak olacaktır. Aşağıdaki betikte ve clusterNameOverride değişkenlerini tanımlarken clusterName mevcut kümenizin adını kullandığınızdan emin olun.

    Ayrıca, en azından mevcut veri merkezinizdeki çekirdek düğümlerine ve düğümden düğüme şifreleme için gereken dedikodu sertifikalarına ihtiyacınız vardır. Apache Cassandra için Azure Yönetilen Örneği, veri merkezleri arasındaki iletişim için düğümden düğüme şifreleme gerektirir. Mevcut kümenizde düğümden düğüme şifreleme uygulanmadıysa bunu uygulamanız gerekir; buradaki belgelere bakın. Sertifikaların konumunun yolunu sağlamanız gerekir. Her sertifika PEM biçiminde olmalıdır; örneğin. -----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE----- Genel olarak, sertifikaları uygulamanın iki yolu vardır:

    1. Otomatik olarak imzalanan sertifikalar. Bu, her düğüm için özel ve genel (CA olmayan) bir sertifika anlamına gelir. Bu durumda tüm genel sertifikalara ihtiyacımız vardır.

    2. Sertifika yetkilisi tarafından imzalanan sertifikalar. Bu otomatik olarak imzalanan bir CA, hatta genel bir CA olabilir. Bu durumda kök CA sertifikasına (SSL sertifikalarını üretim için hazırlama yönergelerine bakın) ve tüm aracılara (varsa) ihtiyacımız vardır.

    İsteğe bağlı olarak, istemciden düğüme sertifika kimlik doğrulamasını veya karşılıklı Aktarım Katmanı Güvenliği'ni (mTLS) de uygulamak istiyorsanız, sertifikaları karma kümeyi oluştururken kullandığınız biçimde sağlamanız gerekir. Aşağıdaki Azure CLI örneğine bakın. Sertifikalar parametresinde --client-certificates sağlanır. Bu işlem, istemci sertifikalarınızı Cassandra Yönetilen Örnek kümenizin güven deposuna yükler ve uygular (örn. cassandra.yaml ayarlarını düzenlemeniz gerekmez). Uygulandıktan sonra, kümeniz bir istemci bağlandığında cassandra'nın sertifikaları doğrulamasını gerektirir (bkz require_client_auth: true . Cassandra client_encryption_options).

    Not

    Aşağıda sağlanacak değişkenin delegatedManagementSubnetId değeri, yukarıdaki komutta sağladığınız değerle --scope tam olarak aynıdır:

    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 is not 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_signed
    

    Not

    Kümenizde düğümden düğüme ve istemciden düğüme şifreleme zaten varsa, mevcut istemcinizin ve/veya dedikodu SSL sertifikalarınızın nerede tutulduğunu bilmeniz gerekir. Emin değilseniz, sertifikaları yazdırmak için komutunu çalıştırabilmeniz keytool -list -keystore <keystore-path> -rfc -storepass <password> gerekir.

  5. Küme kaynağı oluşturulduktan sonra, küme kurulum ayrıntılarını almak için aşağıdaki komutu çalıştırın:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster'
    
    az managed-cassandra cluster show \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName \
    
  6. Önceki komut yönetilen örnek ortamı hakkında bilgi döndürür. Mevcut veri merkezinizdeki düğümler için güven deposuna yükleyebilmeniz için dedikodu sertifikalarına ihtiyacınız olacaktır. Aşağıdaki ekran görüntüsünde, önceki komutun çıkışı ve sertifikaların biçimi gösterilmektedir:

    Get the certificate details from the cluster.

    Not

    Yukarıdaki komuttan döndürülen sertifikalar, metin olarak temsil edilen satır sonları içerir, örneğin \r\n. Her sertifikayı bir dosyaya kopyalamanız ve mevcut veri merkezinizin güven deposuna aktarmayı denemeden önce biçimlendirmeniz gerekir.

    İpucu

    gossipCertificates Yukarıdaki ekran görüntüsünde gösterilen dizi değerini bir dosyaya kopyalayın ve sertifikaları biçimlendirmek ve her biri için ayrı pem dosyaları oluşturmak için aşağıdaki bash betiğini kullanın (platformunuz için jq'yi indirip yüklemeniz gerekir).

    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
    done
    
  7. Ardından karma kümede yeni bir veri merkezi oluşturun. Değişken değerlerini küme ayrıntılarınızla değiştirdiğinden emin olun:

    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 false
    

    Not

    için değeri --sku aşağıdaki kullanılabilir SKU'lardan seçilebilir:

    • 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

    Ayrıca değerinin --availability-zone olarak ayarlandığını falseda unutmayın. Kullanılabilirlik alanlarını etkinleştirmek için bunu olarak trueayarlayın. Kullanılabilirlik alanları, hizmetin kullanılabilirlik SLA'sını artırır. Diğer ayrıntılar için burada SLA ayrıntılarının tamamını gözden geçirin.

    Uyarı

    Kullanılabilirlik alanları tüm bölgelerde desteklenmez. Kullanılabilirlik alanlarının desteklenmediği bir bölge seçerseniz dağıtımlar başarısız olur. Desteklenen bölgeler için buraya bakın. Kullanılabilirlik alanlarının başarılı dağıtımı, belirtilen bölgedeki tüm bölgelerdeki işlem kaynaklarının kullanılabilirliğine de tabidir. Seçtiğiniz SKU veya kapasite tüm bölgelerde kullanılamıyorsa dağıtımlar başarısız olabilir.

  8. Yeni veri merkezi oluşturulduğuna göre ayrıntılarını görüntülemek için show datacenter komutunu çalıştırın:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster'
    dataCenterName='dc1'
    
    az managed-cassandra datacenter show \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --data-center-name $dataCenterName
    
  9. Önceki komut yeni veri merkezinin çekirdek düğümlerinin çıkışını oluşturur:

    Screenshot of how to get datacenter details.

  10. Şimdi yeni veri merkezinin çekirdek düğümlerini cassandra.yaml dosyasında mevcut veri merkezinizin çekirdek düğümü yapılandırmasına ekleyin. Daha önce topladığınız yönetilen örnek dedikodu sertifikalarını, her sertifika için komutunu kullanarak keytool mevcut kümenizdeki her düğüm için güven deposuna yükleyin:

    keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePass
    

    Not

    Daha fazla veri merkezi eklemek istiyorsanız, yukarıdaki adımları yineleyebilirsiniz, ancak yalnızca çekirdek düğümlere ihtiyacınız vardır.

    Önemli

    Mevcut Apache Cassandra kümenizde yalnızca tek bir veri merkezi varsa ve ilk kez bir veri merkezi ekleniyorsa içindeki parametresinin cassandra.yaml olarak GossipingPropertyFileSnitchayarlandığından endpoint_snitch emin olun.

    Önemli

    Mevcut uygulama kodunuz tutarlılık için ÇEKIRDEK kullanıyorsa, aşağıdaki adımda çoğaltma ayarlarını değiştirmeden önce mevcut uygulama kodunuzun mevcut kümenize bağlanmak için LOCAL_QUORUM kullandığından emin olmanız gerekir (aksi takdirde, aşağıdaki adımda çoğaltma ayarlarını değiştirdikten sonra canlı güncelleştirmeler başarısız olur). Çoğaltma stratejisi değiştirildikten sonra tercih ederseniz ÇEKIRDEK'e geri dönebilirsiniz.

  11. Son olarak, her anahtar alanında çoğaltma stratejisini küme genelindeki tüm veri merkezlerini içerecek şekilde güncelleştirmek için aşağıdaki CQL sorgusunu kullanın:

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3};
    

    Ayrıca birkaç sistem tablosunu da güncelleştirmeniz gerekir:

    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}
    

    Önemli

    Mevcut kümenizdeki veri merkezi istemciden düğüme şifrelemeyi (SSL) zorunlu kılmazsa ve uygulama kodunuzun doğrudan Cassandra Yönetilen Örneği'ne bağlanmasını planlıyorsanız, uygulama kodunuzda SSL'yi de etkinleştirmeniz gerekir.

Gerçek zamanlı geçiş için karma küme kullanma

Yukarıdaki yönergeler karma küme yapılandırmaya yönelik yönergeler sağlar. Ancak bu, sorunsuz bir sıfır kapalı kalma süresi geçişi elde etmenin de harika bir yoludur. İş yükünüzü Apache Cassandra için Azure Yönetilen Örneği'nde çalıştırmak yerine, sıfır kapalı kalma süresiyle yetkisini almak istediğiniz bir şirket içi veya başka bir Cassandra ortamınız varsa, aşağıdaki adımların şu sırayla tamamlanması gerekir:

  1. Karma kümeyi yapılandırma - Yukarıdaki yönergeleri izleyin.

  2. Geçiş süresi boyunca Apache Cassandra için Azure Yönetilen Örneği'nde otomatik onarımları geçici olarak devre dışı bırakın:

    az managed-cassandra cluster update \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName --repair-enabled false
    
  3. Azure CLI'da, apache cassandra için yeni Azure Yönetilen Örneği veri merkezinizdeki her düğümde yürütmek nodetool rebuild üzere aşağıdaki komutu çalıştırın; öğesini <ip address> düğümün IP adresiyle ve <sourcedc> mevcut veri merkezinizin (geçiş yaptığınız veri merkezi) adıyla değiştirin:

    az managed-cassandra cluster invoke-command \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --host <ip address> \
      --command-name nodetool --arguments rebuild="" "<sourcedc>"=""
    

    Bunu yalnızca önceki tüm adımlar gerçekleştirildikten sonra çalıştırmanız gerekir. Bu, tüm geçmiş verilerin Apache Cassandra için Azure Yönetilen Örneği'ndeki yeni veri merkezlerinize çoğaltılmasını sağlamalıdır. Yeniden derlemeyi aynı anda bir veya daha fazla düğümde çalıştırabilirsiniz. Mevcut küme üzerindeki etkiyi azaltmak için bir kerede bir düğümde çalıştırın. Küme ek G/Ç ve ağ baskısını işleyebilirken birden çok düğümde çalıştırın. Çoğu yüklemede, kümeyi aşırı yüklememek için yalnızca bir veya iki paralel çalıştırabilirsiniz.

    Uyarı

    komutunu çalıştırırken nodetool rebuildkaynak veri merkezini belirtmeniz gerekir. İlk denemede veri merkezini yanlış bir şekilde sağlarsanız, bu durum sistem dışı tablolarınız için veriler kopyalanmadan belirteç aralıklarının kopyalanmasını sağlar. Veri merkezini doğru şekilde sağlasanız bile sonraki girişimler başarısız olur. Hedef Cassandra MI veri merkezinizdeki sorgu aracı aracılığıyla cqlsh içindeki system.available_ranges sistem dışı her anahtar alanının girdilerini silerek bu sorunu çözebilirsiniz:

    delete from system.available_ranges where keyspace_name = 'myKeyspace';
    
  4. Apache Cassandra veri merkezlerindeki yeni Azure Yönetilen Örneğinizdeki çekirdek düğümleri işaret edecek şekilde uygulama kodunuzu kesin.

    Önemli

    Karma kurulum yönergelerinde de belirtildiği gibi, mevcut kümenizdeki veri merkezi(ler) istemciden düğüme şifrelemeyi (SSL) zorunlu kılmazsa, Cassandra Yönetilen Örneği bunu zorunlu kılacağı için bunu uygulama kodunuzda etkinleştirmeniz gerekir.

  5. Her anahtar alanı için daha önce olduğu gibi ALTER KEYSPACE komutunu çalıştırın, ancak şimdi eski veri merkezinizi kaldırıyor.

  6. Her eski veri merkezi düğümü için nodetool yetkisini alma işlemini çalıştırın.

  7. Uygulama kodunuzu yeniden çekirdek olarak değiştirin (gerekirse/tercih edilirse).

  8. Otomatik onarımları yeniden etkinleştirin:

    az managed-cassandra cluster update \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName --repair-enabled true
    

Sorun giderme

Azure CLI kullanarak Sanal Ağ izin uygularken 'e5007d2c-4b13-4a74-9b6a-605d99f03501' için graf veritabanında kullanıcı veya hizmet sorumlusu bulunamıyor gibi bir hatayla karşılaşırsanız, Aynı izni Azure portalından el ile uygulayabilirsiniz. Bunun nasıl yapıldığını burada öğrenin.

Not

Azure Cosmos DB rol ataması yalnızca dağıtım amacıyla kullanılır. Apache Cassandra için Azure Yönetilen Örneği'nin Azure Cosmos DB'de arka uç bağımlılığı yoktur.

Kaynakları temizleme

Bu yönetilen örnek kümesini kullanmaya devam etmeyecekseniz, aşağıdaki adımları izleyerek silin:

  1. Azure portalının sol tarafındaki menüden Kaynak grupları'nı seçin.
  2. Listeden bu hızlı başlangıç için oluşturduğunuz kaynak grubunu seçin.
  3. Kaynak grubuna Genel Bakış bölmesinde Kaynak grubunu sil'i seçin.
  4. Sonraki pencerede, silinecek kaynak grubunun adını girin ve sil'i seçin.

Sonraki adımlar

Bu hızlı başlangıçta, Azure CLI ve Apache Cassandra için Azure Yönetilen Örneği kullanarak karma küme oluşturmayı öğrendiniz. Artık kümeyle çalışmaya başlayabilirsiniz.