Поделиться через


Краткое руководство: настройка кластера с несколькими регионами с помощью службы "Управляемый экземпляр Azure для Apache Cassandra"

Azure Управляемый экземпляр для Apache Cassandra — это полностью управляемая служба для чистых кластеров Apache Cassandra с открытым кодом. Служба также позволяет переопределить конфигурации в зависимости от конкретных потребностей каждой рабочей нагрузки для максимальной гибкости и управления.

В этом кратком руководстве показано, как с помощью команд Azure CLI настроить кластер с несколькими регионами в Azure.

Необходимые компоненты

  • Для этой статьи требуется Azure CLI версии 2.30.0 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
  • Используйте виртуальную сеть Azure с подключением к вашей локальной или оборудованной среде. Дополнительные сведения о подключении локальных сред к Azure см. в статье "Подключение локальной сети к Azure".

Настройка сетевой среды

Так как все центры обработки данных, подготовленные этой службой, должны быть развернуты в выделенных подсетях с помощью внедрения виртуальной сети, настройте соответствующий пиринг сети заранее. Для этого краткого руководства создайте кластер с двумя центрами обработки данных в отдельных регионах: восточная часть США и восточная часть США 2. Сначала создайте виртуальные сети для каждого региона.

  1. Войдите на портал Azure.

  2. Создайте группу ресурсов с именем cassandra-mi-multi-region:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. Создайте первую виртуальную сеть в восточной части США 2 с выделенной подсетью:

    az network vnet create \
      --name vnetEastUs2 \
      --location eastus2 \
      --resource-group cassandra-mi-multi-region \
      --address-prefix 10.0.0.0/16 \
      --subnet-name dedicated-subnet
    
  4. Создайте вторую виртуальную сеть в Восточной части США, а также выделенную подсеть:

     az network vnet create \
       --name vnetEastUs \
       --location eastus \
       --resource-group cassandra-mi-multi-region \
       --address-prefix 192.168.0.0/16 \
       --subnet-name dedicated-subnet
    

    Мы сознательно добавляем различные диапазоны IP-адресов, чтобы гарантировать отсутствие ошибок при пирингу.

  5. Соедините первую виртуальную сеть со второй виртуальной сетью.

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet1ToMyVnet2 \
      --vnet-name vnetEastUs2 \
      --remote-vnet vnetEastUs \
      --allow-vnet-access \
      --allow-forwarded-traffic
    
  6. Чтобы подключить две виртуальные сети, создайте другой пиринг между второй виртуальной сетью и первой:

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet2ToMyVnet1 \
      --vnet-name vnetEastUs \
      --remote-vnet vnetEastUs2 \
      --allow-vnet-access \
      --allow-forwarded-traffic
    

    При добавлении дополнительных регионов для каждой виртуальной сети требуется пиринг от неё ко всем другим виртуальным сетям и от всех других виртуальных сетей к ней.

  7. Проверьте выходные данные предыдущей команды. Убедитесь, что значение peeringState теперь равно Connected. Вы также можете проверить этот результат, выполнив следующую команду:

    az network vnet peering show \
      --name MyVnet1ToMyVnet2 \
      --resource-group cassandra-mi-multi-region \
      --vnet-name vnetEastUs2 \
      --query peeringState
    
  8. Примените некоторые специальные разрешения для обеих виртуальных сетей. Для Azure Управляемый экземпляр для Apache Cassandra требуются эти разрешения. Выполните следующую команду. Замените <SubscriptionID> идентификатором своей подписки.

    az role assignment create \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2
    
    az role assignment create     \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs
    

    assignee Значенияrole, приведенные в предыдущей команде, являются фиксированными значениями. Введите эти значения точно, как показано в команде.

Если при запуске az role assignment createвозникают ошибки, возможно, у вас нет разрешений на его запуск. Обратитесь к администратору с разрешениями.

