裸机部署准备
硬件
说明
为了提高可用性,降低数据丢失的风险,建议在单台计算机上只运行一个节点。KaiwuDB 采用跨节点复制机制,如果在一台计算机上同时运行多个节点,当计算机发生故障时,更有可能丢失数据。
下表列出使用裸机安装包部署 KaiwuDB 所需的硬件规格要求。
项目 | 要求 |
---|---|
CPU 和内存 | - 单节点配置建议不低于 4 核 8G。 - 对于数据量大、复杂工作负载、高并发和高性能场景,建议配置更高的 CPU 和内存资源以确保系统的高效运行。 |
磁盘 | - 推荐使用 SSD 或者 NVMe 设备,尽量避免使用 NFS、CIFS、CEPH 等共享存储。 - 使用 HDD 硬盘部署单机版本时,避免设备数过多或每秒写入测点数过高,否则数据写入性能将显著下降;不建议使用 HDD 部署分布式集群版本。 - 磁盘至少能够实现 500 IOPS 和 30 MB/s 处理效率。 - KaiwuDB 系统自身启动不会占用过多磁盘容量(低于 1G)。实际所需磁盘大小主要取决于用户的业务量以及是否开启 KaiwuDB 压缩等可以减少原始数据磁盘占用的功能,更多详细信息,参见预估磁盘使用量。 |
文件系统 | 建议使用 ext4 文件系统。 |
操作系统
KaiwuDB 支持在以下服务器操作系统进行安装部署。
操作系统 | 版本 | 架构 |
---|---|---|
Anolis | 8.6 | ARM_64 |
8.6 | x86_64 | |
KylinOS | V10 SP3 2403 V10 SP3 2303 | ARM_64 |
V10 SP3 2403 V10 SP3 2303 | x86_64 | |
Ubuntu | V18.04 | x86_64 |
V20.04 | ARM_64 | |
V20.04 | x86_64 | |
V22.04 | ARM_64 | |
V22.04 | x86_64 | |
V24.04 | ARM_64 | |
V24.04 | x86_64 | |
UOS | 1060e | x86_64 |
1060e | ARM_64 |
说明
未提及的操作系统版本也许可以运行 KaiwuDB,但尚未得到 KaiwuDB 官方支持。
软件依赖
安装时,KaiwuDB 会对依赖进行检查。如果缺少依赖会退出安装并提示依赖缺失。如果目标机器不能联网,用户需要在能联网的机器上根据目标机器的操作系统下载好所有依赖文件,然后将依赖文件复制到目标机器上进行安装。
下表列出需要在目标机器安装的依赖。
依赖 | 版本 | 说明 |
---|---|---|
OpenSSL | v1.1.1+ | N/A |
libprotobuf | v3.6.1+ | Ubuntu 18.04 版本默认的 libprotobuf 版本低于所需版本,用户需要在部署前提前安装高版本的 libprotobuf 或者使用安装包内提供的高版本 libprotobuf 完成安装。具体操作说明,参见libprotobuf 安装。 |
GEOS | v3.3.8+ | 可选依赖 |
xz-libs | v5.2.0+ | N/A |
squashfs-tools | any | N/A |
libgcc | v7.3.0+ | N/A |
mount | any | N/A |
squashfuse | any | 可选依赖 |
端口
下表列出 KaiwuDB 服务需要映射的端口。在安装部署前,确保目标机器的以下端口没有被占用且没有被防火墙拦截。在安装部署时,用户可以修改 deploy.cfg
文件中的端口配置参数。
端口号 | 说明 |
---|---|
8080 | 数据库 Web 服务端口 |
26257 | 数据库服务端口、节点监听端口和对外连接端口 |
安装包
获取系统环境对应的 DEB 或 RPM 安装包,将安装包复制到待安装 KaiwuDB 的目标机器上,然后解压缩安装包:
tar -zxvf <package_name>
解压后生成的目录包含以下文件:
文件 | 说明 |
---|---|
add_user.sh | 安装、启动 KaiwuDB 后,为 KaiwuDB 数据库创建用户。 |
deploy.cfg | 安装部署配置文件,用于配置部署节点的 IP 地址、端口等配置信息。 |
deploy.sh | 安装部署脚本,用于安装、卸载、启动、状态获取、关停和重启等操作。 |
packages 目录 | 存放 DEB、RPM、镜像包和 libprotobuf 包。 |
utils 目录 | 存放工具类脚本。 |
libprotobuf 安装
说明
以下步骤仅适用于 Ubuntu 18.04 操作系统。
检查当前系统中是否已安装 libprotobuf 及其版本是否符合要求(3.6.1 及以上版本)。
dpkg -l | grep libprotobuf
如果未安装 libprotobuf,手动安装
packages
目录下的 libprotobuf 文件。dpkg -i ./libprotobuf23_3.12.4_amd64.deb
如果系统中已经安装了 libprotobuf,但版本低于 3.6.1:
查看 libprotobuf 版本的相关依赖:
apt-cache rdepends <libprotobuf_package>
确认没有其他重要包依赖于当前版本后,手动安装
packages
目录下的 libprotobuf 文件。dpkg -i ./libprotobuf23_3.12.4_amd64.deb
节点配置
SSH 免密登录
登录当前节点,生成公私密钥对。
ssh-keygen -f ~/.ssh/id_rsa -N ""
参数说明:
-f ~/.ssh/id_rsa
:指定生成的密钥对文件目录。-N
:将密钥密码设置为空,以实现免密登录。
将密钥分发至集群其它节点。
ssh-copy-id -f -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no <target_node>
确认是否可以使用 SSH 免密登录到集群其它节点。
ssh <target_node>
时钟同步
KaiwuDB 采用中等强度的时钟同步机制来维持数据的一致性。当节点检测到自身的机器时间与集群中至少 50% 的节点的机器时间的误差值超过集群最大允许时间误差值(默认为 500 ms)的 80% 时,该节点会自动停止,从而避免违反数据一致性,带来读写旧数据的风险。每个节点都必须运行 NTP(Network Time Protocol,网络时间协议)或其他时钟同步软件,防止时钟漂移得太远。
以下示例以 CentOS 7 为例,介绍如何配置时钟同步。
使用 SSH 登录到将要部署集群的节点。
关闭 timesyncd 服务。
timedatectl set-ntp no
安装 NTP 服务。
sudo apt install ntp
关闭 NTP 后台进程。
service ntp stop
通过 NTP 服务同步机器时间。
ntpdate -u 0.cn.pool.ntp.org
打开
/etc/ntp.conf
文件,查找server
和pool
的相关配置并将其修改为如下内容。server 0.cn.pool.ntp.org iburst server 1.cn.pool.ntp.org iburst server 2.cn.pool.ntp.org iburst server 3.cn.pool.ntp.org iburst
启动 NTP 服务。
service ntp start
在所有要安装 KaiwuDB 服务的集群节点上重复执行以上步骤。