你当前正在访问 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 索引

    • 初始 Cassandra 管理员密码:输入用于创建群集的密码。

    • 确认 Cassandra 管理员密码:重新输入密码。

    • 虚拟网络:选择现有的虚拟网络和子网,或创建新的虚拟网络和子网。

    • 分配角色:虚拟网络需要特殊权限才能部署托管 Cassandra 群集。 如果创建新的虚拟网络或使用现有虚拟网络而不应用权限,请保留此框。 如果使用以前部署的 Azure SQL 托管实例 Cassandra 群集的虚拟网络,请清除此选项。

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

    如果使用 虚拟专用网络,则无需打开另一个连接。

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

    • Azure 存储

    • Azure Key Vault

    • Azure 虚拟机规模集

    • Azure Monitor

    • Microsoft Entra ID

    • Microsoft Defender for Cloud

    • 自动复制:选择要使用的自动复制形式。 有关详细信息,请参阅统包式复制

    • 计划事件策略:群集用于计划事件的策略。

    提示

    • StopANY 表示在节点有计划的事件时停止该节点。
    • StopByRack 表示针对特定的计划事件,仅停止特定机架中的节点。 例如,如果同时为不同机架中的节点安排多个事件,则只有一个机架中的节点会停止运作。 其他机架中的其他节点会延迟。
  5. 选择 “数据中心 ”选项卡。

  6. 输入以下信息:

    • 数据中心名称:在文本字段中输入数据中心名称。

    • 可用性区域:如果要启用可用性区域,请选中此复选框。

    • SKU 大小:从可用的虚拟机(VM)产品层大小中进行选择。

      显示选择产品层大小的屏幕截图。

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

    在没有服务级别协议(SLA)的情况下提供直写缓存。 建议不要将它用于生产工作负载。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

    • 不是。 磁盘数:选择要附加到每个 Cassandra 节点的 p30 磁盘的数量。

    • 不是。 节点数:选择要部署到此数据中心的 Cassandra 节点数。

      显示“数据中心”选项卡的屏幕截图,可在其中查看值。

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

    成功部署可用性区域也会受到特定区域中所有区域中计算资源的可用性。 如果所选产品层或容量在所有区域中不可用,则部署可能会失败。

  7. 选择“审核 + 创建”>创建

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

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

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

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

  9. 若要浏览群集节点,请转到群集资源并打开 “数据中心 ”窗格。

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

调整数据中心规模

使用单个数据中心部署群集后,可以水平或垂直缩放。 突出显示数据中心,然后选择“ 缩放”。

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

横向缩放

若要在节点上横向扩展或缩小,请将滑块移动到所需的数字。 还可以编辑该值。 完成后,选择“ 缩放”。

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

垂直缩放

若要纵向扩展或缩减节点的产品层大小,请从 SKU 大小 下拉列表中选择选项。 完成后,选择“ 缩放”。

显示选择产品层大小的屏幕截图。

缩放操作所需的时间长短取决于各种因素。 该操作可能需要几分钟时间。 当 Azure 通知您缩放操作完成时,并不意味着所有节点都加入了 Cassandra 环。 当所有节点显示状态为 健康,且数据中心状态为 成功时,节点就已完全启动。

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

