如何在本地數據中心安裝Service Fabric for Windows集羣

概述

首先本文只是對官方文檔(中文英文)的一個提煉,詳細的安裝說明還請仔細閱讀官方文檔。html

雖然Service Fabric的官方名稱每每被加上Azure,可是實際上(估計不少人不知道)Service Fabric能夠安裝到本地數據中心或者任意公有云上,這不官方文檔就有一章專門講如何安裝到AWS的內容。node

因此如今爲了區分,通常把在Azure上提供的開箱即用的PaaS稱之爲Azure Service Fabric,而把本地安裝的稱之爲Service Fabric Standalone。docker

同時,Service Fabric既可部署到Windows Server上,也能夠部署到Linux上。可是本文書寫的時候,Linux版本只能使用Azure的,官方尚未發佈本地版本安裝包(可是將來必定會有)。因此本文也是僅限於Windows集羣的內容。json

在本地數據中心安裝Service Fabric for Windows集羣的時候,可能會受到以下限制的影響: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-0一、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的安裝包分爲兩個部分:網絡

  1. Service Fabric Standalone Package - Windows Server,這個是安裝程序。如下稱之爲安裝包。
  2. 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根據狀況就暫時用一個或者自定義多個。

示例以下:

image

對於非安全模式的集羣,無非是去掉了security配置節而已。

接着,對配置文件進行測試。

在SFSetup文件夾上打開PowerShell,執行以下命令:

.\TestConfiguration.ps1 -ClusterConfigFilePath .\ThisClusterConfig.1.0.json

若是配置文件沒有什麼問題的話,會顯示以下提示:

image

在內網環境下,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,供私有倉庫和集羣機器使用。

相關文章
相關標籤/搜索