KWDB 数据库可高效处理海量且连续的数据流,但对于运维人员来说,根据业务需求进行硬件规划是确保系统稳定、高效运行的基础。本文将深入探讨 KWDB 集群规划,帮助运维人员从容应对数据增长和性能挑战,我们将从以下几个方面进行介绍:
- 拓扑结构:介绍 KWDB 数据库在延迟、弹性方面的考量。
- 硬件资源:介绍 KWDB 数据库在业务规模和性能角度,对 CPU、内存、存储和网络要求。
- 安全性:从安全方面,介绍 KWDB 集群规划时应该注意的事项。
拓扑结构
在计划部署时,应选择最能满足延迟和弹性要求的拓扑模式:
- 为了提高可用性和降低数据丢失的风险,建议在一台服务器上只运行一个节点。由于 KWDB 跨节点复制,如果一台计算机运行多个节点,当计算机发生故障会增加数据丢失的可能性。
- KWDB 集群模式下的数据副本数为3,为确保集群的稳定运行,需要保证集群中正常运行的节点数大于集群的副本数。
- 为保证 KWDB 集群正常运行,需要保证每个数据库节点都可以互相访问。
- KWDB 在面临节点故障时会自动进行数据迁移和补足,需要保证节点之间有足够的网络带宽。
综上,KWDB 建议每个节点都使用独立的服务器,在集群模式下至少有三个节点,各节点可以对等高速访问。
硬件资源
每个节点需要配备必要的 CPU、内存、网络和存储等资源。在部署集群前需要检查各个硬件设备。
下面列出了 KWDB 安装部署所需的硬件规格要求。在实际部署时,用户需要根据实际的业务规模和性能要求,进行硬件资源的规划。
CPU 和内存
单节点配置建议不低于4核8G。越高的 CPU 和内存意味着越好的数据读写、复杂工作负载、高并发和高性能场景表现。
同时,CPU 和内存应检查以下内容:
禁用 CPU 节能模式
在 X86 架构上,部分系统会模式使用 CPU 节能模式。为发挥最佳性能,需要配置为高性能模式来始终保持 CPU 在最高频率上工作。
检查系统 CPU 模式
cpupower frequency-info --policy
如果输出为The governor "powersave"则说明当前是节能模式,需要调整为性能模式 performance。
sudo nano /etc/systemd/system/cpupower.service
添加以下内容
[Unit]
Description=Set CPU performance governor
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/cpupower frequency-set --governor performance
ExecStartPost=/bin/sleep 1
ExecStartPost=/usr/bin/cpupower frequency-set --governor performance
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
启用服务
sudo systemctl daemon-reload
sudo systemctl enable cpupower.service
sudo systemctl start cpupower.service
使用 64K PAGE_SIZE 内核
在 ARM 架构上,因为其 TLB 较小,在高性能计算和数据库场景中,应当使用 page size 为 64K 的 Linux 内核,从而获得更好的性能。
getconf PAGE_SIZE
如果您的系统使用小于64K的内核,应进行内核切换,可以参考>>
Choosing between the arm64 and arm64+largemem installer options | Ubuntu
绑定 CPU
在部分国产 CPU 上,往往 Non-Uniform Memory Access (NUMA) 之间带宽是 CPU 的主要瓶颈,需要主动绑定 CPU 来发挥全部性能。
除此之外,如果 KWDB 和应用部署在同一个服务器上,为避免发生 CPU 争抢引发性能衰退,也需要进行绑定 CPU 来优化性能。
建议使用 numactl 来查看 NUMA 信息和绑定 CPU。numactl 是一个用于管理 NUMA 系统的工具。它可以用于查看 NUMA 配置,并将进程绑定到特定的 NUMA 节点或 CPU 上,从而优化性能。
- 查看 NUMA 节点的信息:
使用 numactl --hardware 或 lscpu 命令查看系统中的 NUMA 节点及其关联的 CPU 和内存信息:
numactl --hardware
或者:
lscpu
这将输出类似以下的信息:
available: 2 nodes (0-1) node 0 cpus: 0 1 2 3 4 5 6 7 node 0 size: 16384 MB node 0 free: 12000 MB node 1 cpus: 8 9 10 11 12 13 14 15 node 1 size: 16384 MB node 1 free: 12000 MB