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

返回本页常规视图.

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

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

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

1 - 配置网络

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

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

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)

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 文档中的临时端口

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 文档中的什么是网络负载均衡器?

1.4 - 创建和分配 Internet 网关

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

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

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

1.5 - 分配弹性 IP 地址

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

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

1.6 - 创建安全组

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

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

入站

出站

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

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

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

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 身份验证

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 文件)移动到根目录。

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 许可证复制到主实例,将其放置在主目录或其他已知位置。

2.4 - 在 AWS 上更改实例

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

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

  • 重新配置内存设置

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

  • 重置资源池中的 CPU 数量

重新配置内存设置

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

重置资源池中的内存大小

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

重置资源池中的 CPU 数量

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

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。

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
    

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

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

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

另请参阅

2.7.1 - 登录 MC 并管理群集

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

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

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

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

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

相关主题