在安装 Vertica 之前,请完成本部分中的所有任务。完成本部分的任务后,继续安装 Vertica。
在安装 Vertica 之前
- 1: 平台要求和建议
- 1.1: 常规硬件和操作系统要求和建议
- 1.2: BASH shell 要求
- 2: 配置网络
- 2.1: 确保端口可用
- 3: 操作系统配置任务概述
- 3.1: 操作系统先决条件
- 3.2: 防火墙注意事项
- 3.3: 端口可用性
- 3.4: 常规操作系统配置 - 由安装程序自动配置
- 3.4.1: Sysctl
- 3.4.2: Nice 限制配置
- 3.4.3: min_free_kbytes 设置
- 3.4.4: 用户可打开的文件数上限
- 3.4.5: 系统可打开的文件数上限
- 3.4.6: Pam 限制
- 3.4.7: pid_max 设置
- 3.4.8: 用户地址空间限制
- 3.4.9: 用户文件大小限制
- 3.4.10: 用户进程限制
- 3.4.11: 最大内存映射配置
- 3.5: 常规操作系统配置 - 手动配置
- 3.5.1: 保留操作系统设置
- 3.5.2: SUSE 控制组配置
- 3.5.3: 计划作业所需的 Cron
- 3.5.4: 磁盘预读
- 3.5.5: I/O 计划
- 3.5.6: 启用或禁用透明大页
- 3.5.7: 检查 swappiness
- 3.5.8: 启用网络时间协议 (NTP)
- 3.5.9: 为 Red Hat 7/CentOS 7 系统启用 chrony 或 ntpd
- 3.5.10: SELinux 配置
- 3.5.11: CPU 频率调整
- 3.5.12: 启用或禁用 defrag
- 3.5.13: 支持工具
- 3.6: 系统用户配置
- 3.6.1: 系统用户要求
- 3.6.2: TZ 环境变量
- 3.6.3: LANG 环境变量设置
- 3.6.4: 软件包依赖项
- 4: 在安装期间指定磁盘存储位置
1 - 平台要求和建议
必须验证服务器是否满足支持的平台中所述的平台要求。“支持的平台”主题详细说明了以下组件受支持的版本:
-
服务器操作系统和管理控制台 (Management Console) (MC)
-
支持的 MC 浏览器
-
支持的文件系统
安装最新的供应商特定系统软件
为硬件安装最新的供应商驱动程序。
数据存储建议
-
所有内部驱动器均连接到单个 RAID 控制器。
-
RAID 阵列应构建一个硬件 RAID 设备作为相邻 /data 卷。
安装 Perl
在执行群集安装之前,请在所有目标主机上安装 Perl 5。可从 www.perl.org 下载 Perl。
验证实用程序
Vertica 提供了多个验证实用程序用于验证准主机的性能。这些实用程序在安装 Vertica RPM 时安装,但可以在运行 install_vertica
脚本之前使用它们。有关运行这些实用程序以及验证主机是否满足建议要求的更多详细信息,请参阅验证脚本。
1.1 - 常规硬件和操作系统要求和建议
硬件建议
Vertica Analytics Platform 基于大规模并行处理 (MPP) 无共享架构,其中的查询处理工作负载被划分到 Vertica 数据库的所有节点。Micro Focus 强烈建议为 Vertica 群集使用同类硬件配置;也就是说,群集的每个节点都应具有类似的 CPU、时钟速度、核心数、内存和操作系统版本。
请注意,Micro Focus 尚未在使用不同硬件规格的节点构成的群集上测试 Vertica。尽管 Vertica 数据库预期可在混合硬件配置中正常工作,但性能会受制于群集中最慢节点的性能。
Vertica 在时钟频率较高的处理器上表现最佳。如果可能,请选择内核较少、速度较快的处理器,而不是内核较多、速度较慢的处理器。
不管是内部还是客户执行的测试,都表明了处理器架构之间的性能差异,即使考虑到内核数量和时钟频率的差异也是如此。如果可能,请通过安装 Vertica 并使用您的数据和工作负载运行实验来比较平台。考虑在通过不同处理器架构上运行虚拟机的云平台上进行测试,即使您打算部署 Vertica 内部部署数据库。
调整 Vertica 节点和群集大小的建议(以前的《Vertica 硬件计划指南》)中提供了详细的硬件建议。
平台操作系统要求
重要
将 Vertica 部署为每个主机上除 Linux 进程或 Vertica 明确批准的软件之外的唯一活动进程。Vertica 无法与其他软件共存。从群集主机移除或禁用所有非必要应用程序。必须验证服务器是否符合 Vertica 服务器和管理控制台中所述的平台要求。
验证 sudo
Vertica 在安装期间和一些管理任务期间使用 sudo 命令。确保可在所有主机上将 sudo 用于以下命令:
# which sudo
/usr/bin/sudo
如果未安装 sudo,请按照如何在 Red Hat Enterprise Linux 上启用 sudo 中的说明在所有主机上执行操作。
当使用 sudo 安装 Vertica 时,执行安装的用户必须具有群集中所有节点的权限。
为 sudo 配置单独命令的权限可能是一个非常繁琐且容易出错的过程;因此,Vertica 文档并未包含 sudoers 文件中可能包含的每条 sudo 命令。相反,Vertica 建议临时提升 sudo 用户权限,使其在整个安装过程中拥有所有权限。
注意
有关如何编写/修改 sudoers 文件的详细信息,请参见 sudoers 和 visudo 的手册页。要允许 root sudo 以任意计算机上的任意用户身份访问所有命令,请使用 visudo 作为 root 用户来编辑 /etc/sudoers
文件并添加以下行:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
完成安装后,移除 sudo 权限或将 sudo 权限重置为预安装设置。
1.2 - BASH shell 要求
Vertica 中包含的所有 shell 脚本都必须在 BASH shell 下运行。如果在 Debian 系统中,则默认 shell 可能为 DASH。不支持 DASH。使用 chsh
命令,将 root 和 dbadmin 用户的 shell 更改为 BASH。
例如:
# getent passwd | grep root
root:x:0:0:root:/root:/bin/dash
# chsh
Changing shell for root.
New shell [/bin/dash]: /bin/bash
Shell changed.
然后,以 root 用户身份将 /bin/sh
的符号链接从 /bin/dash
更改为 /bin/bash
:
# rm /bin/sh
# ln -s /bin/bash /bin/sh
注销并重新登录,以使更改生效。
2 - 配置网络
这组步骤涉及网络配置。这些步骤因安装方案而异。单节点安装只需要很少的网络配置,因为单个 Vertica 服务器实例不需要与群集中的其他节点通信。对于群集和云安装方案,必须做出多项配置决策。
Vertica 支持具有多个网络接口的服务器配置。例如,可能需要使用一个端口作为用于群集主机间(通过 install_vertica
的 --hosts
选项提供的主机)的内部通信专用网络接口,并将另一个单独的接口用于客户端连接。
重要
当所有节点都位于同一子网并且一个或多个接口具有相同的广播地址时,Vertica 可实现最佳性能。群集如果包含一个以上子网中的节点,则在网络利用率水平较高的情况下,由于多子网系统相关的网络延迟可能导致性能下降。重要说明
-
除一种特殊的例外情况以外,单节点的网络配置与多节点群集的网络配置完全相同。如果在将保留永久单节点配置(例如用于开发或概念证明)的单个主机上安装 Vertica,则可以将
localhost
或环回 IP(通常为 127.0.0.1)用作--hosts
的值来安装 Vertica。如果以后可能需要在配置中添加节点,则不要在节点定义中使用主机名localhost
。 -
如果将主机与多个网络接口配合使用,则配置 Vertica 使用分配给连接到其他群集主机的 NIC 的地址。
-
使用专门的千兆位交换机。否则,性能可能受到严重影响。
-
不要将 DHCP 动态分配的 IP 地址用于专用网络。仅使用静态地址或永久租用的 DHCP 地址。
选择 IPv4 或 IPv6 地址用于主机标识和通信。
Vertica 支持使用 IPv4 或 IPv6 IP 地址来标识数据库群集中的主机。Vertica 使用单个地址来标识数据库群集中的主机。用于标识群集中主机的所有 IP 地址都必须使用同一个 IP 系列。
对于数据库群集中的主机,既可以分配 IPv4 网络地址又可以分配 IPv6 网络地址。在这些地址中,只有一个用于标识群集中的节点。您可以使用其他地址来处理客户端连接或与其他系统的连接。
在安装时通知 Vertica 使用哪个地址系列。默认情况下,Vertica 针对主机使用 IPv4 地址。如果您希望数据库中的节点使用 IPv6 地址,请向您传递到 install_vertica
脚本的实参添加 --ipv6
选项。
注意
数据库群集所使用的地址系列一经创建,便无法更改。例如,假设您创建的 Vertica 数据库使用 IPv4 地址标识群集中主机。以后,无法将主机更改为使用 IPv6 地址进行内部通信。大多数情况下,您选择的地址系列不会影响数据库的功能。但是,也有一些例外:
-
如果要使用管理控制台来管理数据库,请使用 IPv4 地址标识群集中的节点。当前,MC 不支持使用 IPv6 地址的数据库。
-
如果您针对群集选择 IPv6 地址,它会自动使用点对点网络模式。
-
当前,AWS 是 Vertica 在其上支持 IPv6 寻址的唯一云平台。要在 AWS 上使用 IPv6,必须使用 IP 地址(而不是主机名)标识群集主机。AWS DNS 不支持将主机名解析为 IPv6。
-
如果为数据库群集中的主机仅分配 IPv6 地址,则与不支持 IPv6 的其他系统交互时,可能会出现问题。
您传递给安装脚本的信息中包含主机列表,安装脚本将使用这些主机构成 Vertica 群集。如果您在此列表中使用主机名而不是 IP 地址,请确保主机名解析为您要针对群集使用的 IP 地址系列。例如,如果您希望群集使用 IPv6 地址,请确保 DNS 或 /etc/hosts
文件将主机名解析为 IPv6 地址。
可以将 DNS 配置为同时返回主机名的 IPv4 和 IPv6 地址。在这种情况下,除非您提供 --ipv6
实参,否则安装程序使用 IPv4 地址。如果使用 /etc/hosts
进行主机名解析(这是最佳实践),则主机名无法同时解析为 IPv4 和 IPv6 地址。
(可选)在单独的控制网络上运行 spread
如果查询工作负载大量使用网络,则可以将 --control-network
参数与
install_vertica
脚本(请参阅使用安装脚本安装 Vertica)配合使用,以便在不同于其他 Vertica 数据通信的子网上配置 spread 通信。
--control-network
参数可接受 default
值或广播网络 IP 地址(例如 192.168.10.255
)。
配置 SSH
-
验证 root 用户可使用安全 Shell (SSH) 登录 (ssh) 到群集中包含的所有主机。SSH(SSH 客户端)是用于登录远程计算机以及在远程计算机上运行命令的程序。
-
如果尚未在所有主机上安装 SSH,请在安装 Vertica 之前,以 root 用户身份登录每个主机并安装 SSH。可以从 OpenSSH 下载免费版本的 SSH 连接工具。
-
请确保
/dev/pts
已挂载。在缺少挂载点/dev/pts
的主机上安装 Vertica 可能导致在创建数据库时发生以下错误:
TIMEOUT ERROR: Could not login with SSH. Here is what SSH said:Last login: Sat Dec 15 18:05:35 2007 from v_vmart_node0001
允许 dbadmin 用户进行无密码 SSH 访问
必须授权 dbadmin 用户使用无密码 ssh。在典型安装中,不需要做任何更改;但如果将系统设为不允许无密码登录,则需要为 dbadmin 用户启用此功能。请参阅启用安全 shell (SSH) 登录。
2.1 - 确保端口可用
验证 Vertica 所需的端口是否未使用,方法是以 root 用户身份运行以下命令并将其与所需端口进行比较,如下所示:
netstat -atupn
如果正在使用的是 Red Hat 7/CentOS 7 系统,则使用以下命令:
ss -atupn
防火墙要求
Vertica 要求本地网络中的多个端口处于开放状态。Vertica 不建议在节点之间放置防火墙(所有节点都应该在防火墙的后面),但如果必须在节点之间使用防火墙,请确保以下端口可用:
3 - 操作系统配置任务概述
本主题简要概述了 Vertica 所需的操作系统设置。每个项目都会提供链接,以了解关于设置的更多详细信息以及有关进行配置更改的详细步骤。安装程序会对所有这些设置进行测试,并在当前配置不符合 Vertica 要求时提供提示、警告和故障。
安装操作系统前
防火墙注意事项
常规操作系统配置 - 由安装程序自动配置
这些常规操作系统设置如果不符合 Vertica 要求,将由安装程序自动配置。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
常规操作系统配置 - 手动配置
以下常规操作系统设置必须手动完成。
系统用户要求
以下任务与 Vertica 所需的系统用户的配置有关。
3.1 - 操作系统先决条件
本节中的主题将详细说明在安装操作系统时必须配置的系统设置。完成操作系统的安装后,将无法轻易更改这些设置。
3.1.1 - 支持的平台
Vertica 安装程序会检查安装的操作系统类型。如果操作系统不符合支持的操作系统之一(请参阅 Vertica 服务器和管理控制台),或无法确定操作系统,那么安装程序将会停止运行。
如果安装程序检测到不支持的操作系统,将会生成以下问题标识符之一:
-
[S0320] - Fedora 操作系统不受支持。
-
[S0321] - Red Hat/CentOS 的版本不受支持。
-
[S0322] - Ubuntu/Debian 的版本不受支持。
-
[S0323] - 无法确定操作系统。由于与支持的操作系统列表不匹配,因此未知操作系统不受支持。
-
[S0324] - Red Hat 的版本不受支持。
3.1.2 - 推荐的存储格式类型
根据部署需求选择存储格式类型。Vertica 建议使用以下存储格式类型(如适用):
-
ext3
-
ext4
-
NFS(用于备份)
-
XFS
-
在 Eon 模式下运行时用于公共存储和相关备份任务的 Amazon S3 标准
注意
就 Vertica I/O 模式而言,ext4 文件系统的速度要比 ext3 快得多。备份和临时目录位置的存储格式类型必须支持 fcntl lockf (POSIX) 文件锁定。
3.1.3 - 交换空间要求
不论系统中安装的 RAM 量是多少,Vertica 都需要至少 2 GB 的交换分区。安装程序会以标识符 S0180 报告此问题。
对于典型安装,不论安装的 RAM 量是多少,Vertica 都建议在对系统进行分区时包含一个用于交换的 2GB 主分区。可以接受更大的交换空间,但不是必需的。
注意
请勿将交换文件置于包含 Vertica 数据文件的磁盘上。如果主机只有两个磁盘(启动磁盘和数据磁盘),请将交换文件放在启动磁盘上。如果没有至少 2 GB 交换分区,则在运行 Vertica 时可能会遇到性能问题。
通常在安装 Linux 时定义交换分区。有关配置交换分区的详细信息,请参见相应平台的文档。
3.1.4 - 磁盘块大小要求
Vertica 建议的磁盘块大小为 4096 字节,这是 ext4 和 XFS 文件系统的默认值。
在格式化文件系统时设置磁盘块大小。如果更改块大小,则需要重新格式化磁盘。
有关详细信息,请参阅推荐的存储格式类型。
3.1.5 - 内存要求
单个主机的要求
Vertica 要求您的主机上的每个逻辑处理器至少有 1GB 的 RAM。如果您的主机不符合此要求,安装程序会以标识符 S0190 报告此问题。
由于性能的原因,通常需要高于最小值的 RAM。有关调整硬件大小的详细信息,请参阅 Vertica 知识库硬件文档。
所有主机上的 RAM 都应该相同
除了单个主机的 RAM 要求外,如果针对群集中的所有主机报告的 RAM 数不同,安装程序还会给出提示。如果一个或多个节点的 RAM 少于数据库中的其他节点,则确保所有主机具有相同数量的 RAM 有助于防止出现性能问题。
3.2 - 防火墙注意事项
Vertica 要求节点之间的多个端口保持开放状态。可在基于 Redhat/CentOS 和 Ubuntu/Debian 的系统上使用防火墙(IP 表)。请注意,在 SuSE 系统上不支持使用防火墙,SuSE 系统必须禁用防火墙。安装程序会以标识符 N0010(对于使用 IP 表的系统)和 N011(对于 SuSE 系统)报告在 IP 表配置中发现的问题。
安装程序会检查 IP 表配置,如果存在任何已配置的规则或链,将会发出警告。安装程序不会检测该配置是否可能与 Vertica 存在冲突。您有责任确认防火墙允许 Vertica 流量,如确保端口可用中所述。
注意
安装程序不会检查 iptable 中的 NAT 条目。可以修改防火墙以允许 Vertica 网络流量,或者如果网络安全可靠,也可以禁用防火墙。请注意,在 SuSE 上运行的 Vertica 系统不支持防火墙。
重要
即使防火墙处于禁用状态,仍可能会遇到 N0010 问题。如果发生这种情况,可以通过忽略安装程序 WARN 消息来解决此问题并安装 Vertica。为此,请使用故障阈值 FAIL 进行安装(或更新)。例如,/opt/vertica/sbin/install_vertica \--failure-threshold FAIL <other install options...>
。
Red hat 6 和 CentOS 6 系统
有关如何配置 iptables 以及允许特定端口成为公开端口的详细信息,请参见面向您的平台的平台特定文档:
- RedHat:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-IPTables.html
- CentOS:http://wiki.centos.org/HowTos/Network/IPTables
要禁用 iptable,请以 root 或 sudo 用户身份运行以下命令:
# service iptables save
# service iptables stop
# chkconfig iptables off
如果正在使用 ipv6 版本的 iptable,要禁用 iptable,请以 root 或 sudo 用户身份运行以下命令:
# service ip6tables save
# service ip6tables stop
# chkconfig ip6tables off
Red hat 7 和 CentOS 7 系统:
要禁用系统防火墙,请以 root 或 sudo 用户身份运行以下命令:
# systemctl mask firewalld
# systemctl disable firewalld
# systemctl stop firewalld
Ubuntu 和 debian 系统
有关如何配置 iptables 以及允许特定端口成为公开端口的详细信息,请参见面向您的平台的平台特定文档:
注意
Ubuntu 使用 ufw 程序管理 iptable。要在 Debian 上禁用 iptable,请以 root 或 sudo 用户身份运行以下命令:
/etc/init.d/iptables stop
update-rc.d -f iptables remove
要在 Ubuntu 上禁用 iptable,请运行以下命令:
sudo ufw disable
SuSE 系统
在 SUSE 系统上必须禁用防火墙。要在 SuSE 系统上禁用防火墙,请运行以下命令:
/sbin/SuSEfirewall2 off
3.3 - 端口可用性
install_vertica 脚本将会检查所需的端口是否处于开放状态并且可供 Vertica 使用。安装程序会以标识符 N0020
报告任何问题。
下表列出了 Vertica 所需的端口。
3.4 - 常规操作系统配置 - 由安装程序自动配置
这些常规操作系统设置如果不符合 Vertica 要求,将由安装程序自动配置。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
3.4.1 - Sysctl
在安装过程中,Vertica 会尝试自动更改各种操作系统级别的设置。安装程序无法更改系统中超出安装程序要求的阈值的值。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
要永久编辑某些设置并防止其在重新引导后恢复原来的设置,请使用 sysctl。
与 Vertica 的安装相关的 sysctl 设置包括:
使用 sysctl 永久更改设置:
-
以 root 用户身份打开 /etc/sysctl.conf 文件:
# vi /etc/sysctl.conf
-
输入参数和值:
parameter = value
例如,要设置
fs.file-max
参数和值以满足 Vertica 要求,请输入:fs.file-max = 65536
-
保存更改并关闭 /etc/sysctl.conf 文件。
-
以 root 用户身份重新加载配置文件:
# sysctl -p
确定安装程序添加的设置
可通过打开 /etc/sysctl.conf 文件来查看安装程序是否已添加某项设置:
# vi /etc/sysctl.conf
如果安装程序已添加某项设置,则会显示以下行:
# The following 1 line added by Vertica tools. 2015-02-23 13:20:29
parameter = value
3.4.2 - Nice 限制配置
Vertica 系统用户(默认为 dbadmin)必须能够提高和降低 Vertica 进程的优先级。为此,/etc/security/limits.conf
文件中的 Nice 选项必须包含 dbadmin 用户的条目。安装程序将以标识符S0010 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
注意
Vertica 决不会将优先级提高到超过默认级别 0。但 Vertica 可以降低特定 Vertica 线程的优先级,并且需要能够将这些线程的优先级提高回默认级别。此设置允许 Vertica 将优先级提高回默认级别。所有系统
要为 dbadmin 用户设置 Nice 限制配置,请编辑 /etc/security/limits.conf
并添加以下行。将 dbadmin 替换为系统用户的名称。
dbadmin - nice 0
3.4.3 - min_free_kbytes 设置
本主题详细说明如何更新 min_free_kbytes 设置,使其在 Vertica 支持的范围以内。安装程序将以标识符S0050(如果设置的值过低)或 S0051(如果设置的值过高)报告此问题。
vm.min_free_kbytes 设置将配置页面回收阈值。增大此数字时,系统会更早开始回收内存,减小此数字时,系统会更晚开始回收内存。min_free_kbytes 的默认值是在启动时基于系统中可用的物理 RAM 页数进行计算。
该设置必须是以下选项中的最大值:
-
系统配置的默认值
-
4096
-
运行以下命令的结果:
$ memtot=`grep MemTotal /proc/meminfo | awk '{printf "%.0f",$2}'` $ echo "scale=0;sqrt ($memtot*16)" | bc
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要手动设置 min_free_kbytes:
-
使用以下命令确定当前/默认设置:
$ sysctl vm.min_free_kbytes
-
如果前一条命令的结果是
No such file or directory
,或默认值小于 4096,则运行以下命令确定正确的值:$ memtot=`grep MemTotal /proc/meminfo | awk '{printf "%.0f",$2}'` $ echo "scale=0;sqrt ($memtot*16)" | bc
-
使用上一条命令输出中的值,在
/etc/sysctl.conf
中编辑或添加vm.min_free_kbytes
的当前值。# The min_free_kbytes setting vm.min_free_kbytes=16132
-
运行
sysctl -p
立即在sysctl.conf
中应用更改。注意
必须对群集中的每个节点重复执行这些步骤。
3.4.4 - 用户可打开的文件数上限
本主题详细说明如何更改用户可打开的文件数上限设置,使其满足 Vertica 要求。安装程序会以标识符 S0060 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
Vertica 要求在打开文件时不限制 dbadmin 用户。每个用户的打开文件限制计算如下:
用户可打开的文件数上限 = { ≥ 65536 | ≤ RAM-MBs }
作为 dbadmin 用户,您可以通过运行 ulimit -n
来确定打开文件的限制。例如:
$ ulimit -n
65536
要手动设置该限制,请编辑 /etc/security/limits.conf
,并针对配置为数据库管理员(默认为 dbadmin
)的用户编辑/添加 nofile
设置。例如:
dbadmin - nofile 65536
该设置必须不小于 65536 MB,但不大于 fs.nr_open
的系统值。例如,Red Hat Enterprise Linux 9 上的 fs.nr_open
值的默认值为 1048576 MB。
注意
系统还有可打开的文件数限制。3.4.5 - 系统可打开的文件数上限
本主题详细说明如何修改系统中可打开的文件数限制,使其符合 Vertica 要求。安装程序将以标识符S0120。
Vertica 会打开许多文件。一些平台对于可打开的文件数具有全局限制。必须将可打开的文件数限制设为足够大的值,以免干扰数据库操作。
建议的值至少为以 MB 为单位的内存量,但不小于 65536。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要手动设置可打开的文件数限制:
-
运行
/sbin/sysctl fs.file-max
以确定当前限制。 -
如果该限制不是 65536 或以 MB 为单位的系统内存量(两者中较大者),则在
fs.file-max=max number of files
中编辑或添加/etc/sysctl.conf
。# Controls the maximum number of open files fs.file-max=65536
-
运行
sysctl -p
立即在sysctl.conf
中应用更改。
注意
对于群集中的每个节点,需要重复这些步骤。3.4.6 - Pam 限制
本主题详细说明如何启用 Vertica 所需的“su”pam_limits.so 模块。安装程序将以标识符S0070 报告此设置问题。
在一些系统上,文件 /etc/pam.d/su
中没有设置名为 pam_limits.so
的 Pam 模块。如果没有设置该模块,它会禁止将限制(例如打开文件描述符)传递到任何使用 su -
开头的命令。
特别是,Vertica init 脚本将无法启动 Vertica,因为它会使用 su -
命令调用管理工具来启动数据库。此问题最早在 Debian 系统中发现,但在其他 Linux 发行版中可能会导致配置缺失。有关更多详细信息,请参见 pam_limits 手册页。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要手动配置此设置,请将以下行附加到 /etc/pam.d/su
文件:
session required pam_limits.so
有关更多详细信息,请参阅 pam_limits 手册页:man pam_limits
。
3.4.7 - pid_max 设置
本主题说明如何将 pid_max
更改为支持的值。pid_max
的值应该是
pid_max = num-user-proc + 2**15 = num-user-proc + 32768
其中,num-user-proc 是以兆字节为单位的内存大小。
pid_max
的最小值是 524288。
如果您的 pid_max
值太低,安装程序会报告此问题并指示最小值。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要更改 pid_max
值:
# sysctl -w kernel.pid_max=524288
3.4.8 - 用户地址空间限制
本主题详细说明如何修改 dbadmin 用户的 Linux 地址空间限制,使其符合 Vertica 要求。地址空间设置可控制每个用户的最大线程数和进程数。如果此设置不符合要求,则安装程序会以标识符报告此问题。S0090。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
不得通过用户限制来减小可供 dbadmin 用户使用的地址空间,而必须将其设为无限制 (unlimited)。
所有系统
要手动设置地址空间限制:
-
以 dbadmin 用户身份运行
ulimit -v
以确定当前限制。 -
如果该限制不是无限制 (unlimited),则在
/etc/security/limits.conf
中添加以下行。将 dbadmin 替换为数据库管理员用户
dbadmin - as unlimited
3.4.9 - 用户文件大小限制
本主题详细说明如何修改系统中的文件大小限制,以使其符合 Vertica 要求。安装程序将以标识符S0100 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
不得通过用户限制来减小 dbadmin 用户的文件大小限制,而必须将其设为无限制 (unlimited)。
所有系统
要手动设置文件大小限制:
-
以 dbadmin 用户身份运行
ulimit -f
以确定当前限制。 -
如果该限制不是无限制 (unlimited),则在
/etc/security/limits.conf
中编辑/添加以下行。将 dbadmin 替换为数据库管理员用户。
dbadmin - fsize unlimited
3.4.10 - 用户进程限制
本主题详细说明如何更改用户进程限制,使其符合 Vertica 要求。安装程序会以标识符:S0110 报告不支持的调度程序问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
用户进程限制必须足够高,以允许 Vertica 打开大量线程。建议的限制是以 MB 为单位的 RAM 量,并且必须不小于 1024。
所有系统
要手动设置用户进程限制:
-
以 dbadmin 用户身份运行
ulimit -u
以确定当前限制。 -
如果该限制不是服务器上以 MB 为单位的内存量,则在
/etc/security/limits.conf
中编辑/添加以下行。将 4096 替换为服务器上以 MB 为单位的系统内存量。
dbadmin - nproc 4096
3.4.11 - 最大内存映射配置
本主题详细说明如何修改系统中的进程可以拥有的内存映射数量限制,使其符合 Vertica 要求。安装程序将以标识符S0130。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
Vertica 在执行处理时会使用大量内存,并且可能达到每个进程的内存映射默认限制。
建议的值至少为系统中以 KB 为单位的内存量 / 16,但不小于 65536。
所有系统
要手动设置内存映射限制:
-
运行
/sbin/sysctl vm.max_map_count
以确定当前限制。 -
如果该限制不是 65536 或以 KB 为单位的系统内存量 / 16(两者中较大者),则在
/etc/sysctl.conf
中编辑或添加以下行。将 65536 替换为系统值。# The following 1 line added by Vertica tools. 2014-03-07 13:20:31 vm.max_map_count=65536
-
运行
sysctl -p
立即在sysctl.conf
中应用更改。
注意
对于群集中的每个节点,需要重复这些步骤。3.5 - 常规操作系统配置 - 手动配置
以下常规操作系统设置必须手动完成。
3.5.1 - 保留操作系统设置
Vertica 要求手动配置多个常规操作系统设置。您应该在 /etc/rc.local
脚本中配置其中一些设置,以防止它们在重新引导时恢复原有设置。该脚本包含系统每次启动时运行的脚本和命令。
重要
重新引导时,SUSE 系统使用/etc/init.d/after.local
文件而不是 /etc/rc.local
。
Vertica 使用 /etc/rc.local
中的设置来设置以下功能:
编辑 /etc/rc.local
-
以 root 用户身份打开
/etc/rc.local
:# vi /etc/rc.local
-
输入脚本或命令。例如,要根据 Vertica 要求配置透明大页,请输入以下内容:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
重要
在一些 Ubuntu/Debian 系统中,/etc/rc.local
中的最后一行必须为exit 0
。向/etc/rc.local
添加的所有内容都必须在此行之前。 -
保存更改,然后关闭
/etc/rc.local
。 -
如果使用 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
在重新引导时,启动过程中将会运行该命令。如果想要命令立即生效,也可以 root 用户身份手动运行该命令。
禁用优化系统服务
如果使用 Red Hat 7.0 或 CentOS 7.0 或更高版本,请确保优化系统服务在 Vertica 重新引导时不会启动。关闭优化会阻止对操作系统的监控以及基于此监控对操作系统进行的任何优化。优化还可以静默启用 THP,这可能会导致其他方面(例如预读)出现问题。
以 sudo 或 root 用户身份运行以下命令:
$ chkconfig tuned off
3.5.2 - SUSE 控制组配置
在 SuSE 12 上,安装程序检查 Vertica 可在以下各项下运行的控制组 (cgroup) 的 cgroup 设置:
-
verticad
-
vertica_agent
-
sshd
安装程序验证 pid.max
资源对于由 Vertica 创建的所有线程是否足够大。我们检查以下各项的内容:
-
/sys/fs/cgroup/pids/system.slice/verticad.service/pids.max
-
/sys/fs/cgroup/pids/system.slice/vertica_agent.service/pids.max
-
/sys/fs/cgroup/pids/system.slice/sshd.service/pids.max
如果这些文件存在并且它们未能包含值 max
,则安装停止并且安装程序返回失败消息(代码 S0340)。
如果这些文件不存在,会在 systemd
运行 verticad
和 vertica_agent
启动脚本时自动创建这些文件。但是,这些文件的默认值是由该站点的 cgroup 配置过程管理的。Vertica 不会更改默认值。
安装前配置
在安装 Vertica 之前,请按如下方式配置您的系统:
# Create the following directories:
sudo mkdir /sys/fs/cgroup/pids/system.slice/verticad.service/
sudo mkdir /sys/fs/cgroup/pids/system.slice/vertica_agent.service/
# sshd service dir should already exist, so don't need to create it
# Set pids.max values:
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/verticad.service/pids.max'
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/vertica_agent.service/pids.max'
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/sshd.service/pids.max'
在重新启动后保留配置
安装后,您可以为 Vertica 数据库的后续重新启动配置控制组。您可以编辑配置文件 /etc/init.d/after.local
并添加前面显示的命令来完成此操作。
注意
因为after.local
是以 root 用户身份执行的,所以可以省略 sudo
命令。
3.5.3 - 计划作业所需的 Cron
Admintools 使用 Linux cron
包来计划可定期滚动保存数据库日志的作业。如果不安装此包,永远不会滚动保存数据库日志。如果缺少滚动保存功能,可能会导致大量消耗日志存储空间。在忙碌的群集中,Vertica 每天都可能产生数百 GB 的日志。
cron
默认安装在大多数 Linux 发行版上,但在某些 SUSE 12 系统上可能不存在。
要安装 cron
,请运行以下命令:
$ sudo zypper install cron
3.5.4 - 磁盘预读
本主题详细说明如何将磁盘预读更改为支持的值。Vertica 要求将磁盘预读设置为不小于 2048 的值。安装程序将以标识符S0020 报告不支持的调度程序问题。
注意
-
这些命令必须使用 root 权限执行,并且假定 blockdev 程序位于
/sbin
中。 -
Blockdev 程序在整体设备而不是在单独的分区上运行。在同一设备上不能将预读值设为不同的设置。如果您对一个分区运行 blockdev(例如:/dev/sda1),那么该设置仍将应用于整个 /dev/sda 设备。例如,运行
/sbin/blockdev \--setra 2048 /dev/sda1
还会使 /dev/sda2 到 /dev/sdaN 均使用预读值 2048。
基于 RedHat/CentOS 和 SuSE 的系统
对于 Vertica 系统中的每个驱动器,Vertica 建议在大多数部署中将预读值设为不小于 2048。该命令会立即更改指定磁盘的预读值。第二行将该命令添加到 /etc/rc.local
,使系统在每次启动时应用该设置。请注意,一些部署可能要求更高的值,在支持人员的指导下,可以将该设置设为高达 8192。
注意
对于不支持/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SUSE 使用 /etc/init.d/after.local
。以下示例将驱动器 sda 的预读值设为 2048。
$ /sbin/blockdev --setra 2048 /dev/sda
$ echo '/sbin/blockdev --setra 2048 /dev/sda' >> /etc/rc.local
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
Ubuntu 和 debian 系统
对于 Vertica 系统中的每个驱动器,请将预读值设为 2048。在 shell 中运行一次该命令,然后将其添加到 /etc/rc.local
,使系统在每次启动时应用该设置。请注意,在一些 Ubuntu 系统中,rc.local 中的最后一行必须为“exit 0
”。因此,您必须手动将以下行添加到 etc/rc.local
中的最后一行 exit 0
之前。
注意
对于不支持/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。/sbin/blockdev --setra 2048 /dev/sda
3.5.5 - I/O 计划
本主题详细说明如何将 I/O 计划更改为支持的调度程序。Vertica 要求将“I/O 计划 (I/O Scheduling)”设置为
deadline
或
noop
。安装程序会检查系统正在使用什么调度程序,从而以标识符 S0150 报告不支持的调度程序问题。如果安装程序未能检测到使用的调度程序类型(如果系统使用的是 RAID 阵列通常会这样),则会以标识符 S0151 报告此问题。
如果系统使用的不是 RAID 阵列,则完成以下步骤,以便将系统更改为支持的 I/O 调度程序。如果使用的是 RAID 阵列,则查询 RAID 供应商文档,了解能够为您的硬件提供最佳性能的调度程序。
配置 I/O 调度程序
Linux 内核可使用多种不同的 I/O 调度程序来设置磁盘输入和输出的优先级。大多数 Linux 发行版默认使用完全公平队列 (CFQ) 方案,该方案为输入和输出请求设定同等优先级。此调度程序在运行需要同等 I/O 资源访问权的多个任务的系统上非常高效。但在包含编录和数据目录的 Vertica 驱动器上使用时,可能会产生瓶颈,因为它为写入请求提供了与读取请求同等的优先级,而且其每进程 I/O 队列可能会使请求数量多于其他进程的进程处于不利地位。
对于包含编录和数据目录的驱动器,配置主机使用 Deadline 或 NOOP I/O 调度程序,而不是 CFQ 调度程序:
-
Deadline 调度程序为读取请求提供高于写入请求的优先级。它还对所有请求施加截止期限。在达到截止期限后,这类请求将获得高于其他所有请求的优先级。此计划方法有助于防止进程出现 I/O 访问短缺的情况。Deadline 调度程序最适合在物理介质驱动器(使用旋转盘片的磁盘)上使用,因为它会尝试将磁盘上相邻扇区的访问请求进行分组,从而缩短驱动器花在寻道上的时间。
-
NOOP 调度程序使用简单的 FIFO 方法,将所有输入和输出请求置于一个队列中。此调度程序最适合在固态硬盘 (SSD) 上使用。由于 SSD 没有物理读取磁头,因此在访问非相邻扇区时不存在性能损失。
对于包含编录和数据目录的 Vertica 驱动器,如果不使用以上调度程序中的一种,可能导致数据库性能下降。系统中的其他驱动器(例如包含交换空间、日志文件或 Linux 系统文件的驱动器)仍可以使用默认的 CFQ 调度程序(尽管对于 SSD 而言应该始终使用 NOOP 调度程序)。
有两种方法可以设置磁盘设备所用的调度程序:
-
将调度程序的名称写入
/sys
目录中的文件。--或--
-
使用内核启动参数。
配置 I/O 调度程序 - 通过 /sys 目录更改调度程序
可以使用 /sys
目录下面的虚拟文件来查看和更改 Linux 用于单个驱动器的 I/O 请求的调度程序。控制数据块设备所用的调度程序的文件名称为:
/sys/block/deviceName/queue/scheduler
其中,deviceName 是磁盘设备的名称,例如 sda
或 cciss\\!c0d1
(Micro Focus RAID 阵列上的第一个磁盘)。通过查看此文件的内容可以显示调度程序的所有可能设置。当前选择的调度程序用方括号括起来:
# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
要更改调度程序,请将您希望设备使用的调度程序的名称写入到其调度程序文件中。必须具有 root 用户权限才能写入此文件。例如,要设置 sda 驱动器使用 Deadline 调度程序,请以 root 用户身份运行以下命令:
# echo deadline > /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
更改调度程序会立即影响设备的 I/O 请求。Linux 内核开始对所有驱动器的输入和输出请求使用新的调度程序。
注意
尽管测试表明在 Vertica 正在运行时更改调度程序设置不会导致问题,但 Vertica 建议关闭。在更改 I/O 计划或对系统配置进行任何其他更改之前,请考虑关闭所有正在运行的数据库。通过 /sys
目录对 I/O 调度程序做出的更改仅持续到系统重新引导为止,因此需要在启动脚本中添加用于更改 I/O 调度程序的命令(例如存储在 /etc/init.d
中的脚本,或通过 /etc/rc.local
中的命令)。此外还需要为系统中的想要更改其调度程序的每个驱动器使用单独的命令。
例如,使配置立即生效并将其添加到 rc.local,以便在后续重新引导时使用该配置。
注意
对于不支持/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。echo deadline > /sys/block/sda/queue/scheduler
echo 'echo deadline > /sys/block/sda/queue/scheduler' >> /etc/rc.local
注意
在一些 Ubuntu/Debian 系统中,rc.local 中的最后一行必须为“exit 0
”。因此,您必须手动将以下行添加到 etc/rc.local
中的最后一行 exit 0
之前。
如果系统包含混合的固态硬盘和物理介质驱动器,或者包含大量未存储 Vertica 编录和数据目录的驱动器,则可以优先使用这种方法来设置 I/O 调度程序,而不是使用启动参数。
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
配置 I/O 调度程序 - 使用启动参数更改调度程序
使用 elevator
内核启动参数来更改系统中所有磁盘所用的默认调度程序。如果主机中的大多数或所有驱动器都是同一类型(物理介质或 SSD)并且将会包含编录或数据文件,则这是可使用的最佳方法。此外还可以使用启动参数来更改系统中大多数驱动器所需的调度程序默认设置,然后使用 /sys
文件来将单独的驱动器更改为其他 I/O 调度程序。elevator 启动参数的格式为:
elevator=schedulerName
其中,schedulerName 是 deadline
、noop
或 cfq
。可使用引导装载程序(在最近的 Linux 发行版中为 grub 或 grub2)设置驱动参数。有关如何添加内核启动参数的详细信息,请参见相应发行版的文档。
3.5.6 - 启用或禁用透明大页
可以修改透明大页以满足 Vertica 配置要求:
-
对于 Red Hat 7/CentOS 7 和 Amazon Linux 2.0,必须启用透明大页。安装程序将以标识符S0312 报告不支持的调度程序问题。
-
对于 Red Hat 8/CentOS 8 和 SUSE 15.1,Vertica 按工作负载提供建议设置以优化系统性能。
-
对于其他所有系统,必须禁用透明大页或将其设为
madvise
。安装程序将以标识符S0310 报告不支持的调度程序问题。
对 Red Hat 8/CentOS 8 和 SUSE 15.1 按工作负载建议设置
Vertica 按工作负载建议透明大页设置以优化性能。下表列出了针对主要运行并发查询(例如短时间运行的仪表板查询)或顺序 SELECT 或 load (COPY) 查询的系统提出的建议:
有关按工作负载优化系统性能的其他设置,请参阅启用或禁用 defrag。
在 Red Hat 7/8、CentOS 7/8、SUSE 15.1 和 Amazon Linux 2.0 上启用透明大页
确定是否启用了透明大页。为此,请运行以下命令。
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
括号内返回的设置是当前设置。
对于不支持 /etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。
可通过编辑 /etc/rc.local
并添加以下脚本来启用透明大页:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo always > /sys/kernel/mm/transparent_hugepage/enabled
fi
必须重新引导系统以使设置生效,或以 root 用户的身份运行以下 echo 行以继续安装而不重新引导:
# echo always > /sys/kernel/mm/transparent_hugepage/enabled
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
在其他系统上禁用透明大页
注意
SUSE 在最初的 11.0 版本中未提供透明大页支持。但后续的 SUSE 服务包中包含了透明大页支持。为确定是否已启用透明大页,请运行以下命令。
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
括号内返回的设置是当前设置。根据平台操作系统,可能不会显示 madvise
设置。
可采用两种方法之一禁用透明大页:
-
编辑引导装载程序(例如
/etc/grub.conf
)。通常情况下,可以将以下内容添加到内核行的末尾。但在编辑引导装载程序配置之前,请查阅系统文档。transparent_hugepage=never
-
编辑
/etc/rc.local
(在支持 rc.local 的系统上)并添加以下脚本。if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi
对于不支持 /etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。
不论选择哪种方法,都必须重新引导系统以使设置生效,或运行以下两个 echo 行以继续安装而不重新引导:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
3.5.7 - 检查 swappiness
swappiness 内核参数定义内核将 RAM 内容复制到交换空间的数量和频率。Vertica 建议使用值 0。安装程序以标识符 S0112 报告任何 swappiness 问题。
您可以通过运行以下命令来检查 swappiness 值:
$ cat /proc/sys/vm/swappiness
要设置 swappiness 值,请在 /etc/sysctl.conf
中添加或更新如下行:
vm.swappiness = 1
这样还可以确保该值在重新启动后仍然存在。
如有必要,可通过在运行时以 root 身份登录并运行以下命令来更改 swappiness 值:
$ echo 1 > /proc/sys/vm/swappiness
3.5.8 - 启用网络时间协议 (NTP)
重要
如果在数据库运行时更改主机 NTP 设置,可能会导致数据损坏和性能问题。在更改 NPT 设置之前,请先停止数据库。如果无法停止数据库,请停止每台主机上的 Vertica 进程,然后更改 NTP 设置,一次一台主机。
有关详细信息,请参阅在主机上停止 Vertica。
必须在群集中的所有主机上运行网络时间协议 (NTP) 守护程序,才能使其时钟保持同步状态。Spread 守护程序依赖于所有节点将其时钟进行同步,以用于定时用途。如果节点没有运行 NTP,则安装可能失败,并且显示 spread 配置错误或其他错误。
注意
不同的 Linux 发行版以不同的方法引用 NTP 守护程序。例如,SUSE 和 Debian/Ubuntu 称其为ntp
,而 CentOS 和 Red Hat 称其为 ntpd
。如果以下命令产生错误,请尝试使用其他 NTP 守护程序引用名称。
验证 NTP 是否正在运行
为验证主机是否已配置为在启动时运行 NTP 守护程序,请输入以下命令:
$ chkconfig --list ntpd
Debian 和 Ubuntu 不支持 chkconfig
,但它们提供了可选的软件包。可使用命令 sudo apt-get install sysv-rc-conf
安装此软件包。为验证是否已使用 sysv-rc-conf
实用工具将主机配置为在启动时运行 NTP 守护程序,请输入以下命令:
$ sysv-rc-conf --list ntpd
chkconfig
命令可能生成类似于 ntpd: unknown service
的错误。如果出现此错误,请验证 Linux 发行版将 NTP 守护程序称为 ntpd
,而不是 ntp
。否则,在配置之前,需要安装 NTP 守护程序软件包。有关如何查找和安装软件包的说明,请查阅 Linux 文档。
如果已安装 NTP 守护程序,则应显示与以下类似的输出:
ntp 0:off 1:off 2:on 3:on 4:off 5:on 6:off
该输出指示了运行守护程序的运行级别。验证系统的当前运行级别(通常为 3 或 5)已将 NTP 守护程序设为 on
。如果当前运行级别未知,可使用 runlevel
命令查明运行级别:
$ runlevel
N 3
为 Red Hat 6/CentOS 6 和 SLES 配置 NTP
如果系统基于 Red Hat 6/CentOS 6 或 SUSE Linux Enterprise Server,请使用 service
和 chkconfig
实用程序启动 NTP 并将其设为在系统启动时启动。
$ /sbin/service ntpd restart
$ /sbin/chkconfig ntpd on
-
Red Hat 6/CentOS 6 —NTP 使用位于 ntp.org 的默认时间服务器。可通过编辑
/etc/ntpd.conf
来更改默认的 NTP 服务器。 -
SLES —默认情况下未配置任何时间服务器。在安装完成并添加时间服务器后,必须编辑
/etc/ntpd.conf
。
为 ubuntu 和 debian 配置 NTP
默认情况下,一些 Ubuntu 和 Debian 系统上没有安装 NTP 守护程序。首先安装 NTP,然后启动 NTP 进程。如下所示,可通过编辑 /etc/ntpd.conf
来更改默认的 NTP 服务器:
$ sudo apt-get install ntp
$ sudo /etc/init.d/ntp reload
验证 NTP 是否正在正常运行
要验证网络时间协议守护程序 (NTPD) 是否正确运行,请在群集中的所有节点上发出以下命令。
对于 Red Hat 6/CentOS 6 和 SLES:
$ /usr/sbin/ntpq -c rv | grep stratum
对于 Ubuntu 和 Debian:
$ ntpq -c rv | grep stratum
层级别 16 指示 NTP 未正确同步。
如果检测到层级别 16,则等待 15 分钟,然后再次发出该命令。要使 NTP 服务器稳定下来,可能需要这么长时间。
如果 NTP 仍旧检测到层级别 16,则验证在群集与您尝试同步的远程计算机之间的所有防火墙上,NTP 端口(UDP 端口 123)是否均处于开放状态。
与 NTP 相关的 Red hat 文档
前述链接是截至 Vertica 文档上次发布时的最新链接,并且在不同版本之间可能有所变化。
3.5.9 - 为 Red Hat 7/CentOS 7 系统启用 chrony 或 ntpd
在安装 Vertica 之前,必须在系统上启用以下一项以进行时钟同步:
-
chrony
-
NTPD
必须在安装前启用并激活网络时间协议 (NTP)。否则,安装程序会以标识符 S0030 报告此问题。
有关安装和使用 chrony 的信息,请参阅以下信息。有关 NTPD 的信息,请参阅启用网络时间协议 (NTP)。有关 chrony 的详细信息,请参阅 Red Hat 文档中的使用 chrony。
安装 chrony
chrony 套件包含:
-
chronyd - 用于时钟同步的守护程序。
-
chronyc - 用于配置 chronyd 的命令行实用程序。
一些版本的 Red Hat/CentOS 7 上默认安装了 chrony。但如果系统中尚未安装 chrony,则必须下载该软件包。要下载 chrony,请以 sudo 或 root 用户身份运行以下命令:
# yum install chrony
验证 chrony 是否正在运行
要查看 chronyd 守护程序的状态,请运行以下命令:
$ systemctl status chronyd
如果 chrony 正在运行,则会显示与以下类似的输出:
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
Active: active (running) since Mon 2015-07-06 16:29:54 EDT; 15s ago
Main PID: 2530 (chronyd)
CGroup: /system.slice/chronyd.service
ââ2530 /usr/sbin/chronyd -u chrony
如果 chrony 未在运行,则以 sudo 或 root 用户身份执行以下命令。此命令还会使 chrony 在系统启动时运行:
# systemctl enable chronyd
验证 chrony 是否正在正常运行
要验证 chrony 守护程序是否正常运行,请在群集中的所有节点上发出以下命令:
$ chronyc tracking
将显示与以下类似的输出:
Reference ID : 198.247.63.98 (time01.website.org)
Stratum : 3
Ref time (UTC) : Thu Jul 9 14:58:01 2015
System time : 0.000035685 seconds slow of NTP time
Last offset : -0.000151098 seconds
RMS offset : 0.000279871 seconds
Frequency : 2.085 ppm slow
Residual freq : -0.013 ppm
Skew : 0.185 ppm
Root delay : 0.042370 seconds
Root dispersion : 0.022658 seconds
Update interval : 1031.0 seconds
Leap status : Normal
层级别 16 指示 chrony 未正确同步。如果 chrony 仍旧检测到层级别 16,请验证 UDP 端口 323 处于开放状态。在群集与尝试同步的远程计算机之间的所有防火墙上,此端口必须保持开放状态。
3.5.10 - SELinux 配置
除非 SELinux 在许可模式下运行,否则 Vertica 不支持 SELinux。如果安装程序检测到已安装 SELinux 并且无法确定模式,则会以标识符 S0080 报告此问题。如果可以确定模式,并且该模式不是许可模式,则会以标识符 S0081 报告此问题。
Red Hat 和 SUSE 系统
可以禁用 SELinux 或将其更改为使用许可模式。
要禁用 SELinux:
-
编辑
/etc/selinux/config
并将 SELinux 设置更改为禁用 (SELINUX=disabled
)。这会在引导时禁用 SELinux。 -
以 root/sudo 用户身份,键入
setenforce 0
以立即禁用 SELinux。
要将 SELinux 更改为使用许可模式:
-
编辑
/etc/selinux/config
,并将 SELINUX 的设置更改为许可模式 (SELINUX=Permissive
)。 -
以 root/sudo 用户身份,键入
setenforce Permissive
以立即切换至许可模式。
Ubuntu 和 debian 系统
可以禁用 SELinux 或将其更改为使用许可模式。
要禁用 SELinux:
-
编辑
/selinux/config
并将 SELinux 设置更改为禁用 (SELINUX=disabled
)。这会在引导时禁用 SELinux。 -
以 root/sudo 用户身份,键入
setenforce 0
以立即禁用 SELinux。
要将 SELinux 更改为使用许可模式:
-
编辑
/selinux/config
,并将 SELinux 的设置更改为许可模式 (SELINUX=Permissive
)。 -
以 root/sudo 用户身份,键入
setenforce Permissive
以立即切换至许可模式。
3.5.11 - CPU 频率调整
本主题详细说明 Vertica 所支持的各种 CPU 频率调整方法。一般而言,如果不需要 CPU 频率调整,则将其禁用以免影响系统性能。
重要
当禁用频率调整时,系统使用的能源量可能大幅增加。在将 cpufreq 调控器设为 performance
时,安装程序将允许启用 CPU 频率调整。如果将 CPU 调控器设为 ondemand,并且 ignore_nice_load
为 1 (true),则安装程序将会失败,并显示错误 S0140。如果将 CPU 调控器设置为 ondemand,并且 ignore_nice_load
为 0 (false),则安装程序将会发出警告,并显示标识符 S0141。
CPU 频率调整是一项硬件兼软件功能,可通过在系统负载较低时放慢处理器速度以及在系统负载增加时加快其运行速度,来帮助计算机节省能源。由于提高 CPU 频率以响应更高系统负载的情况并非即时操作,因此此功能可能会影响系统性能。始终在 Vertica 数据库主机上禁用此功能,以防止其对性能造成干扰。
在主机系统 BIOS 中禁用 CPU 调整。主机 BIOS 中可能有多项需要调整的设置,以便完全禁用 CPU 频率调整。有关进入系统 BIOS 和禁用 CPU 频率调整的详细信息,请查阅主机硬件文档。
如果无法通过系统 BIOS 禁用 CPU 调整,则可通过 Linux 内核禁用调整功能或将 CPU 频率调控器设为始终全速运行 CPU,来限制 CPU 调整带来的影响。
当心
此方法不太可靠,因为一些硬件平台可能会忽略内核设置。有关详细信息,请参阅《Vertica 硬件指南》。用于禁用频率调整的方法取决于 Linux 内核当前使用的 CPU 调整方法。有关在内核中禁用调整或更改 CPU 调控器的说明,请参见 Linux 发行版文档。
3.5.12 - 启用或禁用 defrag
可以根据 Vertica 配置要求修改 defrag 实用程序,也可以根据工作负载优化系统性能。
在所有 Red Hat/CentOS 系统上,必须禁用 defrag 实用程序才能满足 Vertica 配置要求。
注意
在 Red Hat 6/CentOS 6 系统上禁用 defrag 的步骤与在 Red Hat 7/CentOS 7 和 Red Hat 8/CentOS 8 上禁用 defrag 的步骤有所不同。对于 SUSE 15.1,Vertica 建议启用 defrag 以获得最优性能。
对 Red Hat 8/CentOS 8 和 SUSE 15.1 按工作负载建议设置
Vertica 按工作负载建议 defrag 设置以优化性能。下表列出了针对主要运行并发查询(例如短时间运行的仪表板查询)或顺序 SELECT 或 load (COPY) 查询的系统提出的建议:
有关按工作负载优化系统性能的其他设置,请参阅启用或禁用透明大页。
在 Red Hat 6/CentOS 6 系统上禁用 defrag
-
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/redhat_transparent_hugepage/defrag [always] madvise never
括号内返回的设置是当前设置。如果未使用
madvise
或never
作为 defrag 设置,则必须禁用 defrag。 -
编辑
/etc/rc.local,
并添加以下脚本:if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
在 Red Hat 7/CentOS 7、Red Hat 8/CentOS 8 和 SUSE 15.1 上禁用 defrag
-
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never
括号内返回的设置是当前设置。如果未使用
madvise
或never
作为 defrag 设置,则必须禁用 defrag。 -
编辑
/etc/rc.local,
并添加以下脚本:if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
-
如果使用的是 Red Hat 7.0/CentOS 7.0 或 Red Hat 8.0/CentOS 8.0,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
在 Red Hat 7/8、CentOS 7/8 和 SUSE 15.1 上禁用 defrag
-
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/transparent_hugepage/defrag [never] madvise never
括号内返回的设置是当前设置。如果未使用
madvise
或always
作为 defrag 设置,则必须启用 defrag。 -
编辑
/etc/rc.local,
并添加以下脚本:if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo always > /sys/kernel/mm/transparent_hugepage/defrag fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo always > /sys/kernel/mm/transparent_hugepage/defrag
-
如果使用的是 Red Hat 7.0/CentOS 7.0 或 Red Hat 8.0/CentOS 8.0,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
3.5.13 - 支持工具
Vertica 建议安装下列工具,以便在出现任何问题时,支持人员可以协助诊断系统问题:
-
pstack(或 gstack)软件包。当未安装时,将标识为问题 S0040。
- 在 Red Hat 7 和 CentOS 7 系统中,pstack 软件包将作为 gdb 软件包的一部分安装。
-
mcelog 软件包。当未安装时,将标识为问题 S0041。
-
sysstat 软件包。当未安装时,将标识为问题 S0045。
Red hat 6 和 CentOS 6 系统
要在 Red Hat 6 和 CentOS 6 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
yum install pstack
yum install mcelog
yum install sysstat
Red hat 7 和 CentOS 7 系统
要在 Red Hat 7/CentOS 7 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
yum install gdb
yum install mcelog
yum install sysstat
Ubuntu 和 debian 系统
要在 Ubuntu 和 Debian 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
apt-get install pstack
apt-get install mcelog
apt-get install sysstat
重要
对于 Ubuntu 18.04 及更高版本,运行apt-get install rasdaemon
而不是 apt-get install mcelog
。
SuSE 系统
要在 SuSE 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令。
zypper install sysstat
zypper install mcelog
pstack/gstack 没有单独的 SuSE 软件包。但 gdb 软件包中包含 gstack,因此可选择安装 gdb 或从源代码编译 pstack/gstack。要安装 gdb 软件包:
zypper install gdb
3.6 - 系统用户配置
以下任务与 Vertica 所需的系统用户的配置有关。
3.6.1 - 系统用户要求
Vertica 对运行和管理 Vertica 的系统用户有特定的要求。如果在安装期间指定某个用户,但该用户不存在,则安装程序会以标识符 S0200 报告此问题。
系统用户要求详细信息
Vertica 要求系统用户拥有数据库文件所有权并运行数据库进程和管理脚本。默认情况下,安装脚本会自动使用用户名 dbadmin 配置并创建此用户。有关安装脚本创建的默认用户的详细信息,请参阅关于 Vertica 创建的 Linux 用户及其权限。如果决定手动创建自己的系统用户,则必须在运行安装脚本之前 创建该用户。如果手动创建该用户:
注意
如果没有使用默认值,则dbadmin
和 verticadba
的实例为所选名称的占位符。
-
该用户必须在所有节点上都具有相同的用户名和密码
-
该用户必须使用 BASH shell 作为用户的默认 shell。如果不是,则安装程序会以标识符 [S0240] 报告此问题。
-
该用户必须在 verticadba 组中(例如:
usermod -a -G verticadba userNameHere
)。否则,安装程序会以标识符 [S0220] 报告此问题。注意
必须在所有节点上创建 verticadba 组。否则,安装程序会以标识符 [S0210] 报告此问题。 -
用户的登录组必须为 verticadba 或与该用户具有相同名称的组(例如 dbadmin 的主组为 dbadmin)。可使用 id 命令检查用户的组。例如:
id dbadmin
。“gid”组是用户的主组。如果未正确配置此设置,则安装程序会以标识符 [S0230] 报告此问题。Vertica 建议使用 verticadba 作为用户的主登录组。例如:usermod -g verticadba userNameHere
。如果用户的主组不是建议的 verticadba,则安装程序会以提示 [S0231] 报告此问题。 -
该用户必须具有主目录。如果不是,则安装程序会以标识符 [S0260] 报告此问题。
-
该用户的主目录必须归该用户所有。如果不是,则安装程序会以标识符 [S0270] 报告此问题。
-
系统必须知晓该用户的主目录(可使用 usermod 命令设置此目录:
usermod -m -d /path/to/new/home/dir userNameHere
)。如果未正确配置此设置,则安装程序会以 [S0250] 报告此问题。 -
该用户的主目录必须归 dbadmin 的主组所有(如果有必要,可使用
chown
和chgrp
命令)。如果未正确配置此设置,则安装程序会以标识符 [S0280] 报告此问题。 -
该用户的主目录应该具有安全的权限。具体而言,不能供任何人或组进行写入。理想情况下,在使用 ls 查看时,这些权限应该为“
---
”(无权限)或“r-x
”(读取和执行)。如果未按照建议配置此设置,则安装程序会以提示 [S0290] 报告此问题。
3.6.2 - TZ 环境变量
本主题详细说明如何设置或更改 TZ 环境变量并更新 tzdata 包。如果未设置此变量,则安装程序会以标识符 S0305 报告此问题。
在安装 Vertica 之前,更新系统的 tzdata 包,并通过指定 TZ
环境变量为数据库管理员帐户设置默认时区。如果正在通过 install_vertica
脚本创建数据库管理员,则在安装 Vertica 之后设置 TZ
变量。
更新 tzdata 包
tzdata 包是在大多数 Linux 系统中预先安装的公共域时区数据库。系统会针对全球时区变化定期更新 Tzdata 包。Micro Focus 建议在安装或更新 Vertica 之前更新到最新的 tzdata 包。
使用以下命令更新 tzdata 包:
-
基于 RedHat 的系统:
yum update tzdata
-
Debian 和 Ubuntu 系统:
apt-get install tzdata
设置默认时区
当客户端收到 SQL 查询的结果集时,如果有必要,所有行将包含调整为相同时区的数据。除非客户端使用 SQL SET TIME ZONE 命令(如《SQL 参考手册》中所述)明确覆盖相应设置,否则该时区将是启动程序节点的默认时区。任何节点的默认时区均由 TZ
环境变量控制。如果未定义 TZ
,则使用操作系统时区。
重要
在群集中的所有节点上,TZ
变量都必须设置为相同的值。如果操作系统时区未设置为数据库的目标时区,则确保已在所有群集节点上将 Linux 环境变量 TZ
设为目标值。
如果未设置 TZ 变量,安装程序将会返回警告。如果操作系统时区符合数据库要求,则使用操作系统时区,并且可以安全地忽略警告。
在主机上设置时区
重要
如果在启动
管理工具之前在命令行中显式设置 TZ
环境变量,则当前设置将不会生效。管理工具使用 SSH 在其他节点上启动副本,因此每次使用 SSH 时,都会重置启动命令的 TZ
变量。必须在群集所有节点上的 .profile
或 .bashrc
文件中设置 TZ
才能正常生效。
可采用多种不同的方法来设置时区,具体取决于 Linux 发行版或系统管理员的首选项。
-
要在 Red Hat 和 SUSE Linux 系统上设置系统时区,请编辑:
/etc/sysconfig/clock
-
要设置
TZ
变量,请编辑/etc/profile
、/home/dbadmin/.bashrc
或/home/dbadmin/.bash_profile
,然后添加以下行(例如,对于美国东部时区):export TZ="America/New_York"
有关 Vertica 识别哪些时区名称的详细信息,请参阅附录:在 Vertica 中使用时区。
3.6.3 - LANG 环境变量设置
本主题详细说明如何设置或更改 LANG 环境变量。LANG 环境变量用于控制主机的区域设置。如果未设置此变量,则安装程序会以标识符 S0300 报告此问题。如果此变量未设置为有效值,则安装程序会以标识符 S0301 报告此问题。
设置主机区域设置
每个主机都具有对应 Linux 环境变量 LANG
的系统设置。 LANG
在缺少 LC_ALL
和其他 LC_ 环境变量的情况下确定本机语言、本地习俗和编码字符集的区域设置类别。LANG
可由应用程序用来确定将哪种语言用于错误消息和说明、合并序列、日期格式等等。
要更改数据库管理员的 LANG
设置,请编辑所有群集主机上的 /etc/profile
、/dbadmin/.bashrc
或 /home/dbadmin/.bash_profile
,并设置环境变量;例如:
export LANG=en_US.UTF-8
LANG
设置用于控制 Vertica 中的以下各项:
-
操作系统级别的错误和警告,例如 COPY 操作期间的“找不到文件 (file not found)”。
-
一些格式化函数,例如 TO_CHAR 和 TO_NUMBER。另请参阅用于数字格式化的模板模式。
LANG
设置不控制以下项目:
-
Vertica 特定的错误和警告消息。这些消息目前始终为英语。
-
SQL 返回的发送到 Vertica 的结果的整理。相反,必须使用数据库参数来控制此设置。有关详细信息,请参阅为国际数据集实施区域设置部分。
注意
如果已设置LC_ALL
环境变量,它将取代 LANG
的设置。
3.6.4 - 软件包依赖项
要想成功安装 Vertica,在安装数据库平台之前,必须先在群集中的所有节点上安装三个软件包。
必需的软件包为:
-
openssh — 节点之间的 管理工具连接所需。
-
which — Vertica 操作系统集成和验证安装所需。
-
dialog — 与 Administration Tools 的交互性所需。
安装必需的软件包
安装必需的软件包所遵循的过程取决于在其上运行节点或群集的操作系统。有关安装软件包的详细信息,请参见相应操作系统的文档。
-
对于 CentOS/Red Hat 系统 —通常情况下,使用 yum 实用程序来管理 Red Hat 和 CentOS 系统上的软件包。
运行以下 yum 命令安装各个软件包依赖项。yum 实用工具将指导完成安装过程:
# yum install openssh # yum install which # yum install dialog
-
对于 Debian/Ubuntu 系统 —通常情况下,使用 apt-get 实用程序来管理 Debian 和 Ubuntu 系统上的软件包。
运行以下 apt-get 命令安装各个软件包依赖项。apt-get 实用工具将指导完成安装过程:
# apt-get install openssh # apt-get install which # apt-get install dialog
4 - 在安装期间指定磁盘存储位置
您可以在以下情况下指定磁盘存储位置:
-
安装 Vertica 时(见下文)。
- 安装管理控制台
在安装时指定磁盘存储位置
安装 Vertica 时,install_vertica 脚本中的 --data-dir
参数允许您指定一个包含数据库数据和编录文件的目录。该脚本默认为数据库管理员的默认主目录
/home/dbadmin
。
重要
将此默认目录替换为具有足够空间来容纳数据和编录文件的目录。要求
-
数据和编录目录必须存在于群集中的每个节点上。
-
每个节点上的目录必须归数据库管理员所有。
-
编录和数据路径名称只能包含字母数字字符,不能有前置空格字符。如果不能遵守这些限制条件,将导致数据库创建失败。
-
如果其他数据库正在使用目录,Vertica 将拒绝覆盖目录。因此,如果您创建了一个用于评估的数据库,然后删除了该数据库,而您想要再使用该数据库名称,请确保您已彻底清理先前使用的磁盘存储位置。有关详细信息,请参阅管理存储位置。