Краткое руководство. Создание Управляемого экземпляра Azure для кластера Apache Cassandra с помощью Azure CLI
Azure Управляемый экземпляр для Apache Cassandra — это полностью управляемая служба для чистых кластеров Apache Cassandra с открытым кодом. Служба также позволяет переопределить конфигурации в зависимости от конкретных потребностей каждой рабочей нагрузки, что позволяет обеспечить максимальную гибкость и контроль при необходимости.
В этом кратком руководстве описывается, как использовать команды Azure CLI для создания кластера с Управляемым экземпляром Azure для Apache Cassandra. Кроме того, в нем описано, как создавать центр обработки данных, а также увеличивать и уменьшать масштаб узлов в центре обработки данных.
Необходимые компоненты
Используйте среду 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 виртуальная сеть с подключением к локальной или локальной среде. Дополнительные сведения о подключении локальных сред к Azure см. в статье Подключение локальной сети к Azure.
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Внимание
Для работы с этой статьей потребуется Azure CLI 2.30.0 или более поздней версии. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
Создание кластера с управляемым экземпляром
Войдите на портал Azure
Укажите идентификатор подписки в Azure CLI:
az account set -s <Subscription_ID>
Затем создайте виртуальную сеть с выделенной подсетью в группе ресурсов:
az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
Примечание.
Для развертывания Управляемого экземпляра Azure для Apache Cassandra требуется доступ к Интернету. Развертывание будет завершаться сбоем в средах с ограниченным доступом к Интернету. Убедитесь, что вы не блокируете в виртуальной сети доступ к следующим жизненно важным службам Azure, которые необходимы для нормальной работы Управляемого экземпляра Cassandra:
- Хранилище Azure
- Azure Key Vault
- Масштабируемые наборы виртуальных машин Azure
- Мониторинг Azure
- Microsoft Entra ID
- Безопасность в Azure
Примените несколько специальных разрешений к виртуальной сети, которые необходимы для управляемого экземпляра. Выполните команду
az role assignment create
, заменив<subscriptionID>
,<resourceGroupName>
, и<vnetName>
соответствующими значениями: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>
Примечание.
Значения
assignee
иrole
в предыдущей команде фиксированы. Введите эти значения точно так же, как указано в команде. Иначе при создании кластера произойдет ошибка. Если при выполнении этой команды возникнут ошибки, возможно, у вас нет разрешений на ее выполнение. Обратитесь к администратору для получения разрешений.Затем создайте кластер в только что созданной виртуальной сети с помощью команды az managed-cassandra cluster create. Выполните следующую команду со значением переменной
delegatedManagementSubnetId
.Примечание.
Значение переменной
delegatedManagementSubnetId
, которое вы будете указывать ниже, точно совпадает со значением--scope
, указанным в команде выше:resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster_Name>' location='eastus2' delegatedManagementSubnetId='/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/<VNet name>/subnets/<subnet name>' initialCassandraAdminPassword='myPassword' cassandraVersion='3.11' # set to 4.0 for a Cassandra 4.0 cluster az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --initial-cassandra-admin-password $initialCassandraAdminPassword \ --cassandra-version $cassandraVersion \ --debug
Наконец, создайте центр обработки данных для кластера с тремя узлами, номером SKU виртуальной машины D8s V4 (цен. категория "Стандартный") и узлами с 4 подключенными дисками P30 с помощью команды az managed-cassandra datacenter create.
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 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
. Зоны доступности расширяют действие соглашения об уровне обслуживания относительно доступности, применяемого к службе. Дополнительные сведения см. в полном описании соглашения об уровне обслуживания здесь.Предупреждение
Зоны доступности поддерживаются не во всех регионах. При выборе региона, в котором зоны доступности не поддерживаются, развертывание завершится ошибкой. Список поддерживаемых регионов доступен здесь. Успешное развертывание зон доступности также зависит от доступности вычислительных ресурсов во всех зонах в заданном регионе. Развертывание может завершиться ошибкой, если выбранный номер SKU или емкость доступны не во всех зонах.
После создания центра обработки данных, если в нем требуется вертикально увеличить или вертикально уменьшить масштаб узлов, выполните команду az managed-cassandra datacenter update. Измените значение
node-count
параметра на требуемое значение:resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster Name>' dataCenterName='dc1' dataCenterLocation='eastus2' az managed-cassandra datacenter update \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --node-count 9
Подключение к кластеру
В Управляемом экземпляре Azure для Apache Cassandra нельзя создать узлы с общедоступными IP-адресами. Чтобы подключиться к только что созданному кластеру Cassandra, необходимо создать другой ресурс в виртуальной сети. Это может быть приложение или виртуальная машина с установленным средством обработки запросов с открытым кодом CQLSH от Apache. Для развертывания виртуальной машины Ubuntu можно использовать шаблон Resource Manager.
Подключение из CQLSH
После развертывания виртуальной машины используйте SSH для подключения к компьютеру и установки CQLSH, как показано в следующих командах:
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl
Подключение из приложения
Как и в CQLSH, подключение из приложения с использованием одного из поддерживаемых клиентских драйверов Apache Cassandra требует включения ssl-шифрования и отключения проверки сертификации. Примеры подключения к Azure Управляемый экземпляр для Apache Cassandra с помощью Java, .NET, Node.js и Python.
Отключение проверки сертификата рекомендуется, так как проверка сертификата не будет работать, если вы не сопоставляете адреса I.P узлов кластера с соответствующим доменом. Если у вас есть внутренняя политика, которая требует проверки SSL-сертификата для любого приложения, это можно упростить, добавив такие записи, как 10.0.1.5 host1.managedcassandra.cosmos.azure.com
в файле узлов для каждого узла. При использовании этого подхода также необходимо добавить новые записи при масштабировании узлов.
Для Java мы также настоятельно рекомендуем включить спекулятивную политику выполнения, где приложения чувствительны к задержке хвоста. Вы можете найти демонстрацию, иллюстрируя, как это работает и как включить политику здесь.
Примечание.
В большинстве случаев не следует настраивать или устанавливать сертификаты (rootCA, узел или клиент, truststores и т. д.) для подключения к Azure Управляемый экземпляр для Apache Cassandra. Шифрование SSL можно включить с помощью хранилища доверия по умолчанию и пароля среды выполнения, используемой клиентом (см. примеры java, .NET, Node.js и Python), так как azure Управляемый экземпляр для сертификатов Apache Cassandra будет доверять этой среде. В редких случаях, если сертификат не является доверенным, может потребоваться добавить его в хранилище доверия.
Настройка сертификатов клиента (необязательно)
Настройка сертификатов клиента является необязательным. Клиентское приложение может подключаться к Azure Управляемый экземпляр для Apache Cassandra до тех пор, пока выполнены описанные выше действия. Однако при желании можно также создать и настроить сертификаты клиента для проверки подлинности. Как правило, существует два способа создания сертификатов:
- Самозаверяющие сертификаты. Они включают закрытый и открытый (без использования центра сертификации) сертификат для каждого узла. В нашем примере все сертификаты должны быть открытыми.
- Сертификаты, подписанные центром сертификации. Центр сертификации может быть самозаверяющим или общедоступным. В нашем примере потребуется сертификат корневого центра сертификации (воспользуйтесь инструкциями по подготовке SSL-сертификатов для рабочей среды) и все промежуточные сертификаты, если они есть.
Если вы хотите реализовать проверку подлинности сертификата между клиентами или взаимную проверку подлинности на уровне транспорта (mTLS), необходимо предоставить сертификаты через Azure CLI. Следующая команда отправит и применит сертификаты клиента к хранилищу доверия для кластера Cassandra Управляемый экземпляр (т. е. не нужно изменять cassandra.yaml
параметры). После применения кластеру потребуется Cassandra проверить сертификаты при подключении клиента (смrequire_client_auth: true
. в client_encryption_options Cassandra).
resourceGroupName='<Resource_Group_Name>'
clusterName='<Cluster Name>'
az managed-cassandra cluster update \
--resource-group $resourceGroupName \
--cluster-name $clusterName \
--client-certificates /usr/csuser/clouddrive/rootCert.pem /usr/csuser/clouddrive/intermediateCert.pem
Устранение неполадок
Если при применении разрешений к виртуальной сети с помощью Azure CLI возникла ошибка, например, информирующая о том, что не удается найти пользователя или субъект-службу в базе данных графа (Cannot find user or service principal in graph database for 'e5007d2c-4b13-4a74-9b6a-605d99f03501'), это же разрешение можно применить вручную на портале Azure. Узнайте, как это сделать, здесь.
Примечание.
Назначение роли Azure Cosmos DB используется только в целях развертывания. В Управляемом экземпляре Azure для Apache Cassandra нет внутренних зависимостей от Azure Cosmos DB.
Очистка ресурсов
Вы можете удалить группу ресурсов, управляемый экземпляр и все связанные ресурсы, если они больше не нужны, выполнив команду az group delete
:
az group delete --name <Resource_Group_Name>
Следующие шаги
Из этого краткого руководства вы узнали, как создать Управляемый экземпляр Azure для кластера Apache Cassandra с помощью Azure CLI. Теперь можно приступить к работе с кластером: