你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:从 Azure 门户中创建适用于 Apache Cassandra 群集的 Azure 托管实例

适用于 Apache Cassandra 的 Azure 托管实例是针对纯开源 Apache Cassandra 群集的完全托管服务。 该服务还允许根据每个工作负载的具体需求来替代配置,从而在需要时实现最大的灵活性和控制。

本快速入门演示了如何使用 Azure 门户创建适用于 Apache Cassandra 群集的 Azure 托管实例。

先决条件

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

创建托管实例群集

  1. 登录 Azure 门户

  2. 从搜索栏中搜索“适用于 Apache Cassandra 的托管实例”,然后选择结果。

    搜索“适用于 Apache Cassandra 的 Azure SQL 托管实例”的屏幕截图。

  3. 选择“ 为 Apache Cassandra 群集创建托管实例”。

    屏幕截图显示了用于创建群集的按钮。

  4. 在“创建适用于 Apache Cassandra 的托管实例”窗格中,输入以下详细信息:

    • 订阅 - 从下拉列表中选择 Azure 订阅。
    • 资源组 - 指定是要创建新的资源组还是使用现有的资源组。 资源组是用于保存 Azure 解决方案相关资源的容器。
    • 群集名称 - 为群集输入名称。
    • 位置 - 部署群集的位置。
    • Cassandra 版本 - 要部署的 Apache Cassandra 版本。
    • 扩展 - 要添加的扩展,包括 Cassandra Lucene Index
    • 初始 Cassandra 管理员密码 - 用于创建群集的密码。
    • 确认 Cassandra 管理员密码 - 重新输入你的密码。
    • 虚拟网络 - 选择退出的虚拟网络和子网,或创建新的虚拟网络和子网。
    • 分配角色 - 虚拟网络需要特殊权限才能部署托管 Cassandra 群集。 如果要创建新虚拟网络或使用未应用权限的现有虚拟网络,请选中此框。 如果使用以前部署的 Azure SQL 托管实例 Cassandra 群集的虚拟网络,请取消选中此选项。

    屏幕截图显示了“创建”页面中的“基本信息”选项卡。

    提示

    如果使用 VPN,则无需打开另一个连接。

    注意

    部署 Azure Managed Instance for Apache Cassandra 需要 Internet 访问权限。 在限制 Internet 访问权限的环境中,部署将失败。 确保不会阻止虚拟网络中访问以下重要的 Azure 服务,这些服务是托管 Cassandra 正常工作所必需的。 有关详细信息,请参阅 所需的出站网络规则

    • Azure 存储
    • Azure KeyVault
    • Azure 虚拟机规模集
    • Azure 监视
    • Microsoft Entra 身份识别系统
    • Azure 安全性
    • 自动复制。 选择要使用的自动复制形式。 有关详细信息,请参阅统包式复制
    • 计划事件策略。 群集使用的计划事件策略。

    提示

    • StopANY 表示在节点有计划的事件时停止该节点。
    • StopByRack 意味着只停止给定计划事件中给定机架内的节点。 例如,如果同时计划在不同机架中的节点上发生多个事件,那么只有一个机架中的节点会停止。 其他机架中的其他节点会延迟。
  5. 接下来,选择“数据中心”选项卡。

  6. 输入以下详细信息:

    • 数据中心名称。 在文本字段中键入数据中心名称。
    • 可用性区域。 如果希望启用可用性区域,请选中此框。
    • SKU 大小。 从可用的虚拟机 SKU 大小中进行选择。

    选择 SKU 大小的屏幕截图。

    注意

    我们通过使用 L 系列虚拟机 SKU 引入了直写缓存(公共预览版)。 此实现旨在最大程度减少尾延迟并提高读取性能,尤其对于读取密集型工作负载。 这些特定的 SKU 配备了本地附加的磁盘,可确保读取操作的 IOPS 大幅增加,并减少尾延迟。

    重要

    直写高速缓存现为公开预览版。 此功能没有提供服务级别协议。 建议不要将它用于生产工作负载。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

    • 不是。 磁盘数. 选择要附加到每个 Cassandra 节点的 p30 磁盘的数量。
    • 不是。 节点数. 选择要部署到此数据中心的 Cassandra 节点数。

    可在其中查看值的数据中心页的屏幕截图。

    警告

    并非所有区域都支持可用性区域。 如果选择不支持可用性区域的区域,则部署会失败。 有关详细信息,请参阅 Azure 区域列表

    可用性区域的成功部署还受限于给定区域内所有区域中的计算资源的可用性。 如果选择的 SKU 或容量在所有区域中不可用,则部署可能会失败。

  7. 接下来,选择“查看 + 创建>创建”。

    注意

    创建群集最多可能需要 15 分钟。

    屏幕截图显示了群集的“查看和创建”页。

  8. 部署完成后,请检查资源组以查看新建的托管实例群集:

    屏幕截图显示群集创建后“概述”页。

  9. 若要浏览群集节点,请导航到群集资源并打开 数据中心 窗格:

    数据中心节点的屏幕截图。

