这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

用于 Amazon Web Services 的 Vertica

此部分介绍如何在 AWS 上创建和管理 Vertica 群集。

当您在 AWS 资源上启动群集并准备创建数据库时,请考虑是在 Eon 模式还是 企业模式下运行它。这两种模式的区别在于它们的架构、部署和可扩展性:

  • 企业模式 将数据本地存储在数据库中的节点上。

  • Eon 模式 将其数据存储在 S3 存储桶中。


    Eon 模式将计算过程与数据库的公共存储层分开。通过这种分离,您可以弹性地改变数据库群集中的节点数,以适应不同的工作负载。

    Vertica 通过 AWS Marketplace 提供 CloudFormation 模板 (CFT)。这些 CFT 还部署管理控制台。

有关两种数据库模式之间差异的详细信息,请参阅体系结构

此部分内容

1 - Amazon Web Services (AWS) 上 Vertica 的概述

AWS 上的 Vertica 群集可以在使用 CloudFormation 模板自动配置的 EC2 实例上运行,也可以从 Amazon Machine Image (AMI) 手动部署。

可以在 AWS 上的 Vertica 群集中以 Eon 模式或企业模式创建数据库。

有关 Amazon 群集实例及其限制的详细信息,请参阅 Amazon 文档

此部分内容

1.1 - CloudFormation 模板

Vertica 通过 AWS Marketplace 提供 Cloud Formation 模板 (CFT)。向模板提供一些参数后,创建一个堆栈,以便自动为 Vertica 系统配置 AWS 资源。

在创建堆栈后,您可以在管理控制台 (MC) 中创建和管理群集和数据库。请参阅 使用 MC 在 AWS 中创建 Eon 模式数据库使用 MC 在 AWS 中创建企业模式数据库

1.2 - AWS 上的 Vertica 产品

使用 CloudFormation 模板 (CFT) 概述中所述的许可证模型和 CFT,您可以安装以下 Vertica 产品:

  • Vertica BYOL,Amazon Linux 2.0

  • 按小时计算的 Vertica,Amazon Linux 2.0

  • Vertica BYOL, Red Hat

  • 按小时计算的 Vertica,Red Hat

有关安装这些产品的信息,请参阅使用 CloudFormation 模板启动 MC 和 AWS 资源

1.3 - 适用于 AWS 的 Vertica AMI 操作系统

Vertica 在以下操作系统中提供 Vertica 和管理控制台 AMI。

  • Red Hat 7.4 及更高版本

  • Amazon Linux 2.0 及更高版本

可以使用 AMI 部署 MC 主机或群集主机。

1.4 - 支持的 AWS 实例类型

Vertica 支持一系列 Amazon Web Services 实例类型,每种类型都针对不同的目的进行了优化。选择最符合您的要求的实例类型。下面的两个表列出了 Vertica 支持用于 Vertica 群集主机以及要在 MC 中使用的 AWS 实例类型。有关详细信息,请参阅有关实例类型和卷的 Amazon Web Services 文档

适用于 Vertica 群集主机的实例类型

每个 Amazon EC2 实例类型本身提供以下存储选项之一:

  • Elastic Block Store (EBS) 提供持久存储:停止实例后,存储在实例上的数据文件仍然存在。

  • 实例存储提供临时存储:停止实例后,存储在实例上的数据文件会丢失。

适用于 MC 主机的实例类型

更多信息

有关 Amazon 群集实例及其限制的详细信息,请参阅 Amazon Web Services 文档中的管理群集

1.5 - 选择 AWS Eon 模式实例类型

本主题列出了在 AWS 中运行的 Eon 模式数据库中使用的推荐实例类型。

根据成本和可用性,为您的存储库选择支持临时实例存储或 EBS 卷的实例类型。不一定非要拥有 EBS 支持的存储库,因为在 Eon 模式下,数据的副本安全地存储在公共存储中。Vertica 建议将 r4 或 i3 实例用于生产群集。

下表提供的信息可帮助您决定如何选择具有临时实例存储或纯 EBS 存储的实例。请与 AWS 联系,了解最新的每小时费用。

1.6 - Vertica AMI 休眠 C 状态

默认情况下,以下实例在 Vertica AMI 中将其处理器 C 状态设置为值 1:

  • c4.8xlarge

  • d2.8xlarge

  • m4.10xlarge

此度量值旨在通过限制运行 Vertica 的实例使用的休眠状态来提高性能。

有关休眠状态的详细信息,请访问 AWS 文档

1.7 - Vertica 支持的 AWS 功能

Vertica 支持以下 AWS 功能:

  • 增强网络:Vertica 建议您使用 AWS 增强网络以获得最佳性能。有关详细信息,请参阅 AWS 文档中的在 VPC 中的 Linux 实例上启用增强网络

  • 命令行界面:将 Amazon 命令行界面 (CLI) 与您的 Vertica AMI 结合使用。有关详细信息,请参阅什么是 AWS 命令行界面?

  • 弹性负载均衡:对长达一小时的查询使用弹性负载均衡 (ELB)。当启用 ELB 时,将计时器配置为 3600 秒。有关详细信息,请参阅 AWS 文档中的弹性负载均衡

1.8 - AWS 身份验证

Amazon 定义了两种方法来控制对 AWS 资源的访问(例如 S3):IAM 角色以及 ID、密钥和(可选)会话令牌的组合。对于非公共存储桶的长期访问,您应该使用 IAM 角色来集中进行访问控制。如果要更改应用程序的访问设置,则无需更改应用程序的配置。您只需更改应用于您的 EC2 实例的 IAM 角色。

但是,对于备份和还原数据库或将数据加载到非公共存储桶或从非公共存储桶加载数据等一次性任务,您应该使用 AWS 访问密钥

