你当前正在访问 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 解决方案相关资源的容器。 有关详细信息,请参阅 Azure 资源组概述文章。
    • 群集名称 - 为群集输入名称。
    • 位置 - 要将群集部署到的位置。
    • Cassandra 版本 - 将要部署的 Apache Cassandra 版本。
    • 扩展 - 将添加的扩展,包括 Cassandra Lucene 索引
    • 初始 Cassandra 管理员密码 - 用于创建群集的密码。
    • 确认 Cassandra 管理员密码 - 重新输入你的密码。
    • 虚拟网络 - 选择现有虚拟网络和子网,或新建一个虚拟网络和子网。
    • 分配角色 - 虚拟网络需要特殊权限才能允许部署托管 Cassandra 群集。 如果要创建新的虚拟网络,或使用现有虚拟网络但不应用权限,请保持选中此框。 如果使用已部署 Azure SQL 托管实例 Cassandra 群集的虚拟网络,则取消选中此选项。

    填写“创建群集”窗体。

    提示

    如果使用 VPN,则无需打开任何其他连接。

    注意

    部署 Azure Managed Instance for Apache Cassandra 需要 Internet 访问权限。 在限制 Internet 访问权限的环境中,部署将失败。 请确保未在 VNet 中阻止对以下关键 Azure 服务(托管 Cassandra 需要这些服务才能正常工作)的访问权限。 有关详细信息,请参阅所需的出站网络规则

    • Azure 存储
    • Azure KeyVault
    • Azure 虚拟机规模集
    • Azure 监视
    • Microsoft Entra ID
    • Azure 安全性
    • 自动复制 - 选择要使用的自动复制形式。 了解详细信息
    • 计划事件策略 - 群集要用于计划事件的策略。

    提示

    • StopANY 表示停止任何有计划事件的节点。
    • StopByRack 表示仅针对给定计划事件停止给定机架中的节点,例如,如果同时为不同机架中的节点计划了两个或多个事件,则只会停止其中一个机架中的节点,对其他机架中的其他节点则实施延迟。
  5. 接下来,选择“数据中心”选项卡。

  6. 输入以下详细信息:

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

    选择 SKU 大小的屏幕截图。

    注意

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

    重要

    连续写入缓存为公共预览版。 此功能不附带服务级别协议,不建议将其用于生产工作负载。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

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

    查看摘要以创建数据中心。

    警告

    并非所有区域都支持可用性区域。 如果选择不支持可用性区域的区域,部署将会失败。 有关支持的区域的信息,请参阅此处。 可用性区域的成功部署还受限于给定区域内所有区域中的计算资源的可用性。 如果你选择的 SKU 或容量在所有区域中均不可用,则部署可能会失败。

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

    注意

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

    查看摘要以创建群集。

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

    创建群集后的“概述”页。

  9. 若要浏览群集节点,请导航到群集资源并打开“数据中心”窗格以查看它们:

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

缩放数据中心

现在你已经部署了具有单个数据中心的群集,接下来可通过突出显示该数据中心,然后选择Scale按钮进行水平或垂直扩展:

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

横向缩放

若要对节点进行横向扩展,请将滑块移动到所需数字,或者只需编辑值。 完成后,点击 Scale

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

垂直缩放

若要针对节点纵向扩展到更强大的 SKU 大小,请从Sku Size下拉列表中选择。 完成后,点击 Scale

显示选择 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 大小 - 从可用的虚拟机 SKU 大小中进行选择。
    • 错误。 磁盘数 - 选择要附加到每个 Cassandra 节点的 p30 磁盘的数量。
    • 否。 节点数 - 选择将部署到此数据中心的 Cassandra 节点数。
    • 虚拟网络 - 选择现有虚拟网络和子网。

    添加数据中心。

    警告

    请注意,在添加数据中心时,我们不允许创建新的虚拟网络。 需要选择现有的虚拟网络。如上所述,需要确保将在其中部署数据中心的目标子网之间有连接。 还需要将相应的角色应用到 VNet,以允许进行部署(见上)。

  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 配置

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

  1. 在设置下查找 Cassandra Configuration。 突出显示要更改其配置的数据中心,然后单击更新:

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

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

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

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

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

    注意

    门户中仅显示重写的 Cassandra 配置值。

    重要

    确保提供的 Cassandra YAML 设置适用于已部署的 Cassandra 版本。 有关 Cassandra v3.11 设置,请参阅此处,有关 Cassandra 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 4.1、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、自行调整它们并在适用于 Apache Cassandra 的 Azure 托管实例上手动运行 nodetool rebuild

取消分配群集

  1. 对于非生产环境,可以暂停/取消分配群集中的资源,以避免为这些资源付费(将继续为存储付费)。 首先将群集类型更改为 NonProduction,然后更改为 deallocate

警告

请勿在取消分配期间执行任何架构或写入操作 - 这可能会导致数据丢失,并且在极少数情况下,架构损坏需要支持团队进行手动干预。

暂停群集的屏幕截图。

疑难解答

如果在使用 Azure CLI 将权限应用到虚拟网络时遇到错误(例如,“无法在‘e5007d2c-4b13-4a74-9b6a-605d99f03501’的图形数据库中找到用户或服务主体”),则可以在 Azure 门户中手动应用相同的权限。 通过此处了解如何执行此操作。

注意

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

连接到你的群集

适用于 Apache Cassandra 的 Azure 托管实例不会创建具有公共 IP 地址的节点,因此,若要连接到新创建的 Cassandra 群集,你需要在 VNet 中创建另一个资源。 这可以是应用程序,也可以是安装了 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 连接到 Azure Managed Instance for Apache Cassandra 的示例。

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

对于 Java,我们还强烈建议在应用程序对尾部延迟敏感时启用推测执行策略此处的演示说明了其工作原理以及如何启用策略。

备注

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

配置客户端证书(可选)

配置客户端证书是可选操作。 只要已执行上述步骤,客户端应用程序就可以连接到 Azure Managed Instance for Apache Cassandra。 但是,如果需要,还可以另外创建和配置用于身份验证的客户端证书。 通常,可以通过两种方式创建证书:

  • 自签名证书。 这意味着每个节点都有一个专用和公用(无 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

清理资源

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

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

后续步骤

在本快速入门中,你已学习了如何使用 Azure 门户创建适用于 Apache Cassandra 群集的 Azure 托管实例。 你现在可以开始使用群集了: