第 3 部分 - 准备 Tableau Server 企业部署
第 3 部分描述了准备基础结构以部署 Tableau Server 参考体系结构的要求。在开始之前,我们建议您先阅读第 2 部分 - 了解 Tableau Server 部署参考体系结构。
除了需求描述之外,本主题还提供了 AWS 环境中参考架构的实施示例。本指南的其余部分基于本主题中开始的 AWS 参考架构示例。
参考体系结构的核心原则是采用数据中心安全最佳实践进行标准化。具体而言,该体系结构旨在将服务隔离到受保护的网络子网中。子网间通信仅限于特定的协议和端口流量。
下图说明了本地部署或客户管理的云部署的参考体系结构子网设计。有关示例云部署,请参见下面的示例:在 AWS 中配置子网和安全组部分。
子网
创建三个子网:
- Web 层
- 应用层
- 数据子网。
防火墙/安全组规则
下面的选项卡描述了数据中心每一层的防火墙规则。有关 AWS 特定的安全组规则,请参见本主题后面的部分。
Web 层是一个公共 DMZ 子网,它将处理入站 HTTPS 请求并将请求代理到应用程序层。此设计针对可能以您的组织为目标的恶意软件提供了一层防御。Web 层阻止对应用层/数据层的访问。
流量 | 类型 | 协议 | 端口范围 | 源 |
---|---|---|---|---|
入站 | SSH | TCP | 22 | Bastion 子网(用于云部署) |
入站 | HTTP | TCP | 80 | Internet (0.0.0.0/0) |
入站 | HTTPS | TCP | 443 | Internet (0.0.0.0/0) |
出站 | 所有流量 | 所有 | 所有 |
应用程序子网是 Tableau Server 部署所在的位置。应用程序子网包括 Tableau 应用程序服务器(节点 1 和节点 2)。Tableau 应用程序服务器处理用户对数据服务器的请求并运行核心业务逻辑。
应用程序子网还包括 Tableau 数据服务器(节点 3 和节点 4)。
进入应用层的所有客户端流量都在 Web 层进行身份验证。对应用程序子网的管理访问通过堡垒主机进行身份验证和路由。
流量 | 类型 | 协议 | 端口范围 | 源 |
---|---|---|---|---|
入站 | SSH | TCP | 22 | Bastion 子网(用于云部署) |
入站 | HTTPS | TCP | 443 | Web 层子网 |
出站 | 所有流量 | 所有 | 所有 |
数据子网是外部 PostgreSQL 数据库服务器所在的子网。
流量 | 类型 | 协议 | 端口范围 | 源 |
---|---|---|---|---|
入站 | SSH | TCP | 22 | Bastion 子网(用于云部署) |
入站 | PostgreSQL | TCP | 5432 | 应用程序层子网 |
出站 | 所有流量 | 所有 | 所有 |
大多数企业安全团队不允许从本地管理系统直接与部署在云中的节点通信。相反,所有进入云节点的管理 SSH 流量都通过堡垒主机(也称为“跳转服务器”)进行代理。对于云部署,我们建议将堡垒主机代理连接到参考架构中的所有资源。这是本地环境的可选配置。
堡垒主机对管理访问进行身份验证,并且只允许通过 SSH 协议传输的流量。
流量 | 类型 | 协议 | 端口范围 | 源 | Destination |
---|---|---|---|---|---|
入站 | SSH | TCP | 22 | 管理计算机 IP 地址 | |
出站 | SSH | TCP | 22 | Web 层子网 | |
出站 | SSH | TCP | 22 | 应用程序层子网 |
示例:在 AWS 中配置子网和安全组
本部分提供了分步过程,用于在 AWS 中为 Tableau Server 参考架构部署创建和配置 VPC 网络环境。
下面的幻灯片显示了四个层中的参考架构。随着幻灯片的进行,组件元素将分层到拓扑图上:
- VPC 子网拓扑和 EC2 实例:一台堡垒主机、两个反向代理服务器、四个 Tableau 服务器和至少一个 PostgreSQL 服务器。
- 协议流程和 Internet 连接。所有入站流量都通过 AWS Internet 网关进行管理。到 Internet 的流量通过 NAT 路由。
- 可用区。代理、Tableau Server 和 PostgreSQL 主机均匀部署在两个可用区中。
- 安全组。四个安全组(Public、Private、Data 和 Bastion)在协议级别保护每一层。
AWS 可用区和高可用性
本指南中提供的参考架构指定了一种部署,该部署可在任何单一主机出现故障时通过冗余提供可用性。但是,在 AWS 中参考架构跨两个可用区部署的情况下,可用性在可用区发生故障的极少数情况下会受到影响。
VPC 配置
本部分介绍如何:
- 安装和配置 VPC
- 配置 Internet 连接
- 配置子网
- 创建和配置安全组
配置 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
:对于“可用区”,为您所在的区域选择“b”区。CIDR 块:10.0.50.0/24可选:如果您计划跨 PostgreSQL 群集复制外部数据库,则在可用区 b 中创建一个 Data-b 子网,其 CIDR 块为 10.0.51.0/24。Bastion
:对于“可用区”,选择任一区域。CIDR 块:10.0.0.0/24
- 创建子网后,编辑 Public 和 Bastion 子网上的路由表,以使用为关联 Internet 网关 (IGW) 配置的路由表。并编辑 Private 和 Data 子网以使用为网络地址转换器 (NAT) 配置的路由表。
- 若要确定哪个路由表配置了 IGW 或 NAT,请单击 AWS 仪表板中的“路由表”。选择两个路由表链接之一以打开属性页面。查看“Routes”>“Destination”>“0.0.0.0/0”处的 Target 值。Target 值区分路由的类型,并且将以
igw-
或nat-
字符串开头。 - 若要更新路由表,请转到“VPC”>“子网”> [子网名称] >“路由表”>“编辑路由表关联”。
- 若要确定哪个路由表配置了 IGW 或 NAT,请单击 AWS 仪表板中的“路由表”。选择两个路由表链接之一以打开属性页面。查看“Routes”>“Destination”>“0.0.0.0/0”处的 Target 值。Target 值区分路由的类型,并且将以
配置安全组
VPC 向导会创建一个您不会使用的安全组。创建以下安全组(“安全组”>“创建安全组”)。EC2 主机将跨两个可用区安装到这些组中,如上面的幻灯片图中所示。
- 创建一个新的安全组:Private。这是将安装 Tableau Server 的所有 4 个节点的位置。稍后在安装过程中,Private 安全组将与 10.0.30.0/24 和 10.0.31.0/24 子网关联。
- 创建一个新的安全组:Public(公共)。这是将安装代理服务器的位置。稍后在安装过程中,Public 安全组将与 10.0.1.0/24 和 10.0.2.0/24 子网关联。
- 创建一个新的安全组:Data。这是将安装 PostgreSQL 外部 Tableau 存储库的位置。稍后在安装过程中,Data 安全组将与 10.0.50.0/24(以及可选的 10.0.51.0/24)子网关联。
- 创建一个新的安全组: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 安全组 |
出站规则 | |||
---|---|---|---|
类型 | 协议 | 端口范围 | Destination |
所有流量 | 所有 | 所有 | 0.0.0.0/0 |
专用安全组规则
Private 安全组包含一个入站规则,以允许来自 Public 安全组的 HTTP 流量。仅在部署过程中允许 HTTP 流量来验证连接。我们建议您在完成反向代理部署并将 SSL 配置到 Tableau 后移除 HTTP 入站规则。
入站规则 | |||
---|---|---|---|
类型 | 协议 | 端口范围 | 源 |
HTTP | TCP | 80 | Public 安全组 |
HTTPS | TCP | 443 | Public 安全组 |
PostgreSQL | TCP | 5432 | Data 安全组 |
SSH | TCP | 22 | Bastion 安全组 |
所有流量 | 所有 | 所有 | Private 安全组 |
出站规则 | |||
---|---|---|---|
类型 | 协议 | 端口范围 | Destination |
所有流量 | 所有 | 所有 | 0.0.0.0/0 |
PostgreSQL | TCP | 5432 | Data 安全组 |
SSH | TCP | 22 | Bastion 安全组 |
数据安全组规则
入站规则 | |||
---|---|---|---|
类型 | 协议 | 端口范围 | 源 |
PostgreSQL | TCP | 5432 | Private 安全组 |
SSH | TCP | 22 | Bastion 安全组 |
出站规则 | |||
---|---|---|---|
类型 | 协议 | 端口范围 | Destination |
所有流量 | 所有 | 所有 | 0.0.0.0/0 |
PostgreSQL | TCP | 5432 | Private 安全组 |
SSH | TCP | 22 | Bastion 安全组 |
堡垒主机安全组规则
入站规则 | |||
---|---|---|---|
类型 | 协议 | 端口范围 | 源 |
SSH | TCP | 22 | 您将用于登录 AWS(管理计算机)的计算机的 IP 地址和网络掩码。 |
SSH | TCP | 22 | Private 安全组 |
SSH | TCP | 22 | Public 安全组 |
出站规则 | |||
---|---|---|---|
类型 | 协议 | 端口范围 | Destination |
SSH | TCP | 22 | 您将用于登录 AWS(管理计算机)的计算机的 IP 地址和网络掩码。 |
SSH | TCP | 22 | Private 安全组 |
SSH | TCP | 22 | Public 安全组 |
SSH | TCP | 22 | Data 安全组 |
HTTPS | TCP | 443 | 0.0.0.0/0(可选:如果需要上网下载堡垒主机上的配套软件,则创建此规则) |
启用自动分配公共 IP
这为您提供了一个用于连接到代理服务器和堡垒主机的 IP 地址。
对于 Public 子网和 Bastion 子网:
- 选择子网
- 在“操作”菜单下,选择“修改自动分配 IP 设置”。
- 单击“启用自动分配公用 Ipv4 地址”。
- 单击“保存”。
负载平衡器
注意:如果您要安装到 AWS 并按本指南中的示例部署进行操作,那么您应该稍后在部署过程安装和配置 AWS 负载平衡器,如第 5 部分 - 配置 Web 层中所述。
对于本地部署,请与您的网络管理员合作部署负载均衡器以支持参考架构的 Web 层:
- 面向 Web 的应用程序负载平衡器,它接受来自 Tableau 客户端的 HTTPS 请求并与反向代理服务器进行通信。
- 反向代理:
- 我们建议至少使用两个代理服务器以实现冗余和处理客户端负载。
- 从负载平衡器接收 HTTPS 流量。
- 支持 Tableau 主机的粘性会话。
- 为运行网关进程的每个 Tableau Server 配置循环负载平衡代理。
- 处理来自外部 IdP 的身份验证请求。
- 转发代理:Tableau Server 需要访问 Internet 以获得许可和地图功能。根据您的转发代理环境,您可能需要为 Tableau 服务 URL 配置转发代理安全列表。请参见“与 Internet 通信 (Linux(链接在新窗口中打开))”。
配置主机计算机
最低推荐硬件
以下建议基于我们在参考体系结构中对真实数据的测试。
应用程序服务器:
- CPU:8 个物理内核(16 个 vCPU),
- RAM:128 GB(16 Gb/物理内核)
- 磁盘空间:100 GB
数据服务器
- CPU:8 个物理内核(16 个 vCPU),
- RAM:128 GB(16 Gb/物理内核)
- 磁盘空间:1 TB。如果您的部署将使用 Tableau 文件存储的外部存储,您将需要计算适当的磁盘空间。请参见“使用外部文件存储安装 Tableau Server(Linux(链接在新窗口中打开))”。
代理服务器
- CPU:2 个物理内核(4 个 vCPU),
- RAM:8 GB(4 Gb/物理内核)
- 磁盘空间:100 GB
外部存储库数据库
- CPU:8 个物理内核(16 个 vCPU),
- RAM:128 GB(16 Gb/物理内核)
- 磁盘空间要求取决于您的数据负载及其对备份的影响。请参见“磁盘空间要求 (Linux(链接在新窗口中打开))”中的“备份和还原过程”部分。
目录结构
参考架构建议将 Tableau Server 软件包和数据安装到非默认位置:
- 将软件包安装到:
/app/tableau_server
:在安装 Tableau Server 软件包之前创建此目录路径,然后在安装过程中指定此路径。 - 将 Tableau 数据安装到:
/data/tableau_data
。在安装 Tableau Server 之前不要创建此目录。相反,您必须在安装期间指定路径,然后 Tableau 安装程序将相应地创建该路径并授予其权限。
有关实现详细信息,请参见运行安装包并初始化 TSM。
示例:在 AWS 中安装和准备主机计算机
本部分说明如何为 Tableau Server 参考架构中的每种服务器类型安装 EC2 主机。
参考架构需要八个主机:
- Tableau Server 的四个实例。
- 代理服务器 (Apache) 的两个实例。
- 堡垒主机的一个实例。
- 一个或两个 EC2 PostgreSQL 数据库实例
主机实例详细信息
根据以下详细信息安装主机计算机。
Tableau Server
- Amazon Linux 2
- 实例类型:m5a.8xlarge
- 安全组 ID:Private
- 存储: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 主机。
堡垒主机
- 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(链接在新窗口中打开))”中的“备份和还原过程”部分。
- 网络:Data 子网 10.0.50.0/24。(如果您在 HA 群集中复制 PostgreSQL,则在 10.0.51.0/24 子网中安装第二台主机)
验证:VPC 连接
安装主机计算机后,请验证网络配置。通过使用 SSH 从 Bastion 安全组中的主机连接到每个子网中的主机,验证主机之间的连接。
示例:连接到 AWS 中的堡垒主机
为 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 实例(链接在新窗口中打开)。
通过运行以下命令连接到堡垒主机:
ssh -A ec2-user@<public-IP>
然后,您可以使用专用 IP 地址从堡垒主机连接到 VPC 中的其他主机,例如:
ssh -A ec2-user@10.0.1.93