你当前正在访问 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 数据控制器。
使用入门
如果你已熟悉以下主题,则可以跳过此段落。 在继续创建之前,你可能需要先阅读一些重要的主题:
如果你想要在不自行预配完整环境的情况下进行试用,请在 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_USERNAME
和 AZDATA_PASSWORD
会话环境变量来跳过交互式提示。
示例
要部署名为 postgres01 且使用与数据控制器相同的存储类的 PostgreSQL 服务器,请运行以下命令:
az postgres server-arc create -n postgres01 --k8s-namespace <namespace> --use-k8s
注意
- 如果在同一终端会话中使用
AZDATA_USERNAME
和AZDATA_PASSWORD
会话环境变量部署了数据控制器,那么AZDATA_PASSWORD
的值也将用于部署 PostgreSQL 服务器。 如果偏好使用其他密码,则 (1) 更新AZDATA_USERNAME
和AZDATA_PASSWORD
的值或 (2) 删除AZDATA_USERNAME
和AZDATA_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 Studio、pgcli 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
相关内容
连接到已启用 Azure Arc 的 PostgreSQL 服务器:请阅读获取连接终结点和连接字符串
* 在上述文档中,跳过“登录到 Azure 门户”和“创建 Azure Database for PostgreSQL”部分。 在 Azure Arc 部署中执行剩余步骤。 这些部分特定于在 Azure 云中作为 PaaS 服务提供的 Azure Database for PostgreSQL 服务器,但文档的其他部分直接适用于已启用 Azure Arc 的 PostgreSQL 服务器。