跳到主要内容

环境要求

本章介绍安装 Halo 数据库前需要完成的软硬件环境确认与操作系统配置。无论采用单机安装、集群安装还是传统手工安装,均建议先完成本章准备;一键安装脚本会自动检测并安装缺失的依赖包,但内核参数、防火墙等仍建议按本章预先配置。

硬件环境​

安装之前,请先确认服务器满足以下配置需求:

配置需求CPU内存磁盘网络
最低配置8C 以上32GB 以上512GB 以上千兆
建议配置64C 及以上256GB 及以上1TB SSD 及以上10G 光口 / 千兆

软件环境​

Halo 数据库兼容多种主流操作系统:

操作系统X86ARM
银河麒麟✓✓
中标麒麟✓✓
统信 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 数据库多兼容模式使用不同端口,按需放通:

端口用途
1921Halo 默认端口(默认监听)
1521Oracle 兼容模式端口(默认监听)
3306MySQL 兼容模式端口(默认监听)
5432PostgreSQL 兼容模式端口(按需启用后监听)

集群部署还需开放:etcd 端口 2379/2380、clustermgr 端口 8008。

(可选)关闭 SELinux​

注意:部分操作系统没有 SELinux,可直接跳过本节。

方法一:临时修改(重启后失效):

setenforce 0

方法二:永久修改:

vi /etc/selinux/config

将如下项修改为:

SELINUX=disabled