这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
用于 Amazon Web Services 的 Vertica
此部分介绍如何在 AWS 上创建和管理 Vertica 群集。
当您在 AWS 资源上启动群集并准备创建数据库时,请考虑是在
Eon 模式还是
企业模式下运行它。这两种模式的区别在于它们的架构、部署和可扩展性:
有关两种数据库模式之间差异的详细信息,请参阅体系结构。
此部分内容
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 产品:
有关安装这些产品的信息,请参阅使用 CloudFormation 模板启动 MC 和 AWS 资源。
1.3 - 适用于 AWS 的 Vertica AMI 操作系统
Vertica 在以下操作系统中提供 Vertica 和管理控制台 AMI。
-
Red Hat 7.4 及更高版本
-
Amazon Linux 2.0 及更高版本
可以使用 AMI 部署 MC 主机或群集主机。
重要
当使用 Amazon Linux 2.0 时,您必须使用受支持的
gcc
版本编译 C++ UDX 库。有关详细信息,请参阅
设置开发环境。
1.4 - 支持的 AWS 实例类型
Vertica 支持一系列 Amazon Web Services 实例类型,每种类型都针对不同的目的进行了优化。选择最符合您的要求的实例类型。下面的两个表列出了 Vertica 支持用于 Vertica 群集主机以及要在 MC 中使用的 AWS 实例类型。有关详细信息,请参阅有关实例类型和卷的 Amazon Web Services 文档。
适用于 Vertica 群集主机的实例类型
每个 Amazon EC2 实例类型本身提供以下存储选项之一:
重要
支持 EBS 卷的实例类型支持加密。
适用于 MC 主机的实例类型
更多信息
有关 Amazon 群集实例及其限制的详细信息,请参阅 Amazon Web Services 文档中的管理群集。
1.5 - 选择 AWS Eon 模式实例类型
本主题列出了在 AWS 中运行的 Eon 模式数据库中使用的推荐实例类型。
根据成本和可用性,为您的存储库选择支持临时实例存储或 EBS 卷的实例类型。不一定非要拥有 EBS 支持的存储库,因为在 Eon 模式下,数据的副本安全地存储在公共存储中。Vertica 建议将 r4 或 i3 实例用于生产群集。
下表提供的信息可帮助您决定如何选择具有临时实例存储或纯 EBS 存储的实例。请与 AWS 联系,了解最新的每小时费用。
重要
如果您选择使用实例存储的实例,随后终止这些实例,则可能会丢失数据。对于 Eon 模式,当终止支持实例存储的实例时,MC 会显示一条警报以通知用户可能会发生数据丢失。
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、密钥和(可选)访问令牌值。
重要
如果数据库在 Eon 模式下运行,则使用 ID 和密钥身份验证会更加复杂。除了有权访问外部 S3 数据之外,用户设置的任何 ID 都必须有权读取和写入 Vertica 用于存储公共数据和编录数据的 S3 存储位置。用户执行的查询将此 ID 用于所有存储请求,而不仅仅是那些用于访问外部 S3 数据的请求。如果 ID 无权访问编录和公共存储,则用户无法执行这些查询。
配置 IAM 角色
要配置 IAM 角色以授予 Vertica 对 AWS 资源的访问权限,您必须:
-
创建一个 IAM 角色以允许 EC2 实例访问特定资源。
-
授予该角色访问您的资源的权限。
-
将此 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 许可证之外,您还可以在没有许可证文件的情况下访问社区版:
-
按小时:一种即用即付模式,您只需为每个节点使用的小时数付费。使用付费列表的一个优点是,所有费用都会显示在 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 之前,请确认您具有:
2.3 - 使用 CloudFormation 模板启动 MC 和 AWS 资源
使用可通过 AWS Marketplace 获得的 CloudFormation 模板 (CFT) 启动 管理控制台 (MC) 及其关联的 AWS 资源。有关可用 CFT 的列表,请参阅 CloudFormation 模板 (CFT) 概述。
从 AWS Marketplace 开始,启动可从中安装 Vertica 的配置实例:
-
使用 AWS 帐户登录到 AWS Marketplace(请参阅上面的先决条件 一节)。
-
在 AWS Marketplace 中搜索“Vertica”。
-
选择 Vertica CFT。每个 CFT 都会引导您进入产品概述页面,其中包含定价估算值。(另请参阅 CloudFormation 模板 (CFT) 概述,了解可用模板和产品的概述)。
-
单击“继续 (Continue)”以订阅。
-
在下一页上,根据部署要求选择启动设置。
-
如果您之前未同意 AWS Marketplace 上的 Vertica EULA 条款,请单击“接受软件条款 (Accept Software Terms)”进行订阅。
-
单击使用 CloudFormation 控制台启动 (Launch with CloudFormation Console)。此时 CloudFormation 控制台将打开。
-
CloudFormation 控制台会自动在指定 Amazon S3 模板 URL (Specify an Amazon S3 template URL) 字段中提供 URL。单击下一步 (Next)。
-
遵循 CloudFormation 工作流,并输入参数(统称为堆栈)。
注意
重要说明: 记下您在此步骤中为管理控制台设置的用户名和密码。创建堆栈后,您无法恢复或重置这些凭据。
-
在确认您为新堆栈提供的详细信息后,单击创建 (Create)。AWS 控制台会将您带到“堆栈 (Stacks)”页面,您可以在其中查看创建过程的进度。该过程需要几分钟时间。
-
输出 (Outputs) 选项卡显示有关在该过程完成后访问环境的信息。
接下来,访问管理控制台 (MC) 以部署群集实例并创建数据库,如访问管理控制台中所述。
2.4 - 访问管理控制台
您可以使用 MC 部署 Vertica 群集实例,并创建数据库。还可以使用 MC 管理和监控您的数据库。您将使用管理控制台在刚刚启动的 AWS 资源上配置 Vertica 群集和数据库。
-
在 AWS CloudFormation 堆栈页面上,选择新堆栈并查看输出 (Outputs) 选项卡。此选项卡提供有关访问您的环境以及文档和许可资源的信息。
-
单击访问 管理控制台 URL。此链接将带您进入 MC 登录页面。
-
要登录,输入您使用 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 设置之外,您可能还有特定的网络配置需求。
重要
您可以创建一个使用 IPv6 在 AWS 上进行内部通信的 Vertica 数据库。但是,如果这样做,则必须使用 IP 地址而不是主机名来标识群集中的主机。AWS DNS 解析服务与 IPv6 不兼容。
以下几节介绍了您需要为创建实例配置哪些 Amazon EC2 功能。
3.1.1 - 创建放置组、密钥对和 VPC
为 AWS 配置网络的一环是创建以下内容:
创建放置组
放置组是单个可用性区域中实例的逻辑分组。群集需要放置组,并且所有 Vertica 节点必须位于同一个放置组中。
Vertica 建议将放置组用于那些受益于低网络延迟、高网络吞吐量或两者兼有的应用程序。要为放置组提供最低延迟、最高每秒数据包数网络性能,请选择支持增强网络的实例类型。
有关创建放置组的信息,请参阅 AWS 文档中的放置组。
创建密钥对
您需要一个密钥对,才能使用 SSH 访问实例。使用 AWS 界面创建密钥对,并将密钥 (*.pem) 文件的副本存储在本地计算机上。当访问实例时,需要知道密钥的本地路径。
使用密钥对可以:
有关创建密钥对的信息,请参阅 AWS 文档中的 Amazon EC2 密钥对。
创建虚拟私有云 (VPC)
您在 Amazon 上创建虚拟私有云 (VPC),以便可以创建 EC2 实例的网络。您在 VPC 中的实例都共享相同的网络和安全设置。
AWS 上的 Vertica 群集在逻辑上必须位于同一网络中。创建 VPC 以确保群集中的节点可以在 AWS 中相互通信。
使用以下配置创建单个公共子网 VPC:
注意
一个 Vertica 群集必须在单个可用性区域中运行。
有关创建 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);
如果出现问题,则会发生以下情况之一:
有关 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。您可以使用默认安全组,也可以命名和分配您自己的安全组。
使用以下基本安全组设置,创建并命名您自己的安全组。您可以根据特定的需求进行其他修改。
入站
注意
在管理控制台 (MC) 中,Java IANA 发现过程使用端口 7 一次,来检测在数据库导入操作之前是否可以访问 IP 地址。Vertica 首先尝试端口 7。如果端口 7 被阻止,Vertica 将切换到端口 22。
出站
有关什么是安全组以及如何创建安全组的信息,请参阅 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 充当模板,需要较少的配置步骤:
-
配置 EC2 实例。
-
向实例添加存储。
-
(可选)将 EBS 卷配置为 RAID 阵列。
-
设置安全组和 S3 访问权限。
-
启动实例并验证它们是否正在运行。
在 AWS 中配置 EC2 实例
-
从 AWS Marketplace 中选择 Vertica AMI。
-
选择所需的实现方法。
-
配置以下内容:
向实例添加存储
向实例添加存储时,请考虑以下问题:
将 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 阵列(就像本示例中的情况)。
注意
如果您的 EC2 实例启用了超线程,vioperf 可能会错误地计算系统中的核心数。每个核心 20MB/s 吞吐量的要求仅适用于物理核心,而不适用于虚拟核心。如果您的 EC2 实例启用了超线程,请将计数器值(输出中的第 4 列)除以物理核心数。请参阅 AWS 文档主题
优化 CPU 选项中的“每个实例类型的每个 CPU 核心的 CPU 核心数和线程数”部分,了解每种实例类型的物理核心列表。
如果您确定需要将 EBS 卷配置为 RAID 0 阵列,请参阅 AWS 文档主题 Linux 上的 RAID 配置,了解您需要采取的步骤。
安全组和访问权限
-
在以前配置的安全组或默认安全组之间进行选择。
-
通过创建 IAM 角色并将其分配给 EC2 实例,来配置节点的 S3 访问权限。有关详细信息,请参阅AWS 身份验证。
3.2.2 - 连接到实例
使用私钥,执行以下步骤以通过您已附加弹性 IP 地址的实例连接到群集:
-
作为 dbadmin 用户,通过替换 ssh 密钥键入以下命令:
$ ssh --ssh-identity <ssh key> dbadmin@elasticipaddress
-
从导航面板中选择 实例 (Instances)。
-
选择附加到弹性 IP 的实例。
-
单击连接。
-
在连接到您的实例 (Connect to Your Instance) 上,选择以下选项之一:
使用 putty 从 Windows 连接到实例
如果从 Windows 操作系统连接到实例,请使用 Putty:
-
使用 PuTTYgen 转换密钥文件。
-
使用转换后的密钥(即 *ppk
文件)连接 Putty 或 WinSCP(通过弹性 IP 连接)。
-
使用 Putty 或 WinSCP 将密钥文件(*pem
文件)移动到根目录。
3.2.3 - 准备实例以形成群集
创建实例后,您需要准备它们以形成群集。通过添加您的 AWS .pem
密钥和 Vertica 许可证来准备您的实例。
默认情况下,每个 AMI 都包含一个社区版许可证。安装 Vertica 后,您可以在以下位置找到许可证:
/opt/vertica/config/licensing/vertica_community_edition.license.key
-
作为 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
-
将您的 Vertica 许可证复制到主实例,将其放置在主目录或其他已知位置。
3.2.4 - 在 AWS 上更改实例
您可以在 AWS 上更改实例类型。例如,您可以将 c3.8xlarge 实例降级到 c3.4xlarge。有关有效 AWS 实例的列表,请参阅支持的 AWS 实例类型。
当更改 AWS 实例时,您可能需要:
-
重新配置内存设置
-
重置资源池中的内存大小
-
重置资源池中的 CPU 数量
重新配置内存设置
如果更改为需要不同内存量的 AWS 实例类型,则可能需要重新计算以下内容,然后重置相应的值:
注意
您可能需要 root 用户权限才能重置这些值。
重置资源池中的内存大小
如果您在资源池中使用了绝对内存,则可能需要使用 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
重要
忽略根卷。请勿在 RAID 创建过程中包含任何根卷。
组合存储卷
configure_software_raid.sh
Shell 脚本将 EBS 卷组合成一个 RAID 0 阵列。
当心
仅当您的全新配置没有现有的 RAID 设置时,才会采用默认设置运行 configure_software_raid.sh
。
如果存在现有的 RAID 设置,请在文本编辑器中打开该脚本,并手动编辑 raid_dev
值以反映当前的 RAID 设置。如果存在现有的 RAID 设置,并且未编辑该脚本,则该脚本会删除重要的操作系统设备文件。
或者,使用管理控制台 (MC) 添加存储节点,而无需对操作系统设备文件进行不必要的更改。有关详细信息,请参阅管理数据库群集。
以下步骤使用 configure_software_raid.sh
脚本将 EBS 卷组合为 RAID 0 阵列:
-
按如下方式编辑 /opt/vertica/sbin/configure_software_raid.sh
Shell 文件:
-
注释掉开头的安全 exit
命令。
-
将示例卷名称更改为您之前记下的您自己的卷名称。如有必要,添加更多卷。
-
运行 /opt/vertica/sbin/configure_software_raid.sh
Shell 文件。运行此文件会创建一个 RAID 0 卷,并将其挂载到 /vertica/data
。
-
使用 chown
将新创建的卷的所有者更改为 dbadmin。
-
对群集中的每个节点重复步骤 1-3。
3.2.6 - 创建群集
在 AWS 上,使用
install_vertica
脚本组合实例并创建群集。检查 AWS 上的我的实例 (My Instances) 页面,以获取当前实例及其关联 IP 地址的列表。运行 install_vertica
时需要这些 IP 地址。
按如下方式创建群集:
-
当连接到主实例时,输入以下命令以将实例组合为一个群集。替换您的实例的 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
注意
* 如果您使用的是 Vertica 社区版(它限制您只能使用三个实例),则可以指定 `-L CE` 而不使用许可证文件。
* 当在 Vertica AMI 脚本上发出 install_vertica 或 update_vertica 时,\--point-to-point 是默认设置。此参数将
Spread 配置为在所有 Vertica 节点之间使用直接点对点通信,这是 AWS 上群集的要求。
* 如果使用 IPv6 网络地址来标识群集中的主机,请在 `install_vertica` 命令中使用 \--ipv6 标志。您还必须使用 IP 地址而不是主机名,因为 AWS DNS 服务器无法将主机名解析为 IPv6 地址。
-
组合实例后,Vertica 建议从群集中删除 *.pem
密钥以降低安全风险。下面的示例使用 shred
命令删除该文件:
$ shred name-of-pem.pem
-
创建一个或多个群集后,创建数据库。
有关 install_vertica
脚本及其参数的完整信息,请参阅使用安装脚本安装 Vertica。
重要
在未首先关闭数据库的情况下停止或重新启动实例或群集,可能会导致磁盘或数据库损坏。要安全地关闭并重新启动群集,请参阅
操作数据库。
使用 netcat 实用程序手动检查打开的端口
群集启动并运行后,您可以使用 netcat (nc) 实用程序通过命令行手动检查端口。下面是使用该实用程序检查端口的示例。
在执行此过程之前,请选择群集中两个节点的专用 IP 地址。
下面给出的示例使用具有专用 IP 的节点:
10.0.11.60 10.0.11.61
在您的节点上安装 nc 实用程序。安装后,您可以发出命令从另一个节点检查一个节点上的端口。
-
要检查 TCP 端口:
-
将一个节点置于侦听模式并指定端口。以下示例显示如何将 IP 10.0.11.60
置于端口 480
的侦听模式。
[root@ip-10-0-11-60 ~]# nc -l 4804
-
从另一个节点,运行 nc
以指定您刚刚置于侦听模式的节点的 IP 地址和相同的端口号。
[root@ip-10-0-11-61 ~]# nc 10.0.11.60 4804
-
从任一节点输入示例文本,它应该显示在另一个节点上。要在检查端口后取消,请输入 Ctrl+C。
注意
注意: 要检查 UDP 端口,请使用带有 –u
选项的相同 nc
命令。
[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 时的注意事项
相关主题
4 - 将节点添加到云上正在运行的群集
可通过两种方法向 AWS 群集中添加节点:
当您使用 MC 将节点添加到云中的群集时,MC 会配置实例,将新实例添加到现有 Vertica 群集,然后将这些主机添加到数据库中。但是,当您使用 admintools 将节点添加到群集时,您需要自己执行这些步骤,如使用 admintools 添加节点中所述。
使用管理控制台添加节点
在 Vertica 管理控制台中,您可以通过多种方式添加节点,具体取决于您的数据库模式。
对于 Eon 模式数据库,MC 支持以下公共和私有云提供商的子群集和节点管理操作:
注意
企业模式不支持子群集。
对于企业模式下的数据库,MC 支持以下操作:
注意
在 GCP 上的云中,不支持企业模式下的数据库。
在 Eon 模式数据库中添加节点
在 Eon 模式数据库中,每个节点都必须属于一个子群集。要添加节点,请始终将它们添加到数据库中的子群集之一:
在 AWS 上的企业模式数据库中添加节点
在 AWS 上的企业模式数据库中,要将实例添加到群集中:
-
在 MC 主页上,单击查看基础架构 (View Infrastructure) 以转到基础架构页面。此页面列出了 MC 正在监控的所有群集。
-
单击“基础架构 (Infrastructure)”页面上显示的任何群集。
-
从显示的对话框中选择查看 (View) 或管理 (Manage),以查看其群集 (Cluster) 页面。在云环境中,如果 MC 通过云模板进行部署,则该按钮显示“管理 (Manage)”。否则,按钮会显示“查看 (View)”。
注意
单击群集名称旁边的铅笔图标,可以重命名群集。输入在 MC 内具有唯一性的名称。
-
在群集管理 (Cluster Management) 页面上的实例列表 (Instance List) 中,单击“添加 (Add)”(+) 图标。
MC 会将一个节点添加到选定群集中。
此部分概述使用 admintools 管理群集时如何添加节点。每个主要步骤都指向另一个带有完整说明的主题。
步骤 1:开始之前
在将节点添加到群集之前,请确认您已启动并运行 AWS 群集,并且您已经:
-
创建数据库。
-
定义数据库架构。
-
加载数据。
-
运行 Database Designer。
-
连接到数据库。
步骤 2:启动新实例以添加到现有群集
执行配置并启动实例中的过程,以创建随后将添加到现有群集中的新实例(主机)。请务必选择您在创建原始实例时选择的相同详细信息(VPC、放置组、子网和安全组)。
步骤 3:将新实例作为群集节点包括在内
当运行 install_vertica
脚本以将新实例作为群集节点包括在内时,您需要 IP 地址。
如果您要配置 Amazon Elastic Block Store (EBS) 卷,请务必先在节点上配置卷,然后再将节点添加到群集。
要将新实例作为节点添加到现有群集:
-
配置并启动新实例。
-
连接到分配给弹性 IP 的实例。如果您需要更多信息,请参阅连接到实例。
-
运行 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 - 从数据库中移除主机
在从数据库中移除主机之前,请验证您已经:
注意
请勿停止数据库。
要从数据库中移除主机:
-
当以 dbadmin 身份登录时,启动管理工具。
$ /opt/vertica/bin/admintools
-
从主菜单 (Main Menu) 中,选择高级菜单 (Advanced Menu)。
-
从高级菜单 (Advanced Menu) 中,选择群集管理 (Cluster Management)。单击确定 (OK)。
-
从群集管理 (Cluster Management) 中,选择移除主机 (Remove Host(s))。单击确定 (OK)。
-
从选择数据库 (Select Database) 中,选择您计划从中移除主机的数据库。单击确定 (OK)。
-
选择要移除的主机。单击确定 (OK)。
-
单击是 (Yes) 确认移除主机。
注意
如有必要,请输入密码。如果没有密码,请留空。
-
单击确定 (OK)。系统会显示一条消息,告诉您主机已被移除。还会发生自动重新平衡。
-
单击确定 (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 中的实例:
-
在 AWS 上,导航到实例 (Instances) 页面。
-
右键单击实例,并选择停止 (Stop)。
此步骤是可选的,因为从 Vertica 群集中移除节点后,Vertica 不再将该节点视为群集的一部分,即使它仍在 AWS 中运行也是如此。
6 - 在 AWS 上升级 Vertica
在升级到最新版本的 Vertica 之前,请执行以下操作:
-
备份现有的数据库。
-
下载 Vertica 安装包,如下载并安装 Vertica 安装包中所述。
在 AWS 上升级到最新版本的 Vertica
要在 AWS 上升级到最新版本的 Vertica,请按照升级 Vertica 中的说明进行操作。
如果您是第一次在 AWS 上安装 Vertica 群集,请按照在 AWS 上安装和运行的过程进行操作。
升级在 AWS 上运行的 Vertica
Vertica 支持升级在从 Vertica AMI 创建的 AWS 实例上运行的 Vertica 服务器。要升级 Vertica,请按照升级 Vertica 中提供的说明进行操作。
请确保将以下实参添加到升级脚本:
7 - 在 AWS 上复制和导出数据:须知事项
在 AWS 群集上导出或复制数据时会出现一些常见问题,如下所述。除了这些与 AWS 相关的特定问题外,复制和导出数据的工作原理如数据库导出和导入中所述。
要在 AWS 上复制或导出数据:
-
验证是否为源群集和目标群集中的所有节点分配了自己的弹性 IP(或公共 IP)。
如果目标群集与源群集位于同一 VPC 中,请继续执行步骤 3。一个群集中的每个节点都必须能够与另一个群集中的每个节点进行通信。因此,每个源节点和目标节点都需要分配有一个弹性 IP(或公共 IP)。
-
(对于非 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"}
}
-
验证您的安全组允许 AWS 群集进行通信。
检查源和目标 AWS 群集的安全组。验证端口 5433 和 5434 已打开。如果 AWS 群集之一位于单独的 VPC 上,请验证网络访问控制列表 (ACL) 允许在端口 5434 上进行通信。
注意
注意:
这种通信方法通过 Internet 导出和复制(导入)数据。您也可以使用非公共 IP 和网关或 VPN 连接源群集和目标群集。
-
如果群集之间有一个或多个弹性负载均衡器 (ELB),请验证 ELB 和群集之间的端口 5433 已打开。
-
如果使用 Vertica 客户端连接到一个或多个 ELB,则 ELB 仅分发传入连接。数据传输路径发生在群集之间。