调整数据中心规模

部署了具有单个数据中心的群集后,可以通过突出显示数据中心并选择“ 缩放 ”按钮来水平或垂直缩放:

缩放数据中心节点的屏幕截图。

横向缩放

若要对节点进行横向扩展或横向缩减,请将滑块移动到所需数字,或者只需编辑值。 完成后,选择“缩放”。

选择数据中心节点数量的屏幕截图。

垂直缩放

若要纵向扩展或缩减节点的 SKU 大小,请从 Sku 大小中进行选择。 完成后,选择“缩放”。

选择 SKU 大小的屏幕截图。

注意

缩放操作所需的时间会取决于各种因素。 这可能需要几分钟时间。 当 Azure 通知您扩展操作完成时,这并不意味着所有节点都加入了 Cassandra 环。 当所有节点显示状态为 正常,并且数据中心状态显示 成功时,节点便完全启用。

缩放是一种联机操作,其工作方式与所述的修补方式相同。 有关更多信息,请参阅 补丁

添加数据中心

  1. 若要添加另一个数据中心,请在 数据中心 窗格中选择“添加”按钮:

    添加数据中心的屏幕截图。

    警告

    如果要在不同的区域中添加数据中心,则需要选择其他虚拟网络。 还需要确保此虚拟网络已连接到之前创建的主要区域的虚拟网络。 此外,请确保托管实例群集中托管数据中心的任何其他虚拟网络。 有关详细信息,请参阅使用虚拟网络对等互连来连接虚拟网络

    还需要确保在尝试部署托管实例群集之前,使用以下 CLI 命令将适当的角色应用到虚拟网络。

    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>
    
  2. 填充相应的字段:

    • 数据中心名称。 从下拉列表中选择 Azure 订阅。
    • 可用性区域。 选择是否希望在此数据中心中启用可用性区域。
    • 位置。 部署数据中心的位置。
    • SKU 大小。 从可用的虚拟机 SKU 大小中进行选择。
    • 不是。 磁盘数. 选择要附加到每个 Cassandra 节点的 p30 磁盘的数量。
    • 不是。 节点数. 选择要部署到此数据中心的 Cassandra 节点数。
    • 虚拟网络。 选择现有虚拟网络和子网。

    “添加数据中心”页的屏幕截图。

    警告

    添加数据中心时,Azure 门户不允许创建新的虚拟网络。 需要选择现有的虚拟网络,并且需要确保部署数据中心的目标子网之间存在连接。 还需要将适当的角色应用到虚拟网络以允许部署,如前所述。

  3. 部署数据中心后,你应该能够在“数据中心”窗格中查看所有数据中心信息:

    屏幕截图显示了群集资源。

  4. 若要确保数据中心之间的复制,请连接到 cqlsh ,并使用以下 CQL 查询更新每个密钥空间中的复制策略,以包括群集中的所有数据中心。 系统表会自动更新。

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc': 3, 'dc2': 3};
    
  5. 如果要将数据中心添加到已有数据的群集,请运行 rebuild 以复制历史数据。 在 Azure CLI 中,使用以下命令在新数据中心的每个节点上运行 nodetool rebuild 。 此操作将把 <new dc ip address> 替换为节点的 IP 地址,并将 <olddc> 替换为您现有数据中心的名称。

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

    警告

    在应用密钥空间复制更改之前,不应允许应用程序客户端写入新数据中心。 否则,重新生成不起作用,你需要创建 支持请求 ,以便我们的团队可以代表你运行 repair