Vertica 使用这两种身份验证方法来支持不同的功能和用例:

  • Eon 模式数据库对公共存储和编录存储的 S3 访问必须始终使用 IAM 角色身份验证。IAM 角色是 AWS 资源的默认访问控制方法。如果您未配置旧版访问控制会话参数,Vertica 将使用此方法。

  • 单个用户可以从 S3 存储位置而不是 Vertica 用于公共存储的位置读取数据。例如,用户可以使用 COPY 将数据从 S3 存储桶加载到 Vertica,或查询存储在 S3 上的外部表。如果分配给 Vertica 节点的 IAM 角色无权访问此外部 S3 数据,则用户必须在会话变量中设置 ID、密钥和(可选)访问令牌以授权访问该数据。这些会话变量会覆盖服务器上设置的 IAM 角色。有关这些会话参数的列表,请参阅 S3 参数

  • 单个用户可以使用文件导出将数据导出到 S3。文件导出不能使用 IAM 授权。要将数据导出到 S3 的用户必须在会话变量中设置 ID、密钥和(可选)访问令牌值。

配置 IAM 角色

要配置 IAM 角色以授予 Vertica 对 AWS 资源的访问权限,您必须:

  1. 创建一个 IAM 角色以允许 EC2 实例访问特定资源。

  2. 授予该角色访问您的资源的权限。

  3. 将此 IAM 角色附加到 Vertica 群集中的每个 EC2 实例。

要查看 Vertica 群集的 IAM 角色示例,请查看 Vertica 提供的 Cloud Formation 模板之一中定义的角色。您可以从 Amazon 市场中的任何 Vertica 条目下载这些模板。在每个条目的“使用信息 (Usage Information)”部分下,单击“查看 CloudFormation 模板 (View CloudFormation Template)”链接,然后单击“下载 CloudFormation 模板 (Download CloudFormation Template)”。

有关 IAM 角色的详细信息,请参阅 AWS 文档中的适用于 Amazon EC2 的 IAM 角色

2 - 使用 CloudFormation 模板安装 Vertica

Vertica 在 AWS Marketplace 上提供 CloudFormation 模板 (CFT),使您能够快速启动并运行群集。使用该模板,您可以自动配置 AWS 资源,并启动 Vertica 群集和管理控制台,只需进行最少的配置。

如果您希望手动部署 VPC、实例和相关资源,请参阅使用手动部署的 AWS 资源安装 Vertica

有关在使用 CFT 创建群集后创建 Eon 模式或企业模式数据库的详细信息,请参阅 MC 中的 Amazon Web Services

2.1 - CloudFormation 模板 (CFT) 概述

借助 AWS 上的 Vertica,使用 CloudFormation 模板 (CFT) 通过正在运行的 Vertica 系统轻松管理 AWS 资源的配置。

要访问 Vertica CFT,请转至 AWS Marketplace。CFT 的许可模式包括:

  • 自带许可证 (BYOL):默认情况下,安装免费的 CE 许可证,涵盖 3 个节点和 1 TB 数据。要扩展节点或大小,您可以购买 Vertica BYOL 许可证。
    在 CFT 上的 BYOL 许可证之外,您还可以在没有许可证文件的情况下访问社区版:

    • 如果您使用的是管理控制台,只需将许可证字段留空即可。

    • 如果您使用的是命令行(请参阅使用安装脚本安装 Vertica),请在安装期间在 --license 参数中指定 CE。

  • 按小时:一种即用即付模式,您只需为每个节点使用的小时数付费。使用付费列表的一个优点是,所有费用都会显示在 Amazon AWS 账单上。这提供了购买完整 Vertica 许可证的替代方法。这消除了提前计算潜在存储需求的需要。

可用的 Vertica CFT 包括:

  • 管理控制台,涵盖 3 个 Vertica 节点:部署 Vertica 的最简单方法。默认情况下,此 CFT 部署一个 Eon 模式数据库。但是,这种环境也可以用于创建企业模式数据库。有关详细信息,请参阅创建数据库

  • 将管理控制台部署到新 VPC:此 CFT 部署所有必需的 AWS 资源,并安装 Vertica 管理控制台 (MC)。在堆栈创建完成后,登录到 MC 以配置 Vertica 数据库群集。

  • 将管理控制台部署到现有 VPC:此 CFT 在现有的 VPC 和子网中部署 Vertica 管理控制台 (MC)。在堆栈创建完成后,MC 将可用。登录到 MC,以配置 Vertica 数据库群集或 Eon 模式数据库群集。

    对于此 CFT,您必须先设置 VPC、子网和相关网络资源。有关为 Vertica 正确配置这些资源的详细信息,请参阅 AWS 文档中的以下主题: * 创建虚拟私有云 * 配置网络

有关详细信息

有关这些 CFT 支持的操作系统,请参阅适用于 AWS 的 Vertica AMI 操作系统

有关 AWS 上可用的 Vertica 产品,请参阅 AWS 上的 Vertica 产品

2.2 - 使用 CFT 的先决条件