Создание кластера с несколькими регионами

  1. Разверните ресурс кластера. Замените <Subscription ID> идентификатором своей подписки. Развертывание может занять от 5 до 10 минут.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    initialCassandraAdminPassword='myPassword'
    
     az managed-cassandra cluster create \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName \
       --location $location \
       --delegated-management-subnet-id $delegatedManagementSubnetId \
       --initial-cassandra-admin-password $initialCassandraAdminPassword \
       --debug
    
  2. После создания ресурса кластера вы можете создать центр обработки данных. Сначала создайте центр обработки данных в восточной части США 2. Замените <SubscriptionID> идентификатором своей подписки. Это действие может занять до 10 минут.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus2'
    dataCenterLocation='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    
     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
    
  3. Создайте центр обработки данных на востоке США. Замените <SubscriptionID> идентификатором своей подписки.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus'
    dataCenterLocation='eastus'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs/subnets/dedicated-subnet'
    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
    

    Можно выбрать значение для --sku следующих доступных уровней продуктов:

    • 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

    Обратите внимание, что для --availability-zone установлено значение false. Чтобы включить зоны доступности, задайте для него значение true. Зоны доступности повышают уровень доступности в рамках соглашения об уровне обслуживания (SLA) службы. Дополнительные сведения см. в соглашениях об уровне обслуживания для Управляемого экземпляра Azure для Apache Cassandra.

    Зоны доступности не поддерживаются во всех регионах. Развертывание не удается, если выбрать регион, где зоны доступности не поддерживаются. Сведения о поддерживаемых регионах см. в регионах Azure с зонами доступности.

    Успешное развертывание зон доступности также зависит от доступности вычислительных ресурсов во всех зонах в определенном регионе. Развертывание может завершиться ошибкой, если выбранный уровень продукта или емкость недоступен во всех зонах.

  4. После создания второго датацентра проверьте статус узлов, чтобы убедиться, что все узлы Cassandra успешно запущены.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster status\
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. Затем используйте CQLSH для подключения к кластеру. Используйте следующий запрос CQL, чтобы обновить стратегию репликации в каждом пространстве ключей, чтобы включить все центры обработки данных в кластере (системные таблицы обновляются автоматически):

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. Наконец, если вы добавите центр обработки данных в кластер, который уже содержит данные, необходимо выполнить репликацию rebuild исторических данных. В этом случае предположим, что в dc-eastus2 центре обработки данных уже есть данные. В Azure CLI выполните следующую команду, чтобы запустить nodetool rebuild на каждом узле в новом dc-eastus центре обработки данных. Замените <ip address> IP-адрес узла:

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

    Не разрешайте клиентам приложений записывать данные в новый центр обработки данных до тех пор, пока не будут применены изменения репликации пространства ключей. В противном случае перестроение не работает. Затем необходимо создать запрос на поддержку, чтобы наша команда выполнила repair для вас.

Устранение неполадок

При возникновении ошибки при применении разрешений к виртуальной сети с помощью Azure CLI можно применить то же разрешение вручную на портале Azure. Пример ошибки : "Не удается найти пользователя или субъекта-службы в графовой базе данных". e5007d2c-4b13-4a74-9b6a-605d99f03501 Дополнительные сведения см. на портале Azure для добавления субъекта-службы Azure Cosmos DB.

Назначение роли Azure Cosmos DB используется только в целях развертывания. Управляемый экземпляр Azure для Apache Cassandra не имеет внутренних зависимостей в Azure Cosmos DB.

Очистка ресурсов

Если вы не собираетесь продолжать использовать этот кластер управляемых экземпляров, выполните следующие действия, чтобы удалить его:

  1. На портале Azure в меню слева выберите Группы ресурсов.
  2. В списке выберите группу ресурсов, созданную для этого краткого руководства.
  3. В области Обзор на странице группы ресурсов выберите Удалить группу ресурсов.
  4. На следующей панели введите имя группы ресурсов, чтобы удалить, и нажмите кнопку "Удалить".

Следующий шаг

Из этого краткого руководства вы узнали, как создать кластер с несколькими регионами с помощью Azure CLI и Управляемого экземпляра Azure для Apache Cassandra. Теперь можно приступить к работе с кластером.