更新 Cassandra 配置

该服务允许使用 Azure 门户或 CLI 命令更新数据中心上的 Cassandra YAML 配置。 在门户中配置设置:

  1. 在设置下查找 Cassandra Configuration。 选择要更改配置的数据中心,突出显示并选择更新:

    选择要更新配置的数据中心的屏幕截图。

  2. 在打开的窗口中,输入 YAML 格式的字段名称,如下所示。 然后选择“更新”。

    更新数据中心 Cassanddra 配置的屏幕截图。

  3. 更新完成后,被覆盖的值将显示在 Cassandra Configuration 窗格中:

    已更新的 Cassandra 配置的屏幕截图。

    注意

    Azure 门户中仅显示覆盖的 Cassandra 配置值。

    重要

    确保提供的 Cassandra yaml 设置适用于所部署的 Cassandra 版本。 请参阅 Cassandra v3.11 了解 Cassandra v3.11 设置,参阅 Cassandra v4.0 了解 v4.0。 无法更新以下 YAML 设置:

    • 集群名称
    • 种子提供者
    • initial_token
    • autobootstrap
    • 客户端加密选项
    • 服务器加密选项
    • 透明数据加密选项
    • audit_logging_options
    • 验证器 (authenticator)
    • 授权人
    • 角色管理器
    • 存储端口
    • SSL存储端口
    • native_transport_port
    • native_transport_port_ssl
    • listen_address
    • listen_interface
    • 广播地址
    • hints_directory
    • 数据文件目录
    • commitlog_directory
    • cdc_raw_directory
    • saved_caches_directory
    • endpoint_snitch
    • 分区器
    • rpc_address
    • rpc_interface

更新 Cassandra 版本

重要

Cassandra 5.0 和 Turnkey 版本更新为公共预览版。 这些功能在没有服务级别协议的情况下提供。 不建议将这些功能用于生产工作负荷。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

可以选择直接从门户或通过 Az CLI、Terraform 或 ARM 模板执行就地主版本升级。

  1. 在“概述”选项卡中查找Update 面板。

    更新 Cassandra 版本的屏幕截图。

  2. 从下拉列表中选择 Cassandra 版本。

    警告

    不跳过版本。 建议仅从一个版本更新到另一个示例 3.11 到 4.0、4.0 到 4.1。

    选择 Cassandra 版本的屏幕截图。

  3. 选择更新以便保存。

交钥匙复制

Cassandra 5.0 引入了一种简化的多区域群集部署方法,提升了便利性和效率。 如果使用统包复制功能,设置和管理多区域群集将更易于访问,从而在分布式环境中实现更流畅的集成和作。

此更新大大减少了与部署和维护多个区域配置相关的复杂性,使用户能够更轻松、更有效地使用 Cassandra 的功能。

从下拉列表中选择引用选项。

提示

  • 无:自动复制设置为“无”。
  • SystemKeyspaces:自动复制所有系统密钥空间(system_auth、system_traces、system_auth)。
  • AllKeyspaces:自动复制所有密钥空间并监视是否创建了新的密钥空间,然后自动应用自动复制设置。

自动复制场景

  • 添加新数据中心时,Cassandra 中的自动复制功能将无缝运行 nodetool rebuild ,以确保在添加的数据中心之间成功复制数据。
  • 删除数据中心会自动触发从密钥空间中删除该数据中心。

对于外部数据中心(例如本地托管的数据中心),可以使用外部数据中心属性将其包含在密钥空间中。 此方法使 Cassandra 能够将这些外部数据中心合并为重新生成过程的源。

警告

将自动复制设置为 AllKeyspaces 会更改密钥空间复制以包括:

WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'on-prem-datacenter-1' : 3, 'mi-datacenter-1': 3 }

如果这不是所需的拓扑,请使用 SystemKeyspaces,自行调整设置,并在 Azure Managed Instance for Apache Cassandra 上手动运行 nodetool rebuild

