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

从 CLI 创建已启用 Azure Arc 的 PostgreSQL 服务器

本文档介绍在 Azure Arc 上创建 PostgreSQL 服务器并连接到该服务器的步骤。

先决条件

在继续完成本文中的任务之前,需要准备好所需的工具。 所有部署都需要以下工具:

  • Azure Data Studio

  • Azure Data Studio 的 Azure Arc 扩展

  • Azure CLI (az)

  • Azure CLI 的 arcdata 扩展

  • kubectl

    其他客户端工具,具体取决于你的环境。 有关更完整的列表,请参阅客户端工具

除了要具有所需的工具之外,若要完成任务,还需要具有 Azure Arc 数据控制器

注意

作为预览版功能,本文中介绍的技术受制于 Microsoft Azure 预览版补充使用条款

发行说明中提供了最近的更新。

使用入门

如果你已熟悉以下主题,则可以跳过此段落。 在继续创建之前,你可能需要先阅读一些重要的主题:

如果你想要在不自行预配完整环境的情况下进行试用,请在 Azure Kubernetes 服务 (AKS)、AWS Elastic Kubernetes 服务 (EKS)、Google Cloud Kubernetes Engine (GKE) 或 Azure VM 中,通过 Azure Arc 快速入门快速开始操作。

仅适用于 OpenShift 用户的预备步骤和临时步骤

在转到下一步骤之前请先执行此步骤。 要将 PostgreSQL 服务器部署到非默认项目中的 Red Hat OpenShift,需要针对群集执行以下命令,以更新安全约束。 此命令为要运行 PostgreSQL 服务器的服务帐户授予必要的特权。 安全性上下文约束 (SCC) arc-data-scc 是部署 Azure arc 数据控制器时添加的。

oc adm policy add-scc-to-user arc-data-scc -z <server-name> -n <namespace-name>

Server-name 是将在下一步中创建的服务器的名称

有关 OpenShift 中 SCC 的更多详细信息,请参阅 OpenShift 文档。 继续下一步操作。

创建已启用 Azure Arc 的 PostgreSQL 服务器

若要在 Arc 数据控制器上创建已启用 Azure Arc 的 PostgreSQL 服务器,请使用要向其传递多个参数的 az postgres server-arc create 命令。

有关在创建时可设置的所有参数的详细信息,请查看以下命令的输出:

az postgres server-arc create --help

应考虑的主要参数是:

  • 要部署的服务器的名称。 指示 --name-n 后跟长度不得超过 11 个字符的名称。

  • 希望服务器使用的存储类。 请务必在部署服务器时设置存储类,因为在部署后便无法更改此设置。 可以指定用于数据、日志和备份的存储类。 默认情况下,如果不指示存储类,则将使用数据控制器的存储类。

    • 若要设置备份的存储类,请指示参数 --storage-class-backups,后跟存储类的名称。 排除此参数会禁用自动备份
    • 若要设置数据的存储类,请指示参数 --storage-class-data,后跟存储类的名称。
    • 若要设置日志的存储类,请指示参数 --storage-class-logs,后跟存储类的名称。

    重要

    如果需要在部署后更改存储类,请提取数据、删除服务器、新建服务器,然后导入数据。

执行 create 命令时,系统将提示输入管理用户的用户名和密码。 在运行 create 命令之前,可以通过设置 AZDATA_USERNAMEAZDATA_PASSWORD 会话环境变量来跳过交互式提示。

示例

要部署名为 postgres01 且使用与数据控制器相同的存储类的 PostgreSQL 服务器,请运行以下命令:

az postgres server-arc create -n postgres01 --k8s-namespace <namespace> --use-k8s

注意

  • 如果在同一终端会话中使用 AZDATA_USERNAMEAZDATA_PASSWORD 会话环境变量部署了数据控制器,那么 AZDATA_PASSWORD 的值也将用于部署 PostgreSQL 服务器。 如果偏好使用其他密码,则 (1) 更新 AZDATA_USERNAMEAZDATA_PASSWORD 的值或 (2) 删除 AZDATA_USERNAMEAZDATA_PASSWORD 环境变量或 (3) 删除它们的值,以在创建服务器时通过系统提示以交互方式输入用户名和密码。
  • 创建 PostgreSQL 服务器不会立即在 Azure 中注册资源。 在向 Azure 上传资源库存使用情况数据的过程中,将在 Azure 中创建资源,并且你将能够在 Azure 门户中查看你的资源。

