如何在本地數據中心安裝Service Fabric for Windows集群
概述
首先本文只是對官方文檔(中文,英文)的一個提煉,詳細的安裝說明還請仔細閱讀官方文檔。
雖然Service Fabric的官方名稱往往被加上Azure,但是實際上(估計很多人不知道)Service Fabric可以安裝到本地數據中心或者任意公有雲上,這不官方文檔就有一章專門講如何安裝到AWS的內容。
所以現在為了區分,一般把在Azure上提供的開箱即用的PaaS稱之為Azure Service Fabric,而把本地安裝的稱之為Service Fabric Standalone。
同時,Service Fabric既可部署到Windows Server上,也可以部署到Linux上。但是本文書寫的時候,Linux版本只能使用Azure的,官方還沒有發布本地版本安裝包(但是未來一定會有)。所以本文也是僅限於Windows集群的內容。
在本地數據中心安裝Service Fabric for Windows集群的時候,可能會受到如下限制的影響:
- 數據中心的服務器的網絡是隔離的
- 數據中心的服務器是不能訪問互聯網的
環境準備
機器的準備,需要至少滿足如下要求:
- 最少16G內存
- 最少40G硬盤空間
- 4核以上CPU
- 所有作為集群節點的機器在同一網段,互相可通
- 機器上安裝Windows Server 2012 R2或Windows Server 2016,如果打算使用容器,那麽建議使用Windows Server 1805,可以支持更加小的1805基容器鏡像。
- 確保Windows安裝了.NET FX 4.5.1以上
- 確保Windows具有PowerShell 3.0
- 在所有機器上確保運行RemoteRegistry服務
域環境和域賬號:
- 在數據中心中應該有一個域控
- 創建一個普通域賬號,比如:sfadmin
- 把集群機器加入到域中(機器名可以命名為SFNode-01、SFNode-XX等等),並把sfadmin添加到集群機器的本地管理員組
- 在域中創建一個機器組(全局安全組),比如:sfnodes,把所有集群機器都加到這個組中
雖然可以在某臺集群機器上來運行Service Fabric的安裝包,但是我建議單獨使用一臺操作機。操作機的準備:
- 可以使用如下操作系統:
- Windows 7
- Windows 8/Windows 8.1
- Windows Server 2012 R2
- Windows Server 2016
- Windows 10
- 把操作機也加到域中
- 和集群機器在一個網段,或者能夠訪問到集群機器
- 啟用PowerShell腳本執行權限:Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
- 安裝Service Fabric SDK。由於操作機可能也無法正常互聯網,那麽可以通過下載離線包的方式來獲取SDK。
安裝包準備
Service Fabric for Windows的安裝包分為兩個部分:
- Service Fabric Standalone Package - Windows Server,這個是安裝程序。以下稱之為安裝包。
- Service Fabric Runtime - Windows Server,這個是安裝到集群機器上的運行時。以下稱之為運行包。
先通過其他渠道下載這兩個安裝包,然後復制到內網環境。
在操作機上解壓安裝包的zip壓縮包,比如解壓到SFSetup文件夾。把運行包的cab壓縮包也復制到SFSetup文件夾備用(不用解壓)。
集群安裝
首先,準備集群配置文件。
根據不同的安全配置和集群配置,安裝包提供了多個配置文件模板,分別是:
- ClusterConfig.gMSA.Windows.MultiMachine.json 依賴gMSA(Group Managed Service Account)安全機制的多機器集群
- ClusterConfig.Unsecure.DevCluster.json 非安全開發集群
- ClusterConfig.Unsecure.MultiMachine 非安全多機器集群
- ClusterConfig.Unsecure.OneNode 非安全單節點集群
- ClusterConfig.Windows.DevCluster 依賴Windows賬號安全機制的開發集群
- ClusterConfig.Windows.MultiMachine 依賴Windows賬號安全機制的多機器集群
- ClusterConfig.Windows.OneNode 依賴Windows賬號安全機制的單節點集群
- ClusterConfig.Windows.X509.DevCluster 客戶端訪問依賴Windows賬號服務器訪問依賴X509證書的開發集群
- ClusterConfig.Windows.X509.MultiMachine 客戶端訪問依賴Windows賬號服務器訪問依賴X509證書的多機器集群
- ClusterConfig.Windows.X509.OneNode 客戶端訪問依賴Windows賬號服務器訪問依賴X509證書的單節點集群
- ClusterConfig.X509.DevCluster 依賴X509證書安全機制的開發集群
- ClusterConfig.X509.MultiMachine 依賴X509證書安全機制的多機器集群
- ClusterConfig.X509.OneNode 依賴X509證書安全機制的單節點集群
總結起來,Service Fabric for Windows支持非安全、Windows賬號、組托管服務賬號、X509證書和Windows賬號+X509混合等5種安全模式。
個人建議選擇Windows賬號模型,因為準備工作要簡單一些,成功的機率也大一些。如果一直報莫名其妙的錯誤,那麽使用非安全模式大概率可以成功。在網絡安全比較嚴格且機器加入域的情況下,非安全模式也是可以接受的。
以依賴Windows賬號安全機制的多機器集群為例,復制一份ClusterConfig.Windows.MultiMachine.json文件,重命名為方便處理的名稱,比如ThisClusterConfig.1.0.json。用諸如VSCode這樣的編輯器打開這個json文件。編輯其中的nodes部分。主要是修改iPAddress為每臺機器的機器名。ClusterIdentity填入機器組的名稱sfnodes,Identity改為專用域賬號的名稱sfadmin。nodeTypes根據情況就暫時用一個或者自定義多個。
示例如下:
對於非安全模式的集群,無非是去掉了security配置節而已。
接著,對配置文件進行測試。
在SFSetup文件夾上打開PowerShell,執行如下命令:
.\TestConfiguration.ps1 -ClusterConfigFilePath .\ThisClusterConfig.1.0.json
如果配置文件沒有什麽問題的話,會顯示如下提示:
在內網環境下,IsCabValid應該會顯示為False的,這個不用擔心。
最後,基於配置文件創建集群。
繼續在PS中執行如下命令:
.\CreateServiceFabricCluster.ps1 -ClusterConfigFilePath .\ThisClusterConfig.1.0.json –FabricRuntimePackagePath .\MicrosoftAzureServiceFabric.6.3.162.9494.cab
現在祈禱它能一次運行成功,如果5臺機器的話,應該能在5分鐘內成功。
提示成功後,通過輸入如下命令來嘗試連接集群的管理端口來進行驗證:
Connect-ServiceFabricCluster -ConnectionEndpoint SFNode-01.contoso.com:19000
或者用瀏覽器打開管理後臺:http://SFNode-01.contoso.com:19080/Explorer/index.html
容器環境
如果你需要用Service Fabric來編排Windows Container的話,需要預先在集群機器上安裝Docker。
由於內網環境的限制,安裝Docker也會稍顯麻煩。根據Docker.com的官方文檔:https://docs.docker.com/install/windows/docker-ee/#use-a-script-to-install-docker-ee
可以通過命令啟用Windows的容器支持:
(Install-WindowsFeature Containers).RestartNeeded
再下載docker的離線包到內網環境後按照步驟進行安裝。
同時為了支持集群機器能夠正常的獲取Docker鏡像,可以在內網環境運行一個Docker Registry作為私有鏡像倉庫供內部應用鏡像的存放處,在外網運行一個Docker Registry作為公共鏡像的Mirror,供私有倉庫和集群機器使用。
如何在本地數據中心安裝Service Fabric for Windows集群