共用方式為


在 Azure Kubernetes Service (AKS) 私人叢集中部署 BDC

重要

Microsoft SQL Server 2019 巨量資料叢集附加元件將會淘汰。 SQL Server 2019 巨量資料叢集的支援將於 2025 年 2 月 28 日結束。 平台上將完全支援含軟體保證 SQL Server 2019 的所有現有使用者,而且軟體將會持續透過 SQL Server 累積更新來維護,直到該時間為止。 如需詳細資訊,請參閱公告部落格文章 (英文) 與 Microsoft SQL Server 平台上的巨量資料選項 (部分機器翻譯)。

此文章說明如何在 Azure Kubernetes Service (AKS) 私人叢集上部署的 SQL Server 巨量資料叢集。 此組態支援在企業網路環境中限制公用 IP 位址的使用。

私人部署提供下列優點:

  • 限制公用 IP 位址的使用
  • 應用程式伺服器和叢集節點集區之間的網路流量僅保留在私人網路上
  • 適用於強制輸出流量以符合特定需求的自訂設定

此文章示範如何使用 AKS 私人叢集來限制公用 IP 位址的使用,同時套用個別的安全性字串。

使用 AKS 私人叢集部署私人巨量資料叢集

若要開始使用,請建立 AKS 私人叢集,以確保 API 伺服器與節點集區之間的網路流量僅保留在私人網路上。 控制平面或 API 伺服器在 AKS 私人叢集中具有內部 IP 位址。

此節示範如何在具有進階網路功能 (CNI) 的 Azure Kubernetes Service (AKS) 私人叢集中部署巨量資料叢集。

建立具有進階網路功能的私人 AKS 叢集


export REGION_NAME=<your Azure region >
export RESOURCE_GROUP=< your resource group name >
export SUBNET_NAME=aks-subnet
export VNET_NAME=bdc-vnet
export AKS_NAME=< your aks private cluster name >
 
az group create -n $RESOURCE_GROUP -l $REGION_NAME
 
az network vnet create \
    --resource-group $RESOURCE_GROUP \
    --location $REGION_NAME \
    --name $VNET_NAME \
    --address-prefixes 10.0.0.0/8 \
    --subnet-name $SUBNET_NAME \
    --subnet-prefix 10.1.0.0/16
 

SUBNET_ID=$(az network vnet subnet show \
    --resource-group $RESOURCE_GROUP \
    --vnet-name $VNET_NAME \
    --name $SUBNET_NAME \
    --query id -o tsv)
 
echo $SUBNET_ID
## will be displayed something similar as the following: 
/subscriptions/xxxx-xxxx-xxx-xxxx-xxxxxxxx/resourceGroups/your-bdc-rg/providers/Microsoft.Network/virtualNetworks/your-aks-vnet/subnets/your-aks-subnet

建立具有進階網路功能 (CNI) 的 AKS 私人叢集

為能夠繼續進行下一個步驟,您必須佈建具有已啟用私人叢集功能的 Standard Load Balancer 的 AKS 叢集。 您的命令將如下所示:

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_NAME \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --network-plugin azure \
    --vnet-subnet-id $SUBNET_ID \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --node-vm-size Standard_D13_v2 \
    --node-count 2 \
    --generate-ssh-keys

成功部署之後,您可以移至 <MC_yourakscluster> 資源群組,而且您會發現 kube-apiserver 是私人端點。 如需範例,請參閱下一節。

連線至 AKS 叢集

az aks get-credentials -n $AKS_NAME -g $RESOURCE_GROUP

建置巨量資料叢集部署設定檔

連線到 AKS 叢集之後,您可以開始部署 BDC,而且您可以準備環境變數並起始部署:

azdata bdc config init --source aks-dev-test --target private-bdc-aks --force

產生並設定 BDC 自訂部署設定檔:

azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.docker.imageTag=2019-CU6-ubuntu-16.04"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.data.className=default"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.logs.className=default"

azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[1].serviceType=NodePort"

azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.master.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.gateway.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.appproxy.spec.endpoints[0].serviceType=NodePort"

部署具有 HA 的 SQL Server 巨量資料叢集

如果您要部署具有高可用性 (HA) 的 SQL Server 巨量資料叢集 (SQL-BDC) (部分機器翻譯),您將會使用部署 aks-dev-test-ha 部署設定檔。 成功部署之後,您可以使用相同的 kubectl get svc 命令,而且您將會看到已建立額外的 master-secondary-svc 服務。 您需要將 ServiceType 設定為 NodePort。 其他步驟將與上一節所提及的步驟類似。

下列範例會將 ServiceType 設定為 NodePort

azdata bdc config replace -c private-bdc-aks /bdc.json -j "$.spec.resources.master.spec.endpoints[1].serviceType=NodePort"

在 AKS 私人叢集中部署 BDC

export AZDATA_USERNAME=<your bdcadmin username>
export AZDATA_PASSWORD=< your bdcadmin password>

azdata bdc create --config-profile private-bdc-aks --accept-eula yes

檢查部署狀態

部署將需要幾分鐘的時間,而且您可以使用下列命令檢查部署狀態:

kubectl get pods -n mssql-cluster -w

檢查服務狀態

使用下列命令檢查服務。 確認這些服務全都狀況良好,且沒有任何外部 IP:

kubectl get services -n mssql-cluster

了解如何在 AKS 私人叢集中管理巨量資料叢集 (部分機器翻譯),然後下一個步驟是連線到 SQL Server 巨量資料叢集 (部分機器翻譯)。

請參閱 GitHub 上的 SQL Server 範例存放庫中適用於此案例的自動化指令碼。