列出在 Arc 数据控制器中部署的 PostgreSQL 服务器

要列出在 Arc 数据控制器中部署的 PostgreSQL 服务器,请运行以下命令:

az postgres server-arc list --k8s-namespace <namespace> --use-k8s
  {
    "name": "postgres01",
    "state": "Ready"
  }

获取终结点以连接到已启用 Azure Arc 的 PostgreSQL 服务器

要查看 PostgreSQL 服务器的终结点,请运行以下命令:

az postgres server-arc endpoint list -n <server name> --k8s-namespace <namespace> --use-k8s

例如:

{
  "instances": [
    {
      "endpoints": [
        {
          "description": "PostgreSQL Instance",
          "endpoint": "postgresql://postgres:<replace with password>@123.456.78.912:5432"
        },
        {
          "description": "Log Search Dashboard",
        },
        {
          "description": "Metrics Dashboard",
          "endpoint": "https://98.765.432.11:3000/d/postgres-metrics?var-Namespace=arc&var-Name=postgres01"
        }
      ],
      "engine": "PostgreSql",
      "name": "postgres01"
    }
  ],
  "namespace": "arc"
}

可以使用 PostgreSQL 实例终结点从 Azure Data Studiopgcli psql、pgAdmin 等你喜欢的工具连接到 PostgreSQL 服务器。

此时,请使用 Azure Data Studio 的预览体验内部版本

有关 Azure 虚拟机部署的特别说明

如果使用 Azure 虚拟机,则终结点 IP 地址将不显示公共 IP 地址。 若要查找公共 IP 地址,请使用以下命令:

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

然后,可以组合使用公共 IP 地址与端口来建立连接。

你可能还需要通过网络安全网关 (NSG) 公开 PostgreSQL 服务器的端口。 若要允许流量通过 (NSG),请设置规则。 若要设置规则,需要知道 NSG 的名称。 使用以下命令确定 NSG:

az network nsg list -g azurearcvm-rg --query "[].{NSGName:name}" -o table

获取 NSG 的名称后,可使用以下命令添加防火墙规则。 此处的示例值针对端口 30655 创建一个 NSG 规则,并允许来自任何源 IP 地址的连接

警告

不建议将规则设置为允许来自任何源 IP 地址的连接。 通过指定特定于你的客户端 IP 地址或 IP 地址范围(涵盖你的团队或组织的 IP 地址)的 -source-address-prefixes 值,可以更好地锁定内容。

请将下面的 --destination-port-ranges 参数值替换为从上述 az postgres server-arc list 命令获取的端口号。

az network nsg rule create -n db_port --destination-port-ranges 30655 --source-address-prefixes '*' --nsg-name azurearcvmNSG --priority 500 -g azurearcvm-rg --access Allow --description 'Allow port through for db access' --destination-address-prefixes '*' --direction Inbound --protocol Tcp --source-port-ranges '*'

连接 Azure Data Studio

打开 Azure Data Studio,并使用上述外部终结点 IP 地址和端口号以及你在创建实例时指定的密码连接到改实例。 如果“连接类型”下拉列表中没有 PostgreSQL,则可以通过在“扩展”选项卡中搜索 PostgreSQL 来安装 PostgreSQL 扩展

注意

你将需要单击“连接”面板中的“高级”按钮以输入端口号。

请记住,如果使用 Azure VM,则需要可通过以下命令访问的公共 IP 地址

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

通过 psql 进行连接

若要访问 PostgreSQL 服务器,请传递从上面检索到的 PostgreSQL 服务器的外部终结点:

现在可以连接任一 psql:

psql postgresql://postgres:<EnterYourPassword>@10.0.0.4:30655