添加数据中心

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

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

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

    在尝试部署托管实例群集之前,请确保将适当的角色应用于虚拟网络。 使用以下 Azure 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 大小:从可用的 VM 产品层大小中进行选择。

    • 不是。 磁盘数:选择要附加到每个 Cassandra 节点的 p30 磁盘的数量。

    • 不是。 节点数:选择要部署到此数据中心的 Cassandra 节点数。

    • 虚拟网络:选择现有的虚拟网络和子网。

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

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

  3. 部署数据中心后,应该能够查看 数据中心 窗格上的所有数据中心信息。

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

  4. 若要确保数据中心之间的复制,请连接到 Cassandra 查询语言外壳(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 配置”。 突出显示要更改其配置的数据中心,然后选择“ 更新”。

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

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

    显示更新数据中心 Cassandra 配置的屏幕截图。

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

    显示更新的 Cassandra 配置的屏幕截图。

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

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

    • cluster_name
    • seed_provider
    • initial_token
    • autobootstrap
    • client_encryption_options
    • server_encryption_options
    • transparent_data_encryption_options
    • audit_logging_options
    • authenticator
    • authorizer
    • role_manager
    • storage_port
    • ssl_storage_port
    • native_transport_port
    • native_transport_port_ssl
    • listen_address
    • listen_interface
    • broadcast_address
    • hints_directory
    • data_file_directories
    • commitlog_directory
    • cdc_raw_directory
    • saved_caches_directory
    • endpoint_snitch
    • partitioner
    • rpc_address
    • rpc_interface

更新 Cassandra 版本

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

可以直接通过门户、Azure CLI、Terraform 或 Azure 资源管理器模板进行原地主要版本升级。

  1. 在“ 概述 ”选项卡上,选择“ 更新”。

    显示更新 Cassandra 版本的屏幕截图。

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

    不跳过版本。 建议仅从一个版本更新到另一个版本。 例如,将 3.11 更新为 4.0 或 4.0 到 4.1。

    显示选择 Cassandra 版本的屏幕截图。

  3. 选择 “更新 ”以保存。

交钥匙复制

Cassandra 5.0 引入了一种简化的方法,用于部署多区域群集,从而增强便利性和效率。 如果使用交钥匙复制功能,则可以更方便地设置和管理多区域群集。 可以在分布式环境中获得更流畅的集成和操作。

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

显示从下拉列表中选择选项的屏幕截图。

  • “自动复制 ”选项设置为 “无”。
  • 系统密钥空间:自动复制所有系统密钥空间(system_authsystem_tracessystem_auth)。
  • 所有密钥空间:自动复制所有密钥空间,监视是否创建了新密钥空间,然后自动应用自动复制设置。

自动复制场景

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

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

如果将 自动复制功能 选项设置为 所有键空间,那么键空间的复制会进行以下更改:

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

如果此拓扑不是所需拓扑,请使用 SystemKeyspaces,自行调整,并在 Apache Cassandra 群集的 Azure 托管实例上手动运行 nodetool rebuild

解除分配群集

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

仅使用 NonProduction 群集类型来节省开发成本。 此群集类型可能附带较小的产品层。 不要 使用它来运行生产工作负荷。

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

显示暂停群集的屏幕截图。

故障排除

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

Azure Cosmos DB 角色分配仅用于部署目的。 适用于 Apache Cassandra 的 Azure 托管实例在 Azure Cosmos DB 上没有后端依赖项。

连接到群集

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

使用 CQLSH 连接

部署 VM 后,使用 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 客户端驱动程序 之一从应用程序进行连接时,必须启用传输层安全性/安全套接字层(TLS/SSL)加密,并且必须禁用证书验证。 有关用于连接到 Apache Cassandra 的 Azure 托管实例的示例,请参阅 Java.NETNode.jsPython

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

对于 Java,我们建议启用 推理执行策略 ,其中应用程序对尾部延迟敏感。 要了解此方法的工作原理以及如何启用策略,请参阅演示:实现推测执行

在大多数情况下,应不需要配置或安装证书(例如rootCAnodeclienttruststore)即可连接到 Azure 托管实例 Apache Cassandra。 若要启用 TLS/SSL 加密,请使用客户端正在使用的运行时的默认信任存储和密码。 该环境信任 Apache Cassandra 证书的 Azure 托管实例。 在某些罕见情况下,如果证书不受信任,可能需要将其添加到可信存储。 有关示例代码,请参阅 Java.NETNode.jsPython

配置客户端证书(可选)

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

  • 自签名证书: 每个节点的专用和公共证书都是没有证书颁发机构(CA)的。 在这种情况下,需要所有公共证书。
  • CA 签名的证书: 由自签名 CA 或公共 CA 颁发的证书。 在这种情况下,需要根 CA 证书和所有中间证书(如果适用)。 有关详细信息,请参阅 准备用于生产的 SSL 证书

如果要实现客户端到节点证书身份验证或相互传输层安全性(mTLS),请使用 Azure CLI 提供证书。 以下命令上传客户端证书并将其应用于托管实例群集的信任存储。 无需编辑 cassandra.yaml 设置。 应用命令后,群集要求 Cassandra 在客户端连接时验证证书。 有关详细信息,请参阅 require_client_auth: true Cassandra client_encryption_options

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. 在下一个窗格中,输入要删除的资源组的名称,然后选择“ 删除”。

后续步骤