Sql-Server

在 sql server fci 配置中安裝 ssis 的推薦方法是什麼?

  • March 10, 2022

我正在計劃使用 fci 安裝 sql server。

將有 2 個 sql server 2019 實例處於主動/被動模式;它們共享相同的 SAN。

這個問題是關於 ssis 的。

連結:https ://docs.microsoft.com/en-us/sql/integration-services/service/integration-services-ssis-in-a-cluster?view=sql-server-ver15

不建議使用集群集成服務,因為集成服務服務不是集群服務或集群感知服務,並且不支持從一個集群節點到另一個集群節點的故障轉移。因此,在集群環境中,應在集群中的每個節點上安裝並作為獨立服務啟動集成服務。

集成服務是我在安裝 sql server 數據庫引擎時通常(在基於非 fci 的安裝中)從功能頁面中選擇的共享功能。

這是我第一次在fci環境中安裝數據庫引擎和集成服務,所以我想問一下:上面引用中的**每個節點上作為獨立服務安裝和啟動是什麼意思?**是不是意味著我應該首先配置fci和2個sql server實例(I1和I2,當然在2個節點上)沒有集成服務,然後用數據庫引擎創建2個新的sql server實例(node1上的I3和node2上的I4)和集成服務?

如果是這樣,那麼我是否必須在兩個基於 ssis 的實例上部署我的所有 ssis 包?

這是否意味著 FCI 僅針對 I1 和 I2 數據庫引擎進行故障轉移?

我的偏好是將 SSIS 安裝在與我的主數據庫實例不同的伺服器上。這就是為什麼。

在大多數情況下,SSIS 是一個獨立的應用程序。因此,它也有自己的資源需求,並根據需要消耗 CPU 和記憶體。有時 SSIS 會使 CPU 和記憶體達到峰值,並限制 SQL Server 獲取它想要的 CPU 和記憶體資源。同樣,SQL Server 可以使 CPU 和記憶體達到峰值,並限制 SSIS 獲取它想要的 CPU 和記憶體。

在一台伺服器上平衡兩個應用程序之間的 CPU 和記憶體需求比將它們隔離到自己的 VM 並適當地擴展它們要困難得多。因此,要做到這一點,您需要考慮調整伺服器大小以支持兩者,並在 SQL Server 中設置最大伺服器記憶體設置,以確保有足夠的記憶體可用於 SSIS。如果可能的話,這只是我寧願避免的頭痛。

相反,調整您的 SQL Server 以支持您的 SQL Server 工作負載。例如,如果在峰值負載下,您的 SQL Server 需要 8 個 CPU 和 64 GB 的 RAM,則建構一個 SQL VM 並以此為基準。現在,如果 SSIS 需要 2 個 CPU 和 16 GB RAM,那麼這些需求是您已經決定 SQL Server 需要的 8 個 CPU 和 64 GB RAM 的淨補充。

如果您選擇在同一台伺服器上執行這兩個,您將看到 10 個 CPU 和 78 GB 的 RAM。通常,無論採用哪種方式進行切片,都需要相同的數量或資源來執行這兩個服務。問題歸結為您是否要嘗試在同一台伺服器上管理它們。

如今,有了虛擬化,這幾乎不是問題。只需為每項服務劃分所需的 CPU 和記憶體資源,並為每項服務分配自己的 VM 以在其上執行。

這將使性能問題更容易在路上進行故障排除。太多次我看到當單個伺服器上出現性能問題時,DBA 很難確定是 SSIS 還是 SQL 的問題。

以 SSIS 包執行時 CPU 峰值為 100% 為例。這與從 OLTP 數據庫中提取數據的錯誤查詢有關,還是與 SSIS 包和整個 ETL 過程中的效率低下有關?

通過在不同的伺服器上執行這兩個服務,您可以輕鬆查看在 SSIS 過程中哪個伺服器的資源峰值最多,並直接處理組件。您還可以防止一項服務影響另一項服務,因為它們不再共享伺服器。

話雖如此,您還可以參考MS Docs 上對高可用性的 Scale Out 支持,以幫助在未與 SQL Server 一起安裝在同一群集上時使 SSIS 具有高可用性。

要在 FCI 上安裝 SSIS,只需使用SSIS 目錄。SQL Server 實例、SQL Server 代理和 SSIS 目錄將一起進行故障轉移,您甚至不需要舊的 SSIS 服務。

引用自:https://dba.stackexchange.com/questions/308483