你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Apache Cassandra 的 Azure 托管实例是针对纯开源 Apache Cassandra 群集的完全托管服务。 该服务还允许根据每个工作负载的具体需求来替代配置,从而在需要时实现最大的灵活性和控制。
本快速入门演示如何使用 Azure 命令行接口 (CLI) 命令创建包含 Azure 托管实例 for Apache Cassandra 的群集。 它还演示如何创建数据中心,以及如何在数据中心内纵向扩展或缩减节点。
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
与自承载环境或本地环境连接的 Azure 虚拟网络。 有关将本地环境连接到 Azure 的详细信息,请参阅 将本地网络连接到 Azure。
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
重要
本文需要 Azure CLI 2.30.0 或更高版本。 如果你使用的是 Azure Cloud Shell,则表示已安装最新版本。
创建托管实例群集
登录到 Azure 门户。
在 Azure CLI 中设置订阅 ID:
az account set --subscription <Subscription_ID>
接下来,在资源组中创建包含专用子网的虚拟网络:
az network vnet create --name <VNet_Name> --location eastus2 \ --resource-group <Resource_Group_Name> --subnet-name <Subnet Name>
注意
部署 Azure Managed Instance for Apache Cassandra 需要 Internet 访问权限。 在限制 Internet 访问权限的环境中,部署将失败。 请确保不会阻止虚拟网络中访问托管 Cassandra 正常工作所需的以下 Azure 服务:
- Azure 存储
- Azure KeyVault
- Azure 虚拟机规模集 (VMSS)
- Azure 监视
- Microsoft Entra 身份识别系统
- 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
的值是固定值。 按照命令中所述输入这些值。 不这样做会导致在创建群集时出错。 如果在执行此命令时遇到任何错误,则可能无权运行它。 联系 Azure 管理员以获取权限。接下来,使用 az managed-cassandra cluster create 命令在新建的虚拟网络中创建群集。 运行以下命令,
delegatedManagementSubnetId
变量的值:注意
delegatedManagementSubnetId
该值与应用权限的虚拟网络名称相同。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
使用以下配置为群集创建数据中心,其中包含三个虚拟机:
VM 大小:标准 E8s v5
部署的每个虚拟机附加了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
注意
可以从以下可用的 VM 大小中选择该值
--sku
:- Standard_E8s_v5
- Standard_E16s_v5
- Standard_E20s_v5
- Standard_E32s_v5
默认情况下,
--availability-zone
设置为false
。 若要启用可用性区域,请将其设置为true
. 可用性区域有助于提高服务的可用性。 有关详细信息,请参阅 联机服务的 SLA。警告
所有 Azure 区域都不支持可用性区域。 如果选择不支持可用性区域的区域,则部署会失败。 有关支持的区域,请参阅 Azure 区域列表。
成功部署可用性区域取决于所选区域的所有区域中计算资源的可用性。 如果选择的虚拟机大小在所选区域中不可用,则部署会失败。
创建数据中心后,可以运行 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
连接到群集
适用于 Apache Cassandra 的 Azure 托管实例不会创建具有公共 IP 地址的节点。 若要连接到新的 Cassandra 群集,必须在同一虚拟网络中创建另一个资源。 此资源可以是应用程序,也可以是安装了 Apache 开源查询工具 CQLSH 的虚拟机。
你可使用资源管理器模板来部署 Ubuntu 虚拟机。
注意
由于 Python 版本的一些 已知问题 ,我们建议使用 Python3.10.12 附带的 Ubuntu 22.04 映像,或使用 Python 虚拟环境 运行 CQLSH。
从 CQLSH 连接
部署虚拟机后,使用 SSH 连接到该虚拟机并安装 CQLSH,如以下命令中所示:
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
检查 Cassandra 的版本是否仍受支持 ,并选择所需的版本。 建议使用稳定版本。
按照 Cassandra 文档中的官方步骤安装 Cassandra 库,以便获取 CQLSH。
使用 cqlsh 进行连接,如文档中所述。
从应用程序连接
与 CQLSH 一样,使用某个受支持的 Apache Cassandra 客户端驱动程序从应用程序进行连接需要启用 SSL 加密,并禁用认证验证。 有关示例,请参阅 Java、 .NET、 Node.js和 Python。
建议禁用证书验证,因为除非将群集节点的 IP 地址映射到相应的域,否则证书验证不起作用。 如果你有一个内部策略,该策略要求对任何应用程序执行 SSL 证书验证,可以通过为每个节点添加类似于主机文件中的条目 10.0.1.5 host1.managedcassandra.cosmos.azure.com
来方便。 如果采用此方法,则还需要在纵向扩展节点时添加新条目。
对于 Java,我们强烈建议启用 推理执行策略 ,其中应用程序对尾部延迟敏感。 有关说明其工作原理以及如何启用策略的演示,请参阅 “实现推理执行策略”。
注意
通常不需要配置证书、rootCA、节点、客户端或信任存储来连接到 Azure Managed Instance for Apache Cassandra。 SSL 加密使用默认信任存储以及客户端选择的运行时密码。 有关示例代码,请参阅 Java、 .NET、 Node.js和 Python)。 默认情况下,证书受信任。 否则,请将其添加到信任库。
配置客户端证书(可选)
配置客户端证书是可选的。 只要遵循上述步骤,客户端应用程序就可以连接到 Apache Cassandra 的 Azure 托管实例。 如果需要,还可以创建和配置用于身份验证的客户端证书。 通常,可以通过两种方式创建证书:
自签名证书:每个节点的专用和公共证书(无 CA)。 在这种情况下,需要所有公共证书。
CA 签名的证书:由自签名 CA 或公共 CA 颁发。 对于此设置,需要根 CA 证书和所有中间证书(如果适用)。 有关详细信息,请参阅 准备用于生产的 SSL 证书。
若要实现客户端到节点证书身份验证或相互传输层安全性(mTLS),请使用 Azure CLI 提供证书。 以下命令上传客户端证书并将其应用于 Cassandra 托管实例群集的信任存储。 无需修改 cassandra.yaml
设置。 应用后,群集要求 Cassandra 在客户端连接期间验证证书。 请参阅 Cassandra client_encryption_options 中的 require_client_auth: true
。
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 将权限应用到虚拟网络时遇到错误,则可以在 Azure 门户中手动应用相同的权限。 此类错误的示例是 “e5007d2c-4b13-4a74-9b6a-605d99f03501”的图形数据库中找不到用户或服务主体。 有关详细信息,请参阅 使用 Azure 门户添加 Azure Cosmos DB 服务主体。
注意
Azure Cosmos DB 角色分配仅用于部署目的。 Azure Managed Instanced for Apache Cassandra 对于 Azure Cosmos DB 不存在后端依赖关系。
清理资源
如果不再需要资源组、托管实例及所有相关资源,可使用 az group delete
命令将其删除:
az group delete --name <Resource_Group_Name>
后续步骤
在本快速入门中,你了解了如何使用 Azure CLI 创建 Azure Managed Instance for Apache Cassandra 群集。 现在你可开始使用该群集了: