適用於:SQL Server 2019 (15.x)
這很重要
Microsoft SQL Server 2019 巨量資料叢集附加元件將會淘汰。 SQL Server 2019 巨量資料叢集的支援將於 2025 年 2 月 28 日結束。 平台上將完全支援含軟體保證 SQL Server 2019 的所有現有使用者,而且軟體將會持續透過 SQL Server 累積更新來維護,直到該時間為止。 如需詳細資訊,請參閱公告部落格文章與 Microsoft SQL Server 平台上的巨量資料選項。
SQL Server 巨量數據叢集會部署為 Kubernetes 叢集上的 Docker 容器。 這是安裝和設定步驟的概觀:
- 在單一 VM、VM 叢集、Azure Kubernetes Service (AKS)、Red Hat OpenShift 或 Azure Red Hat OpenShift (ARO) 中設定 Kubernetes 叢集。
- 在用戶端電腦上安裝叢集組態工具 Azure Data CLI (
azdata
)。 - 在 Kubernetes 叢集中部署 SQL Server 巨量數據叢集。
已測試的組態
如需完整的 Kubernetes 平臺清單,以驗證部署 SQL Server 大數據叢集,請參閱 測試組態。
SQL Server 版本類型
版本 | 註釋 |
---|---|
企業 標準 開發人員 |
巨量數據叢集版本是由 SQL Server 主要實例的版本所決定。 在部署時,開發人員版本預設會部署。 您可以在部署之後變更版本。 請參閱 設定 SQL Server 主要實例。 |
Kubernetes
Kubernetes 叢集設定
如果您已經有符合上述必要條件的 Kubernetes 叢集,則可以直接跳到 部署步驟。 本節假設對 Kubernetes 概念有基本的瞭解。 如需 Kubernetes 的詳細資訊,請參閱 Kubernetes 檔。
您可以選擇以下列方式部署 Kubernetes:
在下列專案上部署 Kubernetes: | 說明 | 連結 |
---|---|---|
Azure Kubernetes Service (AKS) | Azure 中的受控 Kubernetes 容器服務。 | 指示 |
單一或多部機器 (kubeadm ) |
使用 在實體或虛擬機上部署的 Kubernetes 叢集 kubeadm |
指示 |
Azure Red Hat OpenShift | 在 Azure 中執行的 OpenShift 受控供應專案。 | 指示 |
Red Hat OpenShift | 混合式雲端企業 Kubernetes 應用程式平臺。 | 指示 |
驗證 Kubernetes 組態
kubectl
執行 命令以檢視叢集組態。 確定 kubectl 指向正確的叢集內容。
kubectl config view
這很重要
在您使用 kubeadm
啟動的多節點 Kubernetes 叢集上進行部署之前,請確保部署目標的所有 Kubernetes 節點上的時鐘均已同步,然後再開始部署巨量數據叢集。 巨量數據叢集具有各種服務內建的健康情況屬性,這些服務會區分時間,而時鐘扭曲可能會導致不正確的狀態。
設定 Kubernetes 叢集之後,您可以繼續部署新的 SQL Server 巨量數據叢集。 如果您要從舊版升級,請參閱 如何升級 SQL Server 巨量數據叢集。
確定您已設定記憶體
大部分的巨量數據叢集部署都應該有永續性記憶體。 此時,您必須確定您有一個計劃,讓您在部署之前,如何在 Kubernetes 叢集上提供永續性記憶體。
- 如果您在 AKS 中部署,則不需要任何記憶體設定。 AKS 提供內建記憶體類別與動態布建。 您可以在部署組態檔中自訂記憶體類別 (
default
或managed-premium
)。 內建配置檔會使用default
記憶體類別。 - 如果您要在您使用
kubeadm
部署的 Kubernetes 叢集上進行部署,您必須確保具備足夠的儲存空間,以供所需的規模叢集使用,並已設定為可用。 如果您想要自定義記憶體的使用方式,您應該先執行此動作,再繼續進行。 請參閱 Kubernetes 上使用 SQL Server 巨量數據叢集的數據持續性。
安裝 SQL Server 2019 巨量資料工具
在部署 SQL Server 2019 巨量數據叢集之前,請先 安裝巨量數據工具:
- Azure 數據 CLI (
azdata
) kubectl
- Azure Data Studio
- 適用於 Azure Data Studio 的數據虛擬化延伸模組
- Azure CLI,如果部署至 AKS
部署概觀
大部分巨量數據叢集設定都是在 JSON 部署組態檔中定義。 您可以針對使用 所 kubeadm
建立的 AKS 和 Kubernetes 叢集使用預設部署配置檔,也可以自定義自己的部署組態檔,以在安裝期間使用。 基於安全性考慮,驗證設定會透過環境變數傳遞。
下列各節提供有關如何設定巨量數據叢集部署,以及常見自定義範例的詳細數據。 此外,您一律可以使用 VS Code 之類的編輯器來編輯自定義部署組態檔。
預設組態
巨量數據叢集部署選項定義於 JSON 組態檔中。 您可以從 Azure Data CLI 中提供的內建部署設定檔開始自定義叢集部署。azdata
備註
巨量資料叢集部署所需的容器映像檔被裝載於 Microsoft Container Registry(mcr.microsoft.com
)中的 mssql/bdc
存放庫。 根據預設,這些設定已包含在 control.json
Azure Data CLI 隨附的每個部署配置檔的組態檔中。azdata
此外,每個版本的容器映像標籤也會在相同的組態檔中預先填入。 如果您需要將容器映像提取到您自己的私人容器登錄,或修改容器登錄/存放庫設定,請遵循離線安裝一文中的指示
執行此指令以尋找可用的樣本:
azdata bdc config list -o table
SQL Server 2019 CU5 提供下列範本:
部署配置檔 | Kubernetes 環境 |
---|---|
aks-dev-test |
在 Azure Kubernetes Service 上部署 SQL Server 巨量數據叢集 (AKS) |
aks-dev-test-ha |
在 Azure Kubernetes Service (AKS) 上部署 SQL Server 巨量數據叢集。 SQL Server 主要和 HDFS 名稱節點等任務關鍵性服務已設定為高可用性。 |
aro-dev-test |
在 Azure Red Hat OpenShift 上部署 SQL Server 巨量數據叢集以進行開發和測試。 SQL Server 2019 CU 5 中引進。 |
aro-dev-test-ha |
在 Red Hat OpenShift 叢集上部署高可用性的 SQL Server 巨量數據叢集,以進行開發和測試。 SQL Server 2019 CU 5 中引進。 |
kubeadm-dev-test |
使用單一或多部實體或虛擬機,在以 kubeadm 建立的 Kubernetes 叢集上部署 SQL Server 巨量數據叢集。 |
kubeadm-prod |
使用單一或多部實體或虛擬機,在以 kubeadm 建立的 Kubernetes 叢集上部署 SQL Server 巨量數據叢集。 使用此範本可讓巨量數據叢集服務與 Active Directory 整合。 SQL Server 主要實例和 HDFS 名稱節點等任務關鍵性服務會部署在高可用性組態中。 |
openshift-dev-test |
在 Red Hat OpenShift 叢集上部署 SQL Server 巨量數據叢集以進行開發和測試。 SQL Server 2019 CU 5 中引進。 |
openshift-prod |
在 Red Hat OpenShift 叢集上部署高可用性的 SQL Server 巨量數據叢集。 SQL Server 2019 CU 5 中引進。 |
您可以執行 azdata bdc create
來部署巨量數據叢集。 這會提示您選擇其中一個預設組態,然後引導您完成部署。
第一次執行 Azure Data CLI (azdata
) 時,您必須包含 --accept-eula=yes
才能接受使用者許可協定 (EULA)。
azdata bdc create --accept-eula=yes
在此案例中,系統會提示您輸入任何不屬於預設組態的設定,例如密碼。
這很重要
巨量資料叢集的預設名稱是 mssql-cluster
。 為了能夠使用 kubectl
命令來指定具體的 Kubernetes 命名空間,請務必了解需要搭配 -n
參數。
自定義組態
您也可以自定義您的部署,以容納您計劃執行的工作負載。 您無法在部署后變更巨量數據叢集服務的規模(複本數目)或記憶體設定,因此您必須謹慎規劃部署設定,以避免容量問題。 若要自定義您的部署,請遵循下列步驟:
從其中一個符合 Kubernetes 環境的標準部署配置檔開始。 您可以使用
azdata bdc config list
命令來列出它們:azdata bdc config list
若要自定義您的部署,請使用
azdata bdc config init
命令建立部署配置檔的複本。 例如,下列命令會在名為aks-dev-test
的目標目錄中建立部署組態檔的custom
複本:azdata bdc config init --source aks-dev-test --target custom
小提示
--target
根據 參數,指定包含組態檔bdc.json
和 的control.json
--source
目錄。若要自定義部署組態配置檔中的設定,您可以在適合編輯 JSON 檔案的工具中編輯部署組態檔,例如 VS Code。 針對文本化自動化,您也可以使用
azdata bdc config
命令來編輯自定義部署配置檔。 例如,下列命令會改變自訂部署設定檔,將已部署叢集的名稱從預設值 (mssql-cluster
) 變更為test-cluster
:azdata bdc config replace --config-file custom/bdc.json --json-values "metadata.name=test-cluster"
小提示
您也可以使用 命令的 --name 參數
azdata create bdc
,在部署階段傳入叢集名稱。 命令中的參數優先順序高於組態檔中的值。尋找 JSON 路徑的實用工具是 JSONPath Online 評估工具。
除了傳遞鍵值對之外,您也可以提供內嵌 JSON 值或傳遞 JSON 修補檔案。 如需詳細資訊,請參閱 設定巨量數據叢集資源和服務的部署設定。
將自訂組態檔傳遞至
azdata bdc create
。 請注意,您必須設定必要的 環境變數,否則終端會提示輸入值:azdata bdc create --config-profile custom --accept-eula yes
警告
必須在部署設定檔 control.json 檔案中將參數 imagePullPolicy
設定為 "Always"
。
如需部署組態檔結構的詳細資訊,請參閱 部署組態檔參考。 如需更多組態範例,請參閱 設定巨量數據叢集的部署設定。
環境變數
下列環境變數用於未儲存在部署組態檔中的安全性設定。 請注意,組態檔中可以設定認證以外的 Docker 設定。
環境變數 | 要求 | 說明 |
---|---|---|
AZDATA_USERNAME |
為必填項目 | SQL Server 巨量數據叢集管理員的用戶名稱。 SQL Server 主要實例中會建立具有相同名稱的系統管理員登入。 作為安全性最佳做法, sa 帳戶已停用。 從 SQL Server 2019 (15.x) CU 5 開始,當您部署具有基本身份驗證的新叢集時,所有端點(包括閘道)使用 AZDATA_USERNAME 和 AZDATA_PASSWORD 。 升級至 CU 5 之叢集上的端點會繼續使用 root 作為使用者名稱來連線至閘道端點。 這項變更不適用於使用 Active Directory 驗證的部署。 請參閱在版本資訊中的透過閘道端點存取服務的憑證。 |
AZDATA_PASSWORD |
為必填項目 | 上面建立之用戶帳戶的密碼。 在 SQL Server 2019 CU5 之前部署的叢集上,使用者會使用相同的 root 密碼來保護 Knox 閘道和 HDFS。 |
ACCEPT_EULA |
第一次使用 Azure Data CLI 的必需條件 (azdata ) |
設定為 「yes」。。 當設定為環境變數時,它會將 EULA 同時套用至 SQL Server 和 Azure Data CLI (azdata )。 如果未設定為環境變數,您可以在首次使用 Azure Data CLI (--accept-eula=yes ) 命令時包含 azdata 。 |
DOCKER_USERNAME |
可選 | 為存取私人存放庫中的容器映像提供用戶名稱。 如需如何使用私人 Docker 存放庫進行巨量數據叢集部署的詳細資訊,請參閱 離線部署 主題。 |
DOCKER_PASSWORD |
可選 | 存取上述私人存放庫的密碼。 |
在呼叫 azdata bdc create
之前,必須先設定這些環境變數。 如果未設定任何變數,系統會提示您輸入變數。
下列範例示範如何設定 Linux (bash) 和 Windows 的環境變數 (PowerShell):
export AZDATA_USERNAME=admin
export AZDATA_PASSWORD=<password>
export ACCEPT_EULA=yes
SET AZDATA_USERNAME=admin
SET AZDATA_PASSWORD=<password>
備註
在 SQL Server 2019 CU 5 之前部署的叢集上,您必須使用 root
使用者搭配上述密碼使用 Knox 閘道。
root
是這個基本身份驗證中唯一支援的使用者(用戶名稱/密碼)。
從 SQL Server 2019 (15.x) CU 5 開始,當您部署具有基本身份驗證的新叢集時,所有端點(包括閘道)使用 AZDATA_USERNAME
和 AZDATA_PASSWORD
。 升級至 CU 5 之叢集上的端點會繼續使用 root
作為使用者名稱來連線至閘道端點。 這項變更不適用於使用 Active Directory 驗證的部署。 請參閱在版本資訊中的透過閘道端點存取服務的憑證。
若要使用基本身份驗證連線到 SQL Server,請使用與AZDATA_USERNAME和AZDATA_PASSWORD 環境變數相同的值。
設定環境變數之後,您必須執行 azdata bdc create
以觸發部署。 此範例會使用上面建立的叢集組態設定檔:
azdata bdc create --config-profile custom --accept-eula yes
請注意下列指導方針:
- 如果密碼包含任何特殊字元,請務必以雙引號括住密碼。 您可以將
AZDATA_PASSWORD
設定為任何您喜歡的,但請確保密碼足夠複雜,且不會使用!
、&
或'
字元。 請注意,雙引號分隔符只能在bash命令中運作。 -
AZDATA_USERNAME
登入是在安裝期間 SQL Server 主要實例上創建的系統管理員帳戶。 建立 SQL Server 容器之後,您可以在容器中執行AZDATA_PASSWORD
來檢視您指定的echo $AZDATA_PASSWORD
環境變數。 基於安全性考慮,請將密碼變更為最佳做法。
無人值守安裝
針對無人值守部署,您必須設定所有必要的環境變數、使用組態檔,並使用參數呼叫 azdata bdc create
命令 --accept-eula yes
。 上一節中的範例示範自動安裝的語法。
監視部署
在叢集啟動程式期間,用戶端命令視窗會傳回部署狀態。 在部署程序期間,您應該會看到一系列訊息,其中正在等候控制器容器。
Waiting for cluster controller to start.
在 15 到 30 分鐘內,您應該會得知控制器 Pod 已開始運行。
Cluster controller endpoint is available at 11.111.111.11:30080.
Cluster control plane is ready.
這很重要
由於下載巨量數據叢集元件容器映射所需的時間,整個部署可能需要很長的時間。 不過,它不應該花費數小時。 如果您遇到部署問題,請參閱 監視 SQL Server 巨量數據叢集並進行疑難解答。
部署完成時,輸出會通知您成功:
Cluster deployed successfully.
小提示
除非由自訂組態修改,否則已部署巨量資料叢集的預設名稱為 mssql-cluster
。
擷取端點
部署腳本成功完成之後,您可以使用下列步驟取得巨量數據叢集的外部端點位址。
部署之後,請從部署標準輸出或查看下列
kubectl
命令的 EXTERNAL-IP 輸出,尋找控制器端點的IP位址:kubectl get svc controller-svc-external -n <your-big-data-cluster-name>
小提示
如果您在部署期間未變更預設名稱,請在先前的命令中使用
-n mssql-cluster
。mssql-cluster
是巨量數據叢集的預設名稱。使用 azdata login 登入巨量數據叢集。 將
--endpoint
參數設定為控制器端點的外部IP位址。azdata login --endpoint https://<ip-address-of-controller-svc-external>:30080 --username <user-name>
指定您在部署期間為巨量數據叢集管理員設定的使用者名稱和密碼(AZDATA_USERNAME和AZDATA_PASSWORD)。
小提示
如果您是 Kubernetes 叢集管理員,而且可以存取叢集組態檔 (kube 組態檔),您可以將目前的內容設定為指向目標 Kubernetes 叢集。 在此情況下,您可以登入
azdata login -n <namespaceName>
,其中namespace
是巨量數據叢集名稱。 如果未在登入命令內指定,系統會提示您輸入認證。執行 azdata bdc endpoint list 以取得清單,其中包含每個端點的描述及其對應的IP位址和埠值。
azdata bdc endpoint list -o table
下列清單顯示此指令的範例輸出:
Description Endpoint Ip Name Port Protocol ------------------------------------------------------ --------------------------------------------------------- -------------- ----------------- ------ ---------- Gateway to access HDFS files, Spark https://11.111.111.111:30443 11.111.111.111 gateway 30443 https Spark Jobs Management and Monitoring Dashboard https://11.111.111.111:30443/gateway/default/sparkhistory 11.111.111.111 spark-history 30443 https Spark Diagnostics and Monitoring Dashboard https://11.111.111.111:30443/gateway/default/yarn 11.111.111.111 yarn-ui 30443 https Application Proxy https://11.111.111.111:30778 11.111.111.111 app-proxy 30778 https Management Proxy https://11.111.111.111:30777 11.111.111.111 mgmtproxy 30777 https Log Search Dashboard https://11.111.111.111:30777/kibana 11.111.111.111 logsui 30777 https Metrics Dashboard https://11.111.111.111:30777/grafana 11.111.111.111 metricsui 30777 https Cluster Management Service https://11.111.111.111:30080 11.111.111.111 controller 30080 https SQL Server Master Instance Front-End 11.111.111.111,31433 11.111.111.111 sql-server-master 31433 tcp HDFS File System Proxy https://11.111.111.111:30443/gateway/default/webhdfs/v1 11.111.111.111 webhdfs 30443 https Proxy for running Spark statements, jobs, applications https://11.111.111.111:30443/gateway/default/livy/v1 11.111.111.111 livy 30443 https
您也可以執行下列 kubectl
命令來取得為叢集部署的所有服務端點:
kubectl get svc -n <your-big-data-cluster-name>
確認叢集狀態
部署之後,您可以使用 azdata bdc status show 命令來檢查叢集的狀態。
azdata bdc status show
小提示
若要執行狀態命令,您必須先使用 azdata login
上一個端點區段中所示的 命令登入。
下列顯示此指令的範例輸出:
Bdc: ready Health Status: healthy
===========================================================================================================================================================================================================================================
Services: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Servicename State Healthstatus Details
sql ready healthy -
hdfs ready healthy -
spark ready healthy -
control ready healthy -
gateway ready healthy -
app ready healthy -
Sql Services: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
master ready healthy StatefulSet master is healthy
compute-0 ready healthy StatefulSet compute-0 is healthy
data-0 ready healthy StatefulSet data-0 is healthy
storage-0 ready healthy StatefulSet storage-0 is healthy
Hdfs Services: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
nmnode-0 ready healthy StatefulSet nmnode-0 is healthy
storage-0 ready healthy StatefulSet storage-0 is healthy
sparkhead ready healthy StatefulSet sparkhead is healthy
Spark Services: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
sparkhead ready healthy StatefulSet sparkhead is healthy
storage-0 ready healthy StatefulSet storage-0 is healthy
Control Services: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
controldb ready healthy -
control ready healthy -
metricsdc ready healthy DaemonSet metricsdc is healthy
metricsui ready healthy ReplicaSet metricsui is healthy
metricsdb ready healthy StatefulSet metricsdb is healthy
logsui ready healthy ReplicaSet logsui is healthy
logsdb ready healthy StatefulSet logsdb is healthy
mgmtproxy ready healthy ReplicaSet mgmtproxy is healthy
Gateway Services: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
gateway ready healthy StatefulSet gateway is healthy
App Services: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
appproxy ready healthy ReplicaSet appproxy is healthy
您也可以使用下列命令取得更詳細的狀態:
- azdata bdc control status show 會傳回與控件管理服務相關聯之所有元件的健全狀態
azdata bdc control status show
範例輸出:
Control: ready Health Status: healthy
===========================================================================================================================================================================================================================================
Resources: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
controldb ready healthy -
control ready healthy -
metricsdc ready healthy DaemonSet metricsdc is healthy
metricsui ready healthy ReplicaSet metricsui is healthy
metricsdb ready healthy StatefulSet metricsdb is healthy
logsui ready healthy ReplicaSet logsui is healthy
logsdb ready healthy StatefulSet logsdb is healthy
mgmtproxy ready healthy ReplicaSet mgmtproxy is healthy
-
azdata bdc sql status show
會傳回具有 SQL Server 服務之所有資源的健全狀態
azdata bdc sql status show
範例輸出:
Sql: ready Health Status: healthy
===========================================================================================================================================================================================================================================
Resources: ready Health Status: healthy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Resourcename State Healthstatus Details
master ready healthy StatefulSet master is healthy
compute-0 ready healthy StatefulSet compute-0 is healthy
data-0 ready healthy StatefulSet data-0 is healthy
storage-0 ready healthy StatefulSet storage-0 is healthy
這很重要
使用 --all
參數時,這些命令的輸出會包含Kibana和 Grafana 儀錶板的URL,以取得更詳細的分析。
除了使用 Azure Data CLI (azdata
),您也可以使用 Azure Data Studio 來尋找端點和狀態資訊。 如需使用 Azure Data CLI(azdata
) 和 Azure Data Studio 檢視叢集狀態的詳細資訊,請參閱 如何檢視巨量數據叢集的狀態。
連接至叢集
如需如何連線到巨量數據叢集的詳細資訊,請參閱 使用 Azure Data Studio 連線到 SQL Server 巨量數據叢集。
後續步驟
若要深入瞭解 SQL Server 巨量數據叢集部署,請參閱下列資源: