使用 CLI 建立和管理 適用於 PostgreSQL 的 Azure 資料庫 的私人連結 - 單一伺服器
適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器 適用於 PostgreSQL 的 Azure 資料庫 發生什麼事?。
私人端點是 Azure 中私人連結的基本建置組塊。 它可讓 Azure 資源,例如 虛擬機器(VM),私下與私人鏈接資源通訊。 在本文中,您將瞭解如何使用 Azure CLI 在 Azure 虛擬網絡 和具有 Azure 私人端點的 適用於 PostgreSQL 的 Azure 資料庫 單一伺服器中建立 VM。
注意
私人連結功能僅適用於一般用途或記憶體優化定價層中的 適用於 PostgreSQL 的 Azure 資料庫 伺服器。 請確定資料庫伺服器位於下列其中一個定價層中。
必要條件
若要逐步執行本作法指南,您需要︰
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
如果您決定改為在本機安裝和使用 Azure CLI,本快速入門會要求您使用 Azure CLI 2.0.28 版或更新版本。 若要尋找已安裝的版本,請執行 az --version
。 如需安裝或升級資訊,請參閱 安裝 Azure CLI 。
建立資源群組
您必須先建立資源群組來裝載 虛擬網絡,才能建立任何資源。 使用 az group create 來建立資源群組。 下列範例會在 westeurope 位置建立名為 myResourceGroup 的資源群組:
az group create --name myResourceGroup --location westeurope
建立虛擬網路
使用 az network vnet create 建立虛擬網路。 此範例會建立一個名為 myVirtualNetwork 的預設虛擬網路,其中含有一個名為 mySubnet 的子網路:
az network vnet create \
--name myVirtualNetwork \
--resource-group myResourceGroup \
--subnet-name mySubnet
停用子網路的私人端點原則
Azure 會將資源部署到虛擬網路內的子網路,因此您必須建立或更新子網路,以停用私人端點網路原則。 使用 az network vnet subnet update 來更新名為 mySubnet 的子網路設定:
az network vnet subnet update \
--name mySubnet \
--resource-group myResourceGroup \
--vnet-name myVirtualNetwork \
--disable-private-endpoint-network-policies true
建立 VM
使用 az vm create 建立 VM。 出現提示時,請提供密碼以作為 VM 的登入認證。 此範例會建立名為 myVm 的 VM:
az vm create \
--resource-group myResourceGroup \
--name myVm \
--image Win2019Datacenter
記下 VM 的公用 IP 位址。 在下一個步驟中,您將使用此位址從因特網連線到 VM。
建立 適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器
使用 az postgres server create 命令建立 適用於 PostgreSQL 的 Azure 資料庫。 請記住,您的 PostgreSQL 伺服器名稱在整個 Azure 中必須是唯一的,因此請將佔位元值取代為您上述使用的唯一值:
# Create a server in the resource group
[!INCLUDE [applies-to-postgresql-single-server](../includes/applies-to-postgresql-single-server.md)]
[!INCLUDE [azure-database-for-postgresql-single-server-deprecation](../includes/azure-database-for-postgresql-single-server-deprecation.md)]
az postgres server create \
--name mydemoserver \
--resource-group myresourcegroup \
--location westeurope \
--admin-user mylogin \
--admin-password <server_admin_password> \
--sku-name GP_Gen5_2
建立私人端點
在 虛擬網絡 中建立 PostgreSQL 伺服器的私人端點:
az network private-endpoint create \
--name myPrivateEndpoint \
--resource-group myResourceGroup \
--vnet-name myVirtualNetwork \
--subnet mySubnet \
--private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforPostgreSQL/servers" --query "id" -o tsv) \
--group-id postgresqlServer \
--connection-name myConnection
設定私人 DNS 區域
建立適用於 PostgreSQL 伺服器網域的 私用 DNS 區域,並與 虛擬網絡 建立關聯連結。
az network private-dns zone create --resource-group myResourceGroup \
--name "privatelink.postgres.database.azure.com"
az network private-dns link vnet create --resource-group myResourceGroup \
--zone-name "privatelink.postgres.database.azure.com"\
--name MyDNSLink \
--virtual-network myVirtualNetwork \
--registration-enabled false
#Query for the network interface ID
networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv)
az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json
# Copy the content for privateIPAddress and FQDN matching the Azure database for PostgreSQL name
[!INCLUDE [applies-to-postgresql-single-server](../includes/applies-to-postgresql-single-server.md)]
[!INCLUDE [azure-database-for-postgresql-single-server-deprecation](../includes/azure-database-for-postgresql-single-server-deprecation.md)]
#Create DNS records
az network private-dns record-set a create --name myserver --zone-name privatelink.postgres.database.azure.com --resource-group myResourceGroup
az network private-dns record-set a add-record --record-set-name myserver --zone-name privatelink.postgres.database.azure.com --resource-group myResourceGroup -a <Private IP Address>
注意
在某些情況下,適用於 PostgreSQL 的 Azure 資料庫 和 VNet 子網位於不同的訂用帳戶中。 在這些情況下,您必須確定下列設定:
- 請確定這兩個訂用帳戶都 已註冊 Microsoft.DBforPostgreSQL 資源提供者。 如需詳細資訊,請參閱 資源提供者。
從網際網路連線至 VM
從網際網路連線至 VM:myVm,如下所示:
在入口網站的搜尋列中,輸入 myVm。
選取 [連線] 按鈕。 選取 [連線] 按鈕之後,隨即會開啟 [連線至虛擬機器]。
選取 [下載 RDP 檔案]。 Azure 會建立一個「遠端桌面通訊協定」(.rdp) 檔案,並下載至您的電腦。
開啟 downloaded.rdp 檔案。
如果出現提示,請選取 [連接]。
輸入在建立 VM 時所指定的使用者名稱與密碼。
注意
您可能需要選取 [更多選擇>使用其他帳戶],以指定您在建立 VM 時輸入的認證。
選取 [確定]。
您可能會在登入程序期間收到憑證警告。 如果您收到憑證警告,請選取 [是] 或 [繼續]。
當 VM 桌面出現之後,將它最小化以回到您的本機桌面。
從 VM 私下存取 PostgreSQL 伺服器
在 myVm 的遠端桌面中,開啟 PowerShell。
輸入
nslookup mydemopostgresserver.privatelink.postgres.database.azure.com
。您將收到如下訊息:
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: mydemopostgresserver.privatelink.postgres.database.azure.com Address: 10.1.3.4
使用任何可用的客戶端測試 PostgreSQL 伺服器的私人連結連線。 下列範例會使用 Azure Data Studio 來執行作業。
在 [新增連線] 中,輸入或選取這項資訊:
設定 值 伺服器類型 選取 [PostgreSQL]。 伺服器名稱 選取 mydemopostgresserver.privatelink.postgres.database.azure.com 使用者名稱 輸入使用者名稱作為 postgreSQL 伺服器建立期間所提供的username@servername。 密碼 輸入 PostgreSQL 伺服器建立期間提供的密碼。 SSL 選取必要。 選取 Connect。
瀏覽左側功能表中的資料庫。
(選擇性)從 postgreSQL 伺服器建立或查詢資訊。
關閉對 myVm 的遠端桌面連線。
清除資源
不再需要時,您可以使用 az group delete 來移除資源群組及其擁有的所有資源:
az group delete --name myResourceGroup --yes
下一步
- 深入了解 什麼是 Azure 私人端點