在您可以使用 CloudFormation 模板 (CFT) 在 AWS 上安装 Vertica 之前,请确认您具有:

  • 有权创建 VPC、子网、安全组、EC2 实例和 IAM 角色的 AWS 帐户(有关 AWS 帐户的详细信息,请参阅 AWS 文档

  • 通过 SSH 访问 EC2 实例的 Amazon 密钥对。(有关密钥对,请参阅 AWS 文档。)

2.3 - 使用 CloudFormation 模板启动 MC 和 AWS 资源

使用可通过 AWS Marketplace 获得的 CloudFormation 模板 (CFT) 启动 管理控制台 (MC) 及其关联的 AWS 资源。有关可用 CFT 的列表,请参阅 CloudFormation 模板 (CFT) 概述

从 AWS Marketplace 开始,启动可从中安装 Vertica 的配置实例:

  1. 使用 AWS 帐户登录到 AWS Marketplace(请参阅上面的先决条件 一节)。

  2. 在 AWS Marketplace 中搜索“Vertica”。

  3. 选择 Vertica CFT。每个 CFT 都会引导您进入产品概述页面,其中包含定价估算值。(另请参阅 CloudFormation 模板 (CFT) 概述,了解可用模板和产品的概述)。

  4. 单击“继续 (Continue)”以订阅。

  5. 在下一页上,根据部署要求选择启动设置。

  6. 如果您之前未同意 AWS Marketplace 上的 Vertica EULA 条款,请单击“接受软件条款 (Accept Software Terms)”进行订阅。

  7. 单击使用 CloudFormation 控制台启动 (Launch with CloudFormation Console)。此时 CloudFormation 控制台将打开。

  8. CloudFormation 控制台会自动在指定 Amazon S3 模板 URL (Specify an Amazon S3 template URL) 字段中提供 URL。单击下一步 (Next)

  9. 遵循 CloudFormation 工作流,并输入参数(统称为堆栈)。

  10. 在确认您为新堆栈提供的详细信息后,单击创建 (Create)。AWS 控制台会将您带到“堆栈 (Stacks)”页面,您可以在其中查看创建过程的进度。该过程需要几分钟时间。

  11. 输出 (Outputs) 选项卡显示有关在该过程完成后访问环境的信息。

接下来,访问管理控制台 (MC) 以部署群集实例并创建数据库,如访问管理控制台中所述。

2.4 - 访问管理控制台

您可以使用 MC 部署 Vertica 群集实例,并创建数据库。还可以使用 MC 管理和监控您的数据库。您将使用管理控制台在刚刚启动的 AWS 资源上配置 Vertica 群集和数据库。

  1. 在 AWS CloudFormation 堆栈页面上,选择新堆栈并查看输出 (Outputs) 选项卡。此选项卡提供有关访问您的环境以及文档和许可资源的信息。

  2. 单击访问 管理控制台 URL。此链接将带您进入 MC 登录页面。

  3. 要登录,输入您使用 CloudFormation 控制台创建的 MC 用户名和密码。

    登录后,MC 会显示主页,其中包含用于配置新群集或数据库或者导入现有群集或数据库的选项。 如果选择的 CFT 也创建数据库,则新数据库也会显示在主页上。

    此页面还提供了一个“资源 (Resources)”部分,其中包含指向在线培训、博客、社区和帮助资源的链接。

您已成功在 AWS 资源上启动管理控制台。

如果您尚未配置 Vertica 群集和数据库,请完成以下过程之一中的步骤:

3 - 使用手动部署的 AWS 资源安装 Vertica

Vertica 提供了一个 AMI,您可以在手动部署的 AWS 资源上安装该 AMI。此部分将指导您在 AWS 上配置网络设置、使用 Vertica AMI 启动和准备 EC2 实例,以及在这些 EC2 实例上创建 Vertica 群集。

如果您熟悉如何配置 AWS 并且具有许多具体的 AWS 配置需求,请选择此安装方法。(要改为自动部署 AWS 资源和 Vertica 群集,请参阅使用 CloudFormation 模板安装 Vertica。)

3.1 - 配置网络

在创建群集之前,您必须配置将运行 Vertica 的网络。Vertica 需要许多特定的网络配置,才能在 AWS 上运行。除了默认的 Vertica 设置之外,您可能还有特定的网络配置需求。

以下几节介绍了您需要为创建实例配置哪些 Amazon EC2 功能。

3.1.1 - 创建放置组、密钥对和 VPC

为 AWS 配置网络的一环是创建以下内容:

创建放置组

放置组是单个可用性区域中实例的逻辑分组。群集需要放置组,并且所有 Vertica 节点必须位于同一个放置组中。

Vertica 建议将放置组用于那些受益于低网络延迟、高网络吞吐量或两者兼有的应用程序。要为放置组提供最低延迟、最高每秒数据包数网络性能,请选择支持增强网络的实例类型

有关创建放置组的信息,请参阅 AWS 文档中的放置组

创建密钥对

您需要一个密钥对,才能使用 SSH 访问实例。使用 AWS 界面创建密钥对,并将密钥 (*.pem) 文件的副本存储在本地计算机上。当访问实例时,需要知道密钥的本地路径。

使用密钥对可以:

  • 以 dbadmin 身份,从群集外部对到实例的连接进行身份验证。

  • 在 AWS 实例上安装和配置 Vertica。

有关创建密钥对的信息,请参阅 AWS 文档中的 Amazon EC2 密钥对

创建虚拟私有云 (VPC)

您在 Amazon 上创建虚拟私有云 (VPC),以便可以创建 EC2 实例的网络。您在 VPC 中的实例都共享相同的网络和安全设置。

AWS 上的 Vertica 群集在逻辑上必须位于同一网络中。创建 VPC 以确保群集中的节点可以在 AWS 中相互通信。

使用以下配置创建单个公共子网 VPC:

有关创建 VPC 的信息,请参阅 AWS 文档中的创建虚拟私有云 (VPC)

3.1.2 - 网络 ACL 设置

Vertica 需要在运行 Vertica AMI 的 AWS 实例上进行以下基本网络访问控制列表 (ACL) 设置。Vertica 建议您使用适合您情况的其他 ACL 设置来保护您的网络。

入站规则

出站规则

您可以使用上表中指定的整个端口范围,或者通过输入以下命令查找特定的临时端口:

$ cat /proc/sys/net/ipv4/ip_local_port_range

更多信息

有关 AWS 中网络 ACL 的详细信息,请参考 Amazon 文档中的网络 ACL

有关 AWS 中临时端口的详细信息,请参考 Amazon 文档中的临时端口

3.1.3 - 使用 AWS 网络负载均衡器配置 TCP keepalive

AWS 支持三种类型的弹性负载均衡器 (ELB):

经典负载均衡器

应用程序负载均衡器

网络负载均衡器

Vertica 强烈推荐使用 AWS 网络负载均衡器 (NLB),它可以为您的 Vertica 数据库提供最佳性能。网络负载均衡器充当客户端(例如 JDBC)和 Vertica 服务器之间的代理。经典负载均衡器和应用程序负载均衡器在企业模式或 Eon 模式下不适用于 Vertica。

为避免在通过 NLB 连接到 Vertica 时出现超时和挂起,请务必了解 AWS NLB 如何处理连接的空闲超时。对于 NLB,AWS 将空闲超时值设置为 350 秒,您无法更改此值。超时适用于两个连接点。

对于长时间运行的查询,如果客户端或服务器一方未能发送适时的 keepalive,则连接的那一方将被终止。这可能会导致 JDBC 客户端挂起并等待永远不会返回的结果,因为服务器未能在 350 秒内发送 keepalive。

要识别空闲超时/keepalive 问题,请通过 JDBC 等客户端运行如下查询:

=> SELECT SLEEP(355);

如果出现问题,则会发生以下情况之一:

  • 客户端连接在 355 秒之前终止。在这种情况下,请降低 JDBC keepalive 设置,以便 keepalive 的发送间隔小于 350 秒。

  • 客户端连接在 355 秒后不返回结果。在这种情况下,您需要调整服务器 keepalive 设置(tcp_keepalive_time 和 tcp_keepalive_intvl),以便 keepalive 的发送间隔小于 350 秒。

有关 AWS 网络负载均衡器的详细信息,请参阅 AWS 文档中的什么是网络负载均衡器?

3.1.4 - 创建和分配 Internet 网关

当创建 VPC 时,会自动为其分配 Internet 网关。您可以使用该网关,也可以分配自己的网关。如果您使用的是默认 Internet 网关,请继续执行创建安全组中所述的过程。

否则,请创建特定于您的需求的 Internet 网关。将该 Internet 网关与您的 VPC 和子网相关联。

有关如何创建 Internet 网关的信息,请参阅 AWS 文档中的 Internet 网关

3.1.5 - 分配弹性 IP 地址

弹性 IP 地址是一个不变的 IP 地址,可用于从外部连接到群集。Vertica 建议您将单个弹性 IP 分配给群集中的节点。然后,您可以使用 VPC 设置规定的内部 IP 地址,从主节点连接到群集中的其他节点。

创建弹性 IP 地址。有关信息,请参阅 AWS 文档中的弹性 IP 地址

3.1.6 - 创建安全组

Vertica AMI 具有特定的安全组要求。当创建虚拟私有云 (VPC) 时,AWS 会自动创建一个默认安全组,并将其分配给 VPC。您可以使用默认安全组,也可以命名和分配您自己的安全组。

使用以下基本安全组设置,创建并命名您自己的安全组。您可以根据特定的需求进行其他修改。

入站

出站

有关什么是安全组以及如何创建安全组的信息,请参阅 AWS 文档中的适用于 Linux 实例的 Amazon EC2 安全组

3.2 - 为 Vertica 数据库群集部署 AWS 实例

配置网络后,您就可以创建 AWS 实例并安装 Vertica。执行以下过程在 AWS 上安装和运行 Vertica。

3.2.1 - 配置并启动实例

在 AWS 上配置网络设置后,配置并启动要在其中安装 Vertica 的实例。没有 Vertica AMI 的 Elastic Compute Cloud (EC2) 实例类似于传统主机。与内部部署群集一样,您必须先在硬件级别准备和配置群集和网络,然后才能安装 Vertica。

当您使用 Vertica AMI 在 AWS 上创建 EC2 实例时,该实例包括 Vertica 软件和推荐的配置。Vertica 建议您使用未经修改的 Vertica AMI。Vertica AMI 充当模板,需要较少的配置步骤:

  1. 配置 EC2 实例

  2. 向实例添加存储

  3. (可选)将 EBS 卷配置为 RAID 阵列

  4. 设置安全组和 S3 访问权限

  5. 启动实例并验证它们是否正在运行。

在 AWS 中配置 EC2 实例

  1. 从 AWS Marketplace 中选择 Vertica AMI。

  2. 选择所需的实现方法。

  3. 配置以下内容:

向实例添加存储

向实例添加存储时,请考虑以下问题:

  • 添加与实例中物理核心数相等的驱动器数量,例如,对于 c3.8xlarge 实例,添加 16 个驱动器;对于 r3.4xlarge,添加 8 个驱动器。

  • 请勿将您的信息存储在根卷上。

  • Amazon EBS 提供持久的块级存储卷,您可以将其附加到正在运行的实例。有关选择和配置 Amazon EBS 卷类型的指导,请参阅 Amazon EBS 卷类型

将 EBS 卷配置为 RAID 阵列

您可以将 EBS 卷配置为 RAID 0 阵列以提高磁盘性能。在执行此操作之前,请使用 vioperf 实用程序来确定 EBS 卷的性能是否足够快,而无需在 RAID 阵列中使用它们。向 vioperf 传递指向 EBS 卷的挂载点的路径。在此示例中,EBS 卷挂载到名为 /vertica/data 的目录中:

[dbadmin@ip-10-11-12-13 ~]$ /opt/vertica/bin/vioperf /vertica/data

The minimum required I/O is 20 MB/s read and write per physical processor core on
each node, in full duplex i.e. reading and writing at this rate simultaneously,
concurrently on all nodes of the cluster. The recommended I/O is 40 MB/s per
physical core on each node. For example, the I/O rate for a server node with 2
hyper-threaded six-core CPUs is 240 MB/s required minimum, 480 MB/s recommended.

Using direct io (buffer size=1048576, alignment=512) for directory "/vertica/data"

test      | directory     | counter name        | counter | counter   | counter       | counter       | thread | %CPU  | %IO Wait  | elapsed | remaining
          |               |                     | value   | value (10 | value/core    | value/core    | count  |       |           | time (s)| time (s)
          |               |                     |         | sec avg)  |               | (10 sec avg)  |        |       |           |         |
--------------------------------------------------------------------------------------------------------------------------------------------------------
Write     | /vertica/data | MB/s                | 259     | 259       | 32.375        | 32.375        | 8      | 4     | 11        | 10      | 65
Write     | /vertica/data | MB/s                | 248     | 232       | 31            | 29            | 8      | 4     | 11        | 20      | 55
Write     | /vertica/data | MB/s                | 240     | 234       | 30            | 29.25         | 8      | 4     | 11        | 30      | 45
Write     | /vertica/data | MB/s                | 240     | 233       | 30            | 29.125        | 8      | 4     | 13        | 40      | 35
Write     | /vertica/data | MB/s                | 240     | 233       | 30            | 29.125        | 8      | 4     | 13        | 50      | 25
Write     | /vertica/data | MB/s                | 240     | 232       | 30            | 29            | 8      | 4     | 12        | 60      | 15
Write     | /vertica/data | MB/s                | 240     | 238       | 30            | 29.75         | 8      | 4     | 12        | 70      | 5
Write     | /vertica/data | MB/s                | 240     | 235       | 30            | 29.375        | 8      | 4     | 12        | 75      | 0
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 237+237 | 237+237   | 29.625+29.625 | 29.625+29.625 | 8      | 4     | 22        | 10      | 65
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 235+235 | 234+234   | 29.375+29.375 | 29.25+29.25   | 8      | 4     | 20        | 20      | 55
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 234+234 | 235+235   | 29.25+29.25   | 29.375+29.375 | 8      | 4     | 20        | 30      | 45
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 233+233 | 234+234   | 29.125+29.125 | 29.25+29.25   | 8      | 4     | 18        | 40      | 35
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 233+233 | 234+234   | 29.125+29.125 | 29.25+29.25   | 8      | 4     | 20        | 50      | 25
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 234+234 | 235+235   | 29.25+29.25   | 29.375+29.375 | 8      | 3     | 19        | 60      | 15
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 233+233 | 236+236   | 29.125+29.125 | 29.5+29.5     | 8      | 4     | 21        | 70      | 5
ReWrite   | /vertica/data | (MB-read+MB-write)/s| 232+232 | 236+236   | 29+29         | 29.5+29.5     | 8      | 4     | 21        | 75      | 0
Read      | /vertica/data | MB/s                | 248     | 248       | 31            | 31            | 8      | 4     | 12        | 10      | 65
Read      | /vertica/data | MB/s                | 241     | 236       | 30.125        | 29.5          | 8      | 4     | 15        | 20      | 55
Read      | /vertica/data | MB/s                | 240     | 232       | 30            | 29            | 8      | 4     | 10        | 30      | 45
Read      | /vertica/data | MB/s                | 240     | 232       | 30            | 29            | 8      | 4     | 12        | 40      | 35
Read      | /vertica/data | MB/s                | 240     | 234       | 30            | 29.25         | 8      | 4     | 12        | 50      | 25
Read      | /vertica/data | MB/s                | 238     | 235       | 29.75         | 29.375        | 8      | 4     | 15        | 60      | 15
Read      | /vertica/data | MB/s                | 238     | 232       | 29.75         | 29            | 8      | 4     | 13        | 70      | 5
Read      | /vertica/data | MB/s                | 238     | 238       | 29.75         | 29.75         | 8      | 3     | 9         | 75      | 0
SkipRead  | /vertica/data | seeks/s             | 22909   | 22909     | 2863.62       | 2863.62       | 8      | 0     | 6         | 10      | 65
SkipRead  | /vertica/data | seeks/s             | 21989   | 21068     | 2748.62       | 2633.5        | 8      | 0     | 6         | 20      | 55
SkipRead  | /vertica/data | seeks/s             | 21639   | 20936     | 2704.88       | 2617          | 8      | 0     | 7         | 30      | 45
SkipRead  | /vertica/data | seeks/s             | 21478   | 20999     | 2684.75       | 2624.88       | 8      | 0     | 6         | 40      | 35
SkipRead  | /vertica/data | seeks/s             | 21381   | 20995     | 2672.62       | 2624.38       | 8      | 0     | 5         | 50      | 25
SkipRead  | /vertica/data | seeks/s             | 21310   | 20953     | 2663.75       | 2619.12       | 8      | 0     | 5         | 60      | 15
SkipRead  | /vertica/data | seeks/s             | 21280   | 21103     | 2660          | 2637.88       | 8      | 0     | 8         | 70      | 5
SkipRead  | /vertica/data | seeks/s             | 21272   | 21142     | 2659          | 2642.75       | 8      | 0     | 6         | 75      | 0

如果 EBS 卷读写性能(输出的第 1 列中带有 Read 和 Write 的条目)大于每个物理处理器核心的 20MB/s(第 6 列和第 7 列),则无需将 EBS 卷配置为 RAID 阵列即可满足运行 Vertica 的最低要求。如果性能低于每个物理核心的最佳 40MB/s,您仍然可以考虑将 EBS 卷配置为 RAID 阵列(就像本示例中的情况)。

如果您确定需要将 EBS 卷配置为 RAID 0 阵列,请参阅 AWS 文档主题 Linux 上的 RAID 配置,了解您需要采取的步骤。

安全组和访问权限

  1. 在以前配置的安全组或默认安全组之间进行选择。

  2. 通过创建 IAM 角色并将其分配给 EC2 实例,来配置节点的 S3 访问权限。有关详细信息,请参阅AWS 身份验证

3.2.2 - 连接到实例

使用私钥,执行以下步骤以通过您已附加弹性 IP 地址的实例连接到群集:

  1. 作为 dbadmin 用户,通过替换 ssh 密钥键入以下命令:

    $ ssh --ssh-identity <ssh key> dbadmin@elasticipaddress
    
  2. 从导航面板中选择 实例 (Instances)

  3. 选择附加到弹性 IP 的实例。

  4. 单击连接

  5. 连接到您的实例 (Connect to Your Instance) 上,选择以下选项之一:

    • 直接从我的浏览器连接到 Java SSH 客户端 - 在私钥路径 (Private key path) 字段中添加私钥路径,然后单击启动 SSH 客户端 (Launch SSH Client)

    • 使用独立 SSH 客户端连接** - **按照独立 SSH 客户端所需的步骤进行操作。

使用 putty 从 Windows 连接到实例

如果从 Windows 操作系统连接到实例,请使用 Putty:

  1. 使用 PuTTYgen 转换密钥文件。

  2. 使用转换后的密钥(即 *ppk 文件)连接 Putty 或 WinSCP(通过弹性 IP 连接)。

  3. 使用 Putty 或 WinSCP 将密钥文件(*pem 文件)移动到根目录。

3.2.3 - 准备实例以形成群集

创建实例后,您需要准备它们以形成群集。通过添加您的 AWS .pem 密钥和 Vertica 许可证来准备您的实例。

默认情况下,每个 AMI 都包含一个社区版许可证。安装 Vertica 后,您可以在以下位置找到许可证:

/opt/vertica/config/licensing/vertica_community_edition.license.key
  1. 作为 dbadmin 用户,将您的 *pem 文件(从本地保存位置)复制到主实例。

    根据您用于复制文件的过程,文件的权限可能会发生更改。如果权限发生更改,install_vertica 脚本将失败,并显示类似以下内容的消息:

    FATAL (19): Failed Login Validation 10.0.3.158, cannot resolve or connect to host as root.
    

    如果您收到失败消息,请输入以下命令更正 *pem 文件的权限:

    $ chmod 600 /<name-of-pem>.pem
    
  2. 将您的 Vertica 许可证复制到主实例,将其放置在主目录或其他已知位置。

3.2.4 - 在 AWS 上更改实例

您可以在 AWS 上更改实例类型。例如,您可以将 c3.8xlarge 实例降级到 c3.4xlarge。有关有效 AWS 实例的列表,请参阅支持的 AWS 实例类型

当更改 AWS 实例时,您可能需要:

  • 重新配置内存设置

  • 重置资源池中的内存大小

  • 重置资源池中的 CPU 数量

重新配置内存设置

如果更改为需要不同内存量的 AWS 实例类型,则可能需要重新计算以下内容,然后重置相应的值:

重置资源池中的内存大小

如果您在资源池中使用了绝对内存,则可能需要使用 ALTER RESOURCE POOL 中的 MEMORYSIZE 参数重新配置内存。

重置资源池中的 CPU 数量

如果新实例需要不同数量的 CPU,则可能需要重置 ALTER RESOURCE POOL 中的 CPUAFFINITYSET 参数。

3.2.5 - 配置存储

Vertica 建议您将信息(尤其是数据和编录目录)存储在使用受支持的文件系统格式化的专用 Amazon EBS 卷上。/opt/vertica/sbin/configure_software_raid.sh 脚本会自动执行存储配置过程。

在每节点 EBS 卷高达 2TB 的情况下,Vertica 对 Eon 模式进行性能测试。为了获得最佳性能,请将多个 EBS 卷组合为一个 RAID 0 阵列。

有关 RAID 0 阵列和 EBS 卷的详细信息,请参阅 Linux 上的 RAID 配置

确定卷名称

由于存储配置脚本需要使用您要配置的卷名称,因此您必须标识计算机上的卷。以下命令列出了 /dev 目录的内容。搜索以 xvd 开头的卷:

$ ls /dev

组合存储卷

configure_software_raid.sh Shell 脚本将 EBS 卷组合成一个 RAID 0 阵列。

以下步骤使用 configure_software_raid.sh 脚本将 EBS 卷组合为 RAID 0 阵列:

  1. 按如下方式编辑 /opt/vertica/sbin/configure_software_raid.sh Shell 文件:

    1. 注释掉开头的安全 exit 命令。

    2. 将示例卷名称更改为您之前记下的您自己的卷名称。如有必要,添加更多卷。

  2. 运行 /opt/vertica/sbin/configure_software_raid.sh Shell 文件。运行此文件会创建一个 RAID 0 卷,并将其挂载到 /vertica/data

  3. 使用 chown 将新创建的卷的所有者更改为 dbadmin。

  4. 对群集中的每个节点重复步骤 1-3。

3.2.6 - 创建群集

在 AWS 上,使用 install_vertica 脚本组合实例并创建群集。检查 AWS 上的我的实例 (My Instances) 页面,以获取当前实例及其关联 IP 地址的列表。运行 install_vertica 时需要这些 IP 地址。

按如下方式创建群集:

  1. 当连接到主实例时,输入以下命令以将实例组合为一个群集。替换您的实例的 IP 地址,并包括您的根 *.pem 文件名。

    $ sudo /opt/vertica/sbin/install_vertica --hosts 10.0.11.164,10.0.11.165,10.0.11.166 \
      --dba-user-password-disabled --point-to-point --data-dir /vertica/data \
      --ssh-identity ~/name-of-pem.pem --license license.file
    
  2. 组合实例后,Vertica 建议从群集中删除 *.pem 密钥以降低安全风险。下面的示例使用 shred 命令删除该文件:

    $ shred name-of-pem.pem
    
  3. 创建一个或多个群集后,创建数据库

有关 install_vertica 脚本及其参数的完整信息,请参阅使用安装脚本安装 Vertica

使用 netcat 实用程序手动检查打开的端口

群集启动并运行后,您可以使用 netcat (nc) 实用程序通过命令行手动检查端口。下面是使用该实用程序检查端口的示例。

在执行此过程之前,请选择群集中两个节点的专用 IP 地址。

下面给出的示例使用具有专用 IP 的节点:

10.0.11.60 10.0.11.61

在您的节点上安装 nc 实用程序。安装后,您可以发出命令从另一个节点检查一个节点上的端口。

  1. 要检查 TCP 端口:

    1. 将一个节点置于侦听模式并指定端口。以下示例显示如何将 IP 10.0.11.60 置于端口 480 的侦听模式。

      [root@ip-10-0-11-60 ~]# nc -l 4804
      
    2. 从另一个节点,运行 nc 以指定您刚刚置于侦听模式的节点的 IP 地址和相同的端口号。

      [root@ip-10-0-11-61 ~]# nc 10.0.11.60 4804
      
    3. 从任一节点输入示例文本,它应该显示在另一个节点上。要在检查端口后取消,请输入 Ctrl+C

    [root@ip-10-0-11-60 ~]# nc -u -l 4804
    [root@ip-10-0-11-61 ~]# nc -u 10.0.11.60 4804
    

3.2.7 - 在 AWS 上使用管理控制台 (MC)

管理控制台 (MC) 是一种数据库管理工具,可用于查看和管理群集的各个方面。Vertica 提供了一个 MC AMI,您可以将其与 AWS 一起使用。MC AMI 允许您创建专用于运行 MC 的实例,您可以将该实例连接到 AWS 上新的或现有的 Vertica 群集。您可以随时创建 MC 实例并将其连接到 AWS 群集上的 Vertica。

有关要求和安装 MC 的信息,请参阅安装管理控制台

另请参阅

3.2.7.1 - 登录 MC 并管理群集

启动 MC 实例并配置安全组设置后,登录到数据库。为此,请使用在实例创建期间指定的弹性 IP。

通过这一弹性 IP,可以使用标准 MC 过程在 AWS 上管理 Vertica 数据库。

在 AWS 上使用 MC 时的注意事项

  • 由于 MC 已安装在 MC AMI 上,因此 MC 安装过程不适用。

  • 要在 AWS 上卸载 MC,请在终止 MC 实例之前按照“卸载管理控制台”中提供的过程进行操作。

相关主题

4 - 将节点添加到云上正在运行的群集

可通过两种方法向 AWS 群集中添加节点:

  • 使用管理控制台

  • 使用 admintools

当您使用 MC 将节点添加到云中的群集时,MC 会配置实例,将新实例添加到现有 Vertica 群集,然后将这些主机添加到数据库中。但是,当您使用 admintools 将节点添加到群集时,您需要自己执行这些步骤,如使用 admintools 添加节点中所述。

使用管理控制台添加节点

在 Vertica 管理控制台中,您可以通过多种方式添加节点,具体取决于您的数据库模式。

对于 Eon 模式数据库,MC 支持以下公共和私有云提供商的子群集和节点管理操作:

对于企业模式下的数据库,MC 支持以下操作:

  • 在 AWS 上的云中:“添加节点 (Add Node)”操作,添加实例 (Add Instance)”操作。

  • 内部部署:“添加节点 (Add Node)”操作。

在 Eon 模式数据库中添加节点

在 Eon 模式数据库中,每个节点都必须属于一个子群集。要添加节点,请始终将它们添加到数据库中的子群集之一:

在 AWS 上的企业模式数据库中添加节点

在 AWS 上的企业模式数据库中,要将实例添加到群集中:

  1. 在 MC 主页上,单击查看基础架构 (View Infrastructure) 以转到基础架构页面。此页面列出了 MC 正在监控的所有群集。

  2. 单击“基础架构 (Infrastructure)”页面上显示的任何群集。

  3. 从显示的对话框中选择查看 (View)管理 (Manage),以查看其群集 (Cluster) 页面。在云环境中,如果 MC 通过云模板进行部署,则该按钮显示“管理 (Manage)”。否则,按钮会显示“查看 (View)”。

  1. 群集管理 (Cluster Management) 页面上的实例列表 (Instance List) 中,单击“添加 (Add)”(+) 图标。

    MC 会将一个节点添加到选定群集中。

使用 admintools 添加节点

此部分概述使用 admintools 管理群集时如何添加节点。每个主要步骤都指向另一个带有完整说明的主题。

步骤 1:开始之前

在将节点添加到群集之前,请确认您已启动并运行 AWS 群集,并且您已经:

  • 创建数据库。

  • 定义数据库架构。

  • 加载数据。

  • 运行 Database Designer。

  • 连接到数据库。

步骤 2:启动新实例以添加到现有群集

执行配置并启动实例中的过程,以创建随后将添加到现有群集中的新实例(主机)。请务必选择您在创建原始实例时选择的相同详细信息(VPC、放置组、子网和安全组)。

步骤 3:将新实例作为群集节点包括在内

当运行 install_vertica 脚本以将新实例作为群集节点包括在内时,您需要 IP 地址。

如果您要配置 Amazon Elastic Block Store (EBS) 卷,请务必先在节点上配置卷,然后再将节点添加到群集。

要将新实例作为节点添加到现有群集:

  1. 配置并启动新实例

  2. 连接到分配给弹性 IP 的实例。如果您需要更多信息,请参阅连接到实例

  3. 运行 Vertica 安装脚本,将新实例作为节点添加到群集中。指定实例的内部 IP 地址和您的 *.pem 文件名。

    $ sudo /opt/vertica/sbin/install_vertica --add-hosts instance-ip --dba-user-password-disabled \
      --point-to-point --data-dir /vertica/data --ssh-identity ~/name-of-pem.pem
    

步骤 4:添加节点

将新实例添加到现有群集后,将它们作为节点添加到您的群集中,如向数据库中添加节点中所述。

步骤 5:重新平衡数据库

将节点添加到数据库后,请始终重新平衡数据库。

5 - 从正在运行的 AWS 群集中移除节点

使用以下过程从 AWS 群集中移除实例/节点。

为避免数据丢失,Vertica 强烈建议您在移除节点之前备份数据库。有关详细信息,请参阅备份和还原数据库

此部分内容

5.1 - 从数据库中移除主机

在从数据库中移除主机之前,请验证您已经:

  • 备份数据库。

  • 降低数据库的 K-safety。

要从数据库中移除主机:

  1. 当以 dbadmin 身份登录时,启动管理工具。

    $ /opt/vertica/bin/admintools

  2. 主菜单 (Main Menu) 中,选择高级菜单 (Advanced Menu)

  3. 高级菜单 (Advanced Menu) 中,选择群集管理 (Cluster Management)。单击确定 (OK)

  4. 群集管理 (Cluster Management) 中,选择移除主机 (Remove Host(s))。单击确定 (OK)

  5. 选择数据库 (Select Database) 中,选择您计划从中移除主机的数据库。单击确定 (OK)

  6. 选择要移除的主机。单击确定 (OK)

  7. 单击是 (Yes) 确认移除主机。

  8. 单击确定 (OK)。系统会显示一条消息,告诉您主机已被移除。还会发生自动重新平衡。

  9. 单击确定 (OK) 以确认。管理工具会将您带回群集管理 (Cluster Management) 菜单。

5.2 - 从群集中移除节点

要从群集中移除节点,请运行 update_vertica 脚本并指定:

  • 选项 --remove-hosts,后跟要移除的节点的 IP 地址。

  • 选项 --ssh-identity,后跟 *pem 文件的位置和名称。

  • 选项 --dba-user-password-disabled

以下示例会从群集中移除一个节点:

$ sudo /opt/vertica/sbin/update_vertica  --remove-hosts 10.0.11.165  --point-to-point  \
  --ssh-identity ~/name-of-pem.pem --dba-user-password-disabled

5.3 - 停止 AWS 实例(可选)

从群集中移除一个或多个节点后,为了节省与正在运行的实例相关的成本,您可以选择停止以前属于群集的 AWS 实例。

要停止 AWS 中的实例:

  1. 在 AWS 上,导航到实例 (Instances) 页面。

  2. 右键单击实例,并选择停止 (Stop)

此步骤是可选的,因为从 Vertica 群集中移除节点后,Vertica 不再将该节点视为群集的一部分,即使它仍在 AWS 中运行也是如此。

6 - 在 AWS 上升级 Vertica

在升级到最新版本的 Vertica 之前,请执行以下操作:

  1. 备份现有的数据库。

  2. 下载 Vertica 安装包,如下载并安装 Vertica 安装包中所述。

在 AWS 上升级到最新版本的 Vertica

要在 AWS 上升级到最新版本的 Vertica,请按照升级 Vertica 中的说明进行操作。

如果您是第一次在 AWS 上安装 Vertica 群集,请按照在 AWS 上安装和运行的过程进行操作。

升级在 AWS 上运行的 Vertica

Vertica 支持升级在从 Vertica AMI 创建的 AWS 实例上运行的 Vertica 服务器。要升级 Vertica,请按照升级 Vertica 中提供的说明进行操作。

请确保将以下实参添加到升级脚本:

  • --dba-user-password-disabled

  • --point-to-point

7 - 在 AWS 上复制和导出数据:须知事项

在 AWS 群集上导出或复制数据时会出现一些常见问题,如下所述。除了这些与 AWS 相关的特定问题外,复制和导出数据的工作原理如数据库导出和导入中所述。

要在 AWS 上复制或导出数据:

  1. 验证是否为源群集和目标群集中的所有节点分配了自己的弹性 IP(或公共 IP)。

    如果目标群集与源群集位于同一 VPC 中,请继续执行步骤 3。一个群集中的每个节点都必须能够与另一个群集中的每个节点进行通信。因此,每个源节点和目标节点都需要分配有一个弹性 IP(或公共 IP)。

  2. (对于非 CloudFormation 模板安装)创建 S3 网关终结点。

    如果您不使用 CloudFormation 模板 (CFT) 来安装 Vertica,则必须在 VPC 中创建一个 S3 网关终端节点。有关详细信息,请参阅 AWS 文档

    例如,Vertica CFT 具有以下 VPC 终端节点:

    "S3Enpoint" : {
        "Type" : "AWS::EC2::VPCEndpoint",
        "Properties" : {
        "PolicyDocument" : {
            "Version":"2012-10-17",
            "Statement":[{
            "Effect":"Allow",
            "Principal": "*",
            "Action":["*"],
            "Resource":["*"]
            }]
        },
        "RouteTableIds" : [ {"Ref" : "RouteTable"} ],
        "ServiceName" : { "Fn::Join": [ "", [ "com.amazonaws.", { "Ref": "AWS::Region" }, ".s3" ] ] },
        "VpcId" : {"Ref" : "VPC"}
    }
    

  3. 验证您的安全组允许 AWS 群集进行通信。

    检查源和目标 AWS 群集的安全组。验证端口 5433 和 5434 已打开。如果 AWS 群集之一位于单独的 VPC 上,请验证网络访问控制列表 (ACL) 允许在端口 5434 上进行通信。

  4. 如果群集之间有一个或多个弹性负载均衡器 (ELB),请验证 ELB 和群集之间的端口 5433 已打开。

  5. 如果使用 Vertica 客户端连接到一个或多个 ELB,则 ELB 仅分发传入连接。数据传输路径发生在群集之间。