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

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

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

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

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для работы с этой статьей потребуется 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. Проверьте выходные данные предыдущей команды. Убедитесь, что значение пирингаState теперь "Подключение". Вы также можете проверка этот результат, выполнив следующую команду:

    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
    

    Примечание.

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

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

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

  1. Разверните ресурс кластера. Замените <Subscription ID> идентификатором своей подписки. Развертывание может занять пять–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 можно выбрать из следующих доступных номеров 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. Зоны доступности расширяют действие соглашения об уровне обслуживания относительно доступности, применяемого к службе. Дополнительные сведения см. в статье об уровне обслуживания для Azure Управляемый экземпляр для Apache Cassandra.

    Предупреждение

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

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

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

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

    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". Теперь можно приступить к работе с кластером.