第 3 部分 - 準備 Tableau Server Enterprise 部署
第 3 部分會介紹準備基礎結構以部署 Tableau Server 參考架構的要求。在開始之前,我們建議您先閱讀第 2 部分 - 瞭解 Tableau Server 部署參考架構。
除了介紹要求之外,本主題還會提供 AWS 環境中參考架構的實作範例。本指南的其餘部分均基於本主題中提供的 AWS 參考架構範例。
參考架構的核心原則是採用資料中心安全最佳作法進行標準化。具體而言,該架構旨在將服務隔離到受保護的網路子網路中。子網路間通訊僅限於特定的通訊協定和連接埠流量。
下圖說明了內部部署或客戶管理的雲端部署的參考架構子網路設計。有關雲部署的範例,請參閱以下章節範例:在 AWS 中設定子網路和安全性群組。
子網路
建立三個子網路:
- Web 層
- 應用層
- 資料子網路。
防火牆/安全群組規則
下方的索引標籤將介紹資料中心每一層的防火牆規則。有關 AWS 特定的安全性群組規則,請參閱本主題後面的章節。
Web 層是一個公用 DMZ 子網路,它將處理輸入 HTTPS 請求並將請求代理到應用程式層。此設計對針對您的組織的惡意軟體提供一層防禦。Web 層阻止對應用 / 資料層的存取。
流量 | 類型 | 通訊協定 | 連接埠範圍 | 來源 |
---|---|---|---|---|
輸入 | SSH | TCP | 22 | Bastion 子網路(用於雲部署) |
輸入 | HTTP | TCP | 80 | 網際網路 (0.0.0.0/0) |
輸入 | HTTPS | TCP | 443 | 網際網路 (0.0.0.0/0) |
輸出 | 所有流量 | 全部 | 全部 |
應用子網路是 Tableau Server 部署所在的位置。應用子網路包括 Tableau 應用伺服器(節點 1 和節點 2)。Tableau 應用伺服器處理使用者對資料伺服器的請求並執行核心商業邏輯。
應用子網路還包括 Tableau 資料伺服器(節點 3 和節點 4)。
到應用層的所有用戶端流量都在 Web 層進行身份驗證。對應用子網路的管理存取是透過 Bastion 主機進行身分驗證和路由。
流量 | 類型 | 通訊協定 | 連接埠範圍 | 來源 |
---|---|---|---|---|
輸入 | SSH | TCP | 22 | Bastion 子網路(用於雲部署) |
輸入 | HTTPS | TCP | 443 | Web 層子網路 |
輸出 | 所有流量 | 全部 | 全部 |
資料子網路是外部 PostgreSQL 資料庫伺服器的所在位置。
流量 | 類型 | 通訊協定 | 連接埠範圍 | 來源 |
---|---|---|---|---|
輸入 | SSH | TCP | 22 | Bastion 子網路(用於雲部署) |
輸入 | PostgreSQL | TCP | 5432 | 應用程式層子網路 |
輸出 | 所有流量 | 全部 | 全部 |
大多數企業安全團隊不允許從內部部署管理系統到部署在雲端中節點的直接通訊。相反,到雲端節點的所有管理 SSH 流量都透過 Bastion 主機(也稱為「跳轉伺服器」)進行 Proxy 。對於雲部署,建議將 Bastion 主機 Proxy 連線到參考架構中的所有資源。這是內部環境的可選組態。
Bastion 主機會對管理存取進行身分驗證,並且只允許透過 SSH 通訊協定的流量。
流量 | 類型 | 通訊協定 | 連接埠範圍 | 來源 | 目的地 |
---|---|---|---|---|---|
輸入 | SSH | TCP | 22 | 管理員電腦的 IP 位址 | |
輸出 | SSH | TCP | 22 | Web 層子網路 | |
輸出 | SSH | TCP | 22 | 應用程式層子網路 |
範例:在 AWS 中設定子網路和安全性群組
本章節提供了步驟過程,為 AWS 中的 Tableau Server 參考架構,建立和設定VPC以及網路環境。
下方的投影片會顯示四層參考架構。瀏覽投影片時,您會看到元件元素分層到拓撲圖上:
- VPC 子網路拓撲和 EC2 執行個體:一個 Bastion 主機、兩個反向 Proxy 伺服器、四個 Tableau 伺服器和至少一個 PostgreSQL 伺服器。
- 通訊協定流程和網際網路連線。所有輸入流量都透過 AWS 網際網路閘道進行管理。到網際網路的流量透過 NAT 路由。
- 可用區域。Proxy、Tableau Server 和 PostgreSQL 主機均勻部署在兩個可用區域中。
- 安全性群組。四個安全性群組(公用、私有、資料和 Bastion)在通訊協定層級保護每一層。
AWS 可用區域和高可用性
本指南中提供的參考架構指定了一種部署,該部署可在任何單個主機出現故障時透過冗餘提供可用性。但是,在參考架構跨兩個可用區域部署的 AWS 情況下,可用性在極少數情況下會受到影響,即可用區域發生故障。
VPC 組態
本節介紹如何:
- 安裝和設定 VPC
- 設定網路連線
- 設定子網路
- 建立和設定安全性群組
設定 VPC
本小節中的程序映射到「經典」VPC 體驗中的 UI。可以透過關閉 AWS VPC 儀表板左上角的新 VPC 體驗來切換 UI 以顯示經典檢視。
執行 VPC 精靈以建立預設的私有和公用子網路以及預設的路由和網路 ACL。
- 在設定 VPC 之前,必須建立彈性 IP。使用所有預設值建立分配。
- 執行 VPC 精靈> 「具有公用和專用子網路的 VPC」
- 接受大部分的預設值。除了以下情況:
- 輸入 VPC 名稱。
- 指定彈性 IP 分配 ID。
- 指定以下 CIDR 遮罩:
- 公用子網路的 IPv4 CIDR:10.0.1.0/24,將此子網路重新命名為
Public-a
。 - 私有子網路的 IPv4 CIDR:10.0.30.0/24,將此子網路重新命名為
Private-a
。
- 公用子網路的 IPv4 CIDR:10.0.1.0/24,將此子網路重新命名為
- 可用區域:若為兩個子網路,為所在區域選取 a 選項。
附註:出於本範例的目的,我們使用 a 和 b 來區分指定 AWS 資料中心中的可用區域。在 AWS 中,可用區域名稱可能與此處顯示的範例不相符。例如,一些可用區域包括資料中心中的 c 和 d 區域。
- 按一下建立 VPC。
- 建立 VPC 後,建立
Public-b
、Private-b
、Data
, 和Bastion
子網路。要建立子網路,請按一下子網路>建立子網路。Public-b
:若為可用區域,為所在區域選取 b 選項。CIDR 區塊:10.0.2.0/24Private-b
:若為可用區域,為所在區域選取 b 選項。CIDR 區塊:10.0.31.0/24Data
:若為可用區域,為所在區域選取 a 區域。CIDR 區塊:10.0.50.0/24。可選:若計劃跨 PostgreSQL 叢集複製外部資料庫,請在可用區域 b 中建立一個 CIDR 區塊為 10.0.51.0/24 的資料 b 子網路。Bastion
:若為可用區域,選取任一區域。CIDR 區塊:10.0.0.0/24
- 建立子網路後,編輯公用和 Bastion 子網路上的路由表,以使用為相關的網際網路閘道 (IGW) 設定的路由表。並編輯私有和資料子網路以使用為網路位址轉譯器 (NAT) 設定的路由表。
- 要確定哪個路由表設定了 IGW 或 NAT,請按一下 AWS 儀表板中的路由表。選取兩個路由表連結其中的一個開啟屬性頁面。查看路由 > 目的地 > 0.0.0.0/0處的目標值。目標值區分路由的類型,並且將以
igw-
或者nat-
字串為開頭。 - 為了更新路由表,VPC>子網路> [子網路_名稱]>路由表>編輯路由表關聯。
- 要確定哪個路由表設定了 IGW 或 NAT,請按一下 AWS 儀表板中的路由表。選取兩個路由表連結其中的一個開啟屬性頁面。查看路由 > 目的地 > 0.0.0.0/0處的目標值。目標值區分路由的類型,並且將以
設定安全性群組
VPC 精靈建立一個您不會使用到的安全性群組。建立以下安全性群組(安全性群組 > 建立安全性群組)。EC2 主機將跨兩個可用區域安裝到這些群組中,如上方的投影片圖表中所示。
- 建立新的安全性群組:Private 。這是安裝 Tableau Server 所有 4 個節點的位置。在安裝過程的最後,「私有」安全性群組將與 10.0.30.0/24 和 10.0.31.0/24 子網路關聯。
- 建立一個新的安全性群組:Public 。這是安裝 proxy 伺服器的位置。在安裝過程的最後,「公用」安全性群組將與 10.0.1.0/24 和 10.0.2.0/24 子網路關聯。
- 建立新的安全性群組:Data 。這裡是安裝 PostgreSQL 外部 Tableau 存放庫的位置。在安裝過程的最後,資料安全性群組將與 10.0.50.0/24(以及可選的 10.0.51.0/24)子網路關聯。
- 建立一個新的安全性群組:Bastion 。這是將安裝 Bastion 主機的位置。在安裝過程的最後,Bastion 安全性群組將與 10.0.0.0/24 子網路關聯。
指定輸入和輸出規則
在 AWS 中,安全性群組類似於內部環境中的防火牆。必須指定允許傳入和/或傳出安全性群組的流量類型(例如 https、https 等)、通訊協定(TCP 或 UDP)以及連接埠或連接埠範圍(例如 80、443 等)。針對每個通訊協定,您還必須指定目的地或來源流量。
公用安全群組規則
輸入規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 來源 |
HTTP | TCP | 80 | 0.0.0.0/0 |
HTTPS | TCP | 443 | 0.0.0.0/0 |
SSH | TCP | 22 | Bastion 安全性群組 |
輸出規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 目的地 |
所有流量 | 全部 | 全部 | 0.0.0.0/0 |
私有安全群組規則
私有安全性群組包含一個輸入規則,以允許來自「公共」安全性群組的 HTTP 流量。只有在部署過程中允許 HTTP 流量來驗證連線。建議在完成反向 proxy 部署並將 SSL 設定到 Tableau 後移除 HTTP 輸入規則。
輸入規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 來源 |
HTTP | TCP | 80 | 公用安全性群組 |
HTTPS | TCP | 443 | 公用安全性群組 |
PostgreSQL | TCP | 5432 | 資料安全性群組 |
SSH | TCP | 22 | Bastion 安全性群組 |
所有流量 | 全部 | 全部 | 私有安全性群組 |
輸出規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 目的地 |
所有流量 | 全部 | 全部 | 0.0.0.0/0 |
PostgreSQL | TCP | 5432 | 資料安全性群組 |
SSH | TCP | 22 | Bastion 安全性群組 |
資料安全性群組規則
輸入規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 來源 |
PostgreSQL | TCP | 5432 | 私有安全性群組 |
SSH | TCP | 22 | Bastion 安全性群組 |
輸出規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 目的地 |
所有流量 | 全部 | 全部 | 0.0.0.0/0 |
PostgreSQL | TCP | 5432 | 私有安全性群組 |
SSH | TCP | 22 | Bastion 安全性群組 |
Bastion 主機安全性群組規則
輸入規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 來源 |
SSH | TCP | 22 | 用來登入 AWS(管理員電腦)的電腦 IP 位址和網絡遮罩。 |
SSH | TCP | 22 | 私有安全性群組 |
SSH | TCP | 22 | 公用安全性群組 |
輸出規則 | |||
---|---|---|---|
類型 | 通訊協定 | 連接埠範圍 | 目的地 |
SSH | TCP | 22 | 用來登入 AWS(管理員電腦)的電腦 IP 位址和網絡遮罩。 |
SSH | TCP | 22 | 私有安全性群組 |
SSH | TCP | 22 | 公用安全性群組 |
SSH | TCP | 22 | 資料安全性群組 |
HTTPS | TCP | 443 | 0.0.0.0/0(可選:若需存取網際網路以下載 Bastion 主機上的支援軟體,請建立此規則) |
啟用自動指定公用 IP
提供連線到 proxy 伺服器和 Bastion 主機的 IP 位址。
針對公用和 Bastion 子網路:
- 選擇子網路
- 在「動作」功能表下,選取「修改自動分配 IP 設定」。
- 按一下「啟用自動分配公用 Ipv4 位址」。
- 按一下「儲存」。
負載平衡器
附註:如果要安裝到 AWS 並遵循本指南中的範例部署,那麼應該在部署過程的最後安裝和設定 AWS 負載平衡器,如第 5 部分 - 配置 Web 層中所述。
對於內部部署,請與網路管理員合作部署負載平衡器,以支援參考架構的 Web 層:
- 面向 Web 的應用程式負載平衡器,它接受來自 Tableau 用戶端的 HTTPS 請求並與反向 proxy 伺服器進行通訊。
- 反向 proxy:
- 建議至少使用兩個 proxy 伺服器為冗餘和處理用戶端加載。
- 從負載平衡器接收 HTTPS 流量。
- 支援 Tableau 主機的相黏工作階段。
- 為執行閘道過程的每個 Tableau Server 設定循環負載平衡 proxy。
- 處理來自外部 IdP 的身份驗證請求。
- 正向 Proxy:Tableau Server 需要存取網際網路獲得授權與對應功能。根據正向 Proxy 環境,可能需要為 Tableau 服務 URL 設定正向 Proxy 允許清單。請參閱《與網際網路通訊》( Linux(連結在新視窗開啟))。
設定主機電腦
最低推薦硬件
以下建議基於我們在參考架構中對真實資料的測試。
應用程式伺服器:
- CPU:8 個實體核心 (16vCPU),
- RAM:128 GB(8 GB/實體內核)
- 磁碟空間:100 GB
資料伺服器
- CPU:8 個實體核心 (16vCPU),
- RAM:128 GB(8 GB/實體內核)
- 磁碟空間:1 TB。若部署將使用 Tableau 檔案存放區的外部儲存體,將需要計算適當的磁碟空間。請參閱使用外部檔案存放區安裝 Tableau Server (Linux(連結在新視窗開啟))。
Proxy 伺服器
- CPU:2 個實體核心 (4vCPU),
- RAM:8 GB(4 GB/實體核心)
- 磁碟空間:100 GB
外部存放庫資料庫
- CPU:8 個實體核心 (16vCPU),
- RAM:128 GB(8 GB/實體內核)
- 磁碟空間要求取決於資料負載以及將會如何影響備份。請參閱主題磁碟空間要求中的備份和還原程序一節( Linux(連結在新視窗開啟))。
目錄結構
參考架構建議將 Tableau Server 套件和資料安裝到非預設位置:
- 將套件安裝到:
/app/tableau_server
:在安裝 Tableau Server 套件之前建立此目錄路徑,然後在安裝期間指定此路徑。 - 將 Tableau 資料安裝到:
/data/tableau_data
。在安裝 Tableau Server 之前不要建立此目錄。相反,必須在安裝期間指定路徑,然後 Tableau 安裝程式將相應地建立該路徑並授予其權限。
有關實作詳細資訊,請參閱執行安裝套件並初始化 TSM。
範例:在 AWS 中安裝和準備主機電腦
本節說明如何為 Tableau Server 參考架構中的每個伺服器類型安裝 EC2 主機。
參考架構需要八台主機:
- Tableau Server 的四個執行個體。
- Proxy 伺服器 (Apache) 的兩個執行個體。
- Bastion 主機的一個執行個體。
- 一個或兩個 EC2 PostgreSQL 資料庫執行個體
主機執行個體詳情
根據以下詳細資訊安裝主機。
Tableau Server
- Amazon Linux 2
- 執行個體類型:m5a.8xlarge
- 安全性群組 ID:私有
- 儲存體:EBS、150 GiB、gp2 磁碟區類型。若部署將使用 Tableau 檔案存放區的外部儲存體,將需要計算適當的磁碟空間。請參閱使用外部檔案存放區安裝 Tableau Server (Linux(連結在新視窗開啟))。
- 網絡:在每個私有子網路 (10.0.30.0/24 和 10.0.31.0/24) 中安裝兩個 EC2 主機。
- 將 Tableau Server 2021.2(或更高版本)rpm 套件的最新維護版本從 Tableau 下載頁面(連結在新視窗開啟)複製到每個 Tableau 主機。
Bastion 主機
- Amazon Linux 2
- 執行個體類型:t3.micro
- 安全性群組 ID:Bastion
- 儲存空間:EBS、50 GiB、gp2 磁碟區類型
- 網路:Bastion 子網路 10.0.0.0/24
Tableau Server 獨立閘道
- Amazon Linux 2
- 執行個體類型:t3.xlarge
- 安全性群組 ID:Public
- 儲存空間:EBS、100 GiB、gp2 磁碟區類型
- 網絡:在每個公用子網路(10.0.1.0/24 和 10.0.2.0/24)中安裝一個 EC2 執行個體
PostgreSQL EC2 主機
- Amazon Linux 2
- 執行個體類型:r5.4xlarge
- 安全性群組 ID:Data
- 儲存體:磁碟空間要求取決於資料負載以及將會如何影響備份。請參閱主題磁碟空間要求中的備份和還原程序一節( Linux(連結在新視窗開啟))。
- 網路:資料子網路 10.0.50.0/24。(如果在 HA 叢集中複製 PostgreSQL,則在 10.0.51.0/24 子網路中安裝第二台主機)
驗證:VPC 連線
安裝主機電腦後,請驗證網路組態。使用 SSH 從 Bastion 安全性群組中的主機連線到每個子網路中的主機來驗證主機之間的連線。
範例:連線到 AWS 中的 Bastion 主機
為 ssh-agent 設定管理員電腦。這讓您可以連線到 AWS 中的主機,而無需將私有金鑰檔案放置在任何 EC2 執行個體上。
要在 Mac 上設定 ssh-agent,請執行以下命令:
ssh-add -K myPrivateKey.pem
或用於最新 Mac OS,ssh-add --apple-use-keychain myPrivateKey.pem
針對 Windows,請參閱主題安全連線到在私有 Amazon VPC 執行的 Linux 執行個體(連結在新視窗開啟) 。
執行以下命令連線到 Bastion 主機:
ssh -A ec2-user@<public-IP>
然後,可以使用私有 IP 位址從 Bastion 主機連線到 VPC 中的其他主機,例如:
ssh -A ec2-user@10.0.1.93