环境要求
本章介绍安装 Halo 数据库前需要完成的软硬件环境确认与操作系统配置。无论采用单机安装、集群安装还是传统手工安装,均建议先完成本章准备;一键安装脚本会自动检测并安装缺失的依赖包,但内核参数、防火墙等仍建议按本章预先配置。
硬件环境
安装之前,请先确认服务器满足以下配置需求:
| 配置需求 | CPU | 内存 | 磁盘 | 网络 |
|---|---|---|---|---|
| 最低配置 | 8C 以上 | 32GB 以上 | 512GB 以上 | 千兆 |
| 建议配置 | 64C 及以上 | 256GB 及以上 | 1TB SSD 及以上 | 10G 光口 / 千兆 |
软件环境
Halo 数据库兼容多种主流操作系统:
| 操作系统 | X86 | ARM |
|---|---|---|
| 银河麒麟 | ✓ | ✓ |
| 中标麒麟 | ✓ | ✓ |
| 统信 UOS | ✓ | ✓ |
| CentOS | ✓ | ✓ |
| openEuler | ✓ | ✓ |
| Ubuntu | ✓ | — |
| RHEL | ✓ | ✓ |
| FreeBSD | ✓ | — |
| 凝思 | ✓ | ✓ |
| 普华 | ✓ | ✓ |
| deepin | ✓ | — |
| debian | ✓ | — |
| 方德 | ✓ | — |
安装包准备
安装前需获取以下文件,并上传到服务器(一键安装默认上传到 root 用户家目录):
- Halo 安装包:
halo-1.0.16.x86_64.build*.tar.gz; - 授权文件:
license.lic。
安装依赖包
RedHat / CentOS / OpenEuler / kylin / UOS 等系统执行:
yum install -y libaio libaio-devel libcurl libcurl-devel libxml2 libxml2-devel --skip-broken
yum install -y icu libicu libicu-devel readline readline-devel --skip-broken
yum install -y openssl openssl-devel uuid uuid-devel libuuid-devel --skip-broken
yum install -y lz4 lz4-devel libzstd zlib zlib-devel zstd zstd-devel --skip-broken
yum install -y sudo which net-tools tar --skip-broken
可选(便于后续运维与排障):
yum install -y perl-DBI perl-DBD-Pg perl-Time-HiRes perl-Time-Piece --skip-broken
Ubuntu / debian 等系统执行:
apt-get install -y openssl libcurl4-openssl-dev uuid uuid-dev libossp-uuid16
apt-get install -y lz4 liblz4-1 liblz4-dev zstd libzstd-dev
apt-get install -y libicu* icu-devtools libicu-dev
apt-get install -y sudo which net-tools perl tar
配置内核参数
数据库运行依赖共享内存与信号量。默认情况下共享内存段通常足够,大多数情况只需调整系统信号量参数。
kernel.sem 四个值的含义:
| 参数 | 含义 | 最低要求 |
|---|---|---|
| SEMMNI | 最大信号量标识数 | 见下方计算公式 |
| SEMMNS | 最大信号量数 | SEMMNI 计算结果 × 17 |
| SEMMSL | 每个集合中的最大信号量数 | 至少 17 |
| SEMVMX | 信号量的最大值 | 至少 1000 |
SEMMNI 的最低要求计算公式如下(max_connections 等四个参数均为数据库连接类参数,在 postgresql.conf 中配置):
ceil((max_connections + autovacuum_max_workers + max_wal_senders + max_worker_processes + 5) / 16)
即:以上四个连接类参数之和加 5,再除以 16 向上取整。
修改 /etc/sysctl.conf:
vi /etc/sysctl.conf
添加:
kernel.sem = 4096 4194304 32768 1024
执行生效:
sysctl -p
修改资源限制
在 /etc/security/limits.conf 中为 halo 用户添加资源限制:
vi /etc/security/limits.conf
添加:
halo soft nproc unlimited
halo hard nproc unlimited
halo soft nofile 1024000
halo hard nofile 1024000
halo soft stack unlimited
halo hard stack unlimited
halo soft memlock unlimited
halo hard memlock unlimited
halo soft core unlimited
halo hard core unlimited
防火墙设置
远程访问数据库需要开放数据库端口(默认 1921,兼容模式端口见 1.7.1)。Linux 系统默认开启防火墙并禁用所有端口,处理方式有以下两种,二选一即可:
- 方式一:关闭防火墙——适合测试环境,简单直接;
- 方式二:保持防火墙开启,仅开放数据库所需端口——生产环境建议采用。
RedHat / CentOS / OpenEuler / kylin / UOS 等系统
方式一:关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
方式二:开放数据库端口
firewall-cmd --add-port=1921/tcp # 临时添加 1921 端口
firewall-cmd --permanent --add-port=1921/tcp # 永久添加 1921 端口
firewall-cmd --reload # 重载生效
验证端口是否开放:
firewall-cmd --list-ports | grep 1921
Ubuntu / debian 等系统
方式一:关闭防火墙
sudo ufw disable
方式二:开放数据库端口
sudo ufw allow 1921
sudo ufw reload # 重启防火墙生效
sudo netstat -tunlp | grep 1921 # 查看端口信息
数据库端口说明
Halo 数据库多兼容模式使用不同端口,按需放通:
| 端口 | 用途 |
|---|---|
| 1921 | Halo 默认端口(默认监听) |
| 1521 | Oracle 兼容模式端口(默认监听) |
| 3306 | MySQL 兼容模式端口(默认监听) |
| 5432 | PostgreSQL 兼容模式端口(按需启用后监听) |
集群部署还需开放:etcd 端口 2379/2380、clustermgr 端口 8008。
(可选)关闭 SELinux
注意:部分操作系统没有 SELinux,可直接跳过本节。
方法一:临时修改(重启后失效):
setenforce 0
方法二:永久修改:
vi /etc/selinux/config
将如下项修改为:
SELINUX=disabled