解除分配群集

对于非生产环境,可以暂停或解除分配群集中的资源,以避免为其收费。 你会继续被收取存储费用。 首先将群集类型更改为 NonProduction,然后更改为 deallocate

提示

群集类型应仅用于“非生产”以节省开发成本。 它们可能附带较小的 SKU,不应用于运行生产工作负载。

警告

  • 定义为“非生产”的群集类型没有应用于它的 SLA 保证。
  • 在解除分配期间,不要运行任何架构或写入操作。 此作可能会导致数据丢失,在极少数情况下,架构损坏需要支持团队手动干预。

暂停群集的屏幕截图。

故障排除

如果使用 Azure CLI 将权限应用到虚拟网络时遇到错误,可以从 Azure 门户手动应用相同的权限。 此类错误的示例是 “e5007d2c-4b13-4a74-9b6a-605d99f03501”的图形数据库中找不到用户或服务主体。 有关详细信息,请参阅 使用 Azure 门户添加 Azure Cosmos DB 服务主体

注意

Azure Cosmos DB 角色分配仅用于部署目的。 Azure Managed Instanced for Apache Cassandra 对于 Azure Cosmos DB 不存在后端依赖关系。

连接到你的群集

适用于 Apache Cassandra 的 Azure 托管实例不会创建具有公共 IP 地址的节点。 若要连接到新创建的 Cassandra 群集,请在虚拟网络中创建另一个资源。 此资源可以是应用程序,也可以是安装了 Apache 开源查询工具 CQLSH 的虚拟机。 可以使用 模板 部署 Ubuntu 虚拟机。

从 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 加密,并禁用认证验证。 请参阅使用 Java.NETNode.jsPython 连接到 Apache Cassandra 的 Azure 托管实例的示例。

建议禁用证书验证,因为证书验证不起作用,除非将群集节点的 IP 地址映射到相应的域。 如果你有一个要求对任何应用程序执行 SSL 证书验证的内部策略,可以通过为每个节点的主机文件中添加类似条目 10.0.1.5 host1.managedcassandra.cosmos.azure.com 来简化此设置。 如果采用此方法,则每当纵向扩展节点时,还需要添加新条目。

对于 Java,我们还强烈建议在应用程序对尾部延迟敏感时启用推测执行策略。 有关演示此方法如何工作的示例,请参阅 演示:实现推测执行,以及如何启用该策略。

注意

在大多数情况下,无需配置或安装证书(例如 rootCA、节点或客户端、信任存储)即可连接到 Azure Managed Instance for Apache Cassandra。 可以使用客户端所使用的运行时的默认信任存储和密码来启用 SSL 加密,因为 Azure 托管实例 Apache Cassandra 证书受该环境信任。 在极少数情况下,如果证书不受信任,可能需要将其添加到信任库。 请参阅 Java.NETNode.jsPython

配置客户端证书(可选)

配置客户端证书是可选的。 只要完成上述步骤,客户端应用程序就可以连接到适用于 Apache Cassandra 的 Azure 托管实例。 但是,如果需要,还可以创建和配置用于身份验证的客户端证书。 通常,可以通过两种方式创建证书:

  • 自签名证书。 每个节点的专用和公共(无 CA)证书。 在这种情况下,需要所有公共证书。
  • CA 签名的证书。 此证书可以是自签名的 CA 证书,也可以是公共 CA 证书。 在这种情况下,您需要根 CA 证书和所有中间证书(如果适用)。 有关详细信息,请参阅 准备用于生产的 SSL 证书

如果要实现客户端到节点证书身份验证或相互传输层安全性(mTLS),请使用 Azure CLI 提供证书。 以下命令上传客户端证书并将其应用于托管实例群集的信任存储。 无需编辑 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

清理资源

如果不打算继续使用此托管实例群集,请按照以下步骤删除它:

  1. 从 Azure 门户的左侧菜单中选择“资源组”。
  2. 从列表中选择为本快速入门创建的资源组。
  3. 在资源组的“概述”窗格上,选择“删除资源组” 。
  4. 在下一窗口中输入要删除的资源组的名称,然后选择“删除” 。

后续步骤