环境检测参数
以 CentOS 7.9 服务器为例
User
说明:运行脚本时的用户
要求:因使用到 docker,所以需要 root 用户或者具有 root 权限的用户
Selinux
说明:Linux 安全系统
要求:因使用到 docker,需关闭 Selinux
临时关闭:setenforce 0
永久关闭:修改 /etc/selinux/config 中的 SELINUX=enforcing 或 SELINUX=permissive 为 SELINUX=disabled
Firewalld
说明:自带的防火墙工具。建议关闭防火墙,容易与 iptables 规则冲突,云服务器可使用安全组规则进行网络控制
临时关闭:systemctl stop firewalld(关闭防火墙后需要重启 docker 服务,否则规则会有可能丢失导致网络异常)
永久关闭:systemctl disable firewalld
CPU
说明:处理器核心数量
要求:最低 8 核
Memory
说明:内存大小
要求:最低 32G 内存容量
docker
说明:环境变量中需要有 docker 命令且可执行成功
要求:通过 RPM 安装后会自动添加至 PATH 环境变量,二进制安装需手动添加至环境变量
dockerd
说明:环境变量中需要有 dockerd 命令且可执行成功
要求:通过 RPM 安装后会自动添加至 PATH 环境变量,二进制安装需手动添加至环境变量
container
说明:容器内进程实际可用的文件描述符限制。Docker v29 同步更新 containerd v2.1.5 后,容器会使用 systemd 默认的 LimitNOFILE,ulimit -n 可能降至 1024。该变化会影响所有容器,可能导致数据库、中间件等服务因文件句柄不足,出现启动失败或运行异常。
调整方法:修改或新建 /etc/docker/daemon.json,增加 default-ulimits 配置,并将 nofile 设置为 102400:
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Soft": 102400,
"Hard": 102400
}
}
}
调整后需重启 docker 服务生效。
MaxMapCount
说明:限制一个进程可以拥有的 VMA(虚拟内存区域)的数量,内置 Elasticsearch 需要调整才可成功启动
临时调整:sysctl -w vm.max_map_count=262144
永久调整:/etc/sysctl.conf 文件增加 vm.max_map_count=262144
SysFileNr
说明:操作系统级别的文件描述符限制
临时调整:sysctl -w fs.file-max=2048000
永久调整:/etc/sysctl.conf 文件增加 fs.file-max=2048000
IPv4Forward
说明:docker 对外提供服务需要开启
临时调整:sysctl -w net.ipv4.ip_forward=1
永久调整:/etc/sysctl.conf 文件增加 net.ipv4.ip_forward=1
DockerCgroupDrive
说明:docker 容器使用的 Cgroup 驱动。如检测结果为 systemd,可能出现容器内文件描述符数量不足的问题;如提示 dockerd is not running,则需要先启动 docker 服务:systemctl start docker
调整方法:修改或新建 /etc/docker/daemon.json,增加 exec-opts 配置,将 Cgroup 驱动设置为 cgroupfs:
{
"exec-opts": ["native.cgroupdriver=cgroupfs"]
}
调整后重启 docker 服务生效。
DockerdFileNr
说明:docker 内的文件描述符数量,如为 dockerd is not running 则需要启动 dockerd systemctl start docker
永久调整:例如通过 systemd 启动 docker 服务,则在 docker.service 文件中设置 LimitNOFILE=102400
DockerdVersion
说明:docker 运行版本,如低于指定版本则可能产生权限异常或未知异常
要求:升级 Docker 版本大于等于20.10.16
Umask
说明:umask 值用于设置用户在创建文件时的默认权限
临时调整:umask 0022
永久调整:在 /etc/profile 文件中追加 umask 0022 一行
调整过后,先在安装管理器目录下执行 bash service.sh stopall 停止服务,再执行 bash service.sh start 启动服务,访问页面重新进行初始化操作