Important
Microsoft SQL Server 2019 大数据群集已停用。 对 SQL Server 2019 大数据群集的支持已于 2025 年 2 月 28 日结束。 有关详细信息,请参阅Microsoft SQL Server 平台上的公告博客文章和大数据选项。
本文介绍如何在 Azure Kubernetes 服务(AKS)专用群集上部署 SQL Server 大数据群集。 此配置支持在企业网络环境中限制使用公共 IP 地址。
专用部署具有以下优势:
- 公共 IP 地址的使用受限
- 应用程序服务器和群集节点池之间的网络流量仅保留在专用网络上
- 自定义配置以满足特定的强制性出口流量要求
本文演示如何使用 AKS 专用群集来限制公共 IP 地址的使用,同时应用了相应的安全字符串。
使用 AKS 专用群集部署专用大数据群集
若要开始,请创建 AKS 专用群集 ,以确保 API 服务器和节点池之间的网络流量仅保留在专用网络上。 控制平面或 API 服务器在 AKS 专用群集中具有内部 IP 地址。
本部分介绍如何使用高级网络(CNI)在 Azure Kubernetes 服务(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
使用高级网络创建 AKS 专用群集(CNI)
若要能够进入下一步,需要预配启用了专用群集功能的标准负载均衡器的 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 示例存储库中的此方案的自动化脚本。