生产环境下Centos 7.9优化配置?

在 CentOS 7.9 生产环境中进行优化配置,核心目标是提升系统稳定性、安全性、网络吞吐能力以及资源利用率。由于 CentOS 7 已停止官方维护(EOL),强烈建议规划迁移至 Rocky Linux 8/9 或 AlmaLinux。若必须继续使用 CentOS 7.9,请务必严格遵循以下优化步骤。

以下是分模块的优化指南:


1. 内核参数优化 (sysctl.conf)

默认的内核参数通常针对通用场景,生产环境需根据业务类型(如高并发 Web、数据库、缓存)调整。

操作文件/etc/sysctl.conf

# 编辑文件
vi /etc/sysctl.conf

关键参数建议

# --- 网络相关 ---
# 允许重用 TIME_WAIT socket (解决端口耗尽问题)
net.ipv4.tcp_tw_reuse = 1
# 缩短 FIN-WAIT-2 超时时间
net.ipv4.tcp_fin_timeout = 30
# 扩大 TCP 连接队列长度
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 开启 SYN Cookies (防止 SYN Flood 攻击)
net.ipv4.tcp_syncookies = 1
# 启用 IP 转发 (如果是网关/NAT)
net.ipv4.ip_forward = 1

# --- 内存管理 ---
# 减少 swap 使用倾向 (避免频繁交换导致性能下降),值越小越不用 swap
vm.swappiness = 10
# 开启透明大页 (THP),对某些数据库(如 Redis/MongoDB)有益,但 MySQL 可能需要关闭
# vm.transparent_hugepage = always 
# 或者手动控制:echo never > /sys/kernel/mm/transparent_hugepage/enabled

# --- 安全相关 ---
# 忽略 ICMP 广播请求
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 不发送源路由包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 禁止响应 ICMP 重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

生效命令

sysctl -p

2. 文件系统与挂载优化 (fstab)

通过调整挂载选项,可以显著提升 I/O 性能并增强数据安全性。

操作文件/etc/fstab

建议修改
对于根目录 / 和数据盘(假设是 /data),添加 noatimerelatime 选项,减少磁盘写入元数据的时间;添加 noexec 限制特定分区执行二进制文件以增强安全。

# 示例:将 /data 挂载为 noatime, noexec, nodev
/dev/sdb1  /data  ext4  defaults,noatime,noexec,nodev  0  0

注:如果是 XFS 文件系统(CentOS 7 默认),参数略有不同,通常使用 nouuid 等,但 noatime 同样适用。

生效方法
修改后重启或执行 mount -o remount /data


3. 用户资源限制 (limits.conf)

防止单个进程占用过多文件或线程,导致服务崩溃。

操作文件/etc/security/limits.conf

添加内容

# 设置 root 和用户 (例如 www 用户) 的限制
# 软限制 (soft) 和硬限制 (hard)
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

注意:如果应用运行在 systemd 下(如 Nginx, Java),还需要修改 `/etc/systemd/system/.service.d/override.conf中的LimitNOFILELimitNPROC`,否则 limits.conf 可能不生效。*


4. SSH 安全加固

生产环境严禁明文密码登录,必须强制密钥认证。

操作文件/etc/ssh/sshd_config

关键配置

Port 2222              # 修改默认端口,减少扫描日志噪音
PermitRootLogin no     # 禁止 root 直接登录
PasswordAuthentication no # 禁用密码登录
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
MaxAuthTries 3         # 限制尝试次数
X11Forwarding no       # 禁用图形转发
UseDNS no              # 禁用 DNS 反向解析,加快登录速度

生效命令

systemctl restart sshd
# ⚠️ 重要:修改前务必先测试新配置,防止被锁在外面!

5. 防火墙与安全组 (Firewalld)

CentOS 7 默认使用 firewalld。生产环境应遵循“最小权限原则”。

操作

# 停止并禁用 firewalld (如果云厂商已有安全组,且你更习惯 iptables/nftables)
systemctl stop firewalld
systemctl disable firewalld

# 或者保留 firewalld,仅开放必要端口
systemctl enable firewalld
systemctl start firewalld

# 开放常用端口 (例如 80, 443, 自定义 SSH 端口)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

推荐:在生产环境,建议结合云厂商的安全组(Security Group)策略,仅在本地关闭不必要的入站端口。


6. 时间同步 (Chrony)

CentOS 7 推荐使用 chrony 替代旧的 ntpd,精度更高,启动更快。

操作

yum install chrony -y
systemctl enable chronyd
systemctl start chronyd

# 编辑配置文件
vi /etc/chrony.conf
# 确保包含多个可靠的 NTP 服务器
server ntp.aliyun.com iburst
server time.windows.com iburst
server pool.ntp.org iburst

7. 监控与日志管理

  • 日志轮转:检查 /etc/logrotate.conf,确保日志不会无限增长占满磁盘。
  • 监控工具:安装 htop, iotop, nethogs 或部署 Prometheus + Node Exporter 进行长期监控。
  • 自动更新:生产环境不建议开启自动更新。建议制定人工审核后的定期补丁计划(尤其是安全补丁)。

8. 特别注意事项:CentOS 7 EOL 风险

重要提示:Red Hat 已于 2024 年 6 月 30 日终止了 CentOS 7 的生命周期支持。

  • 风险:不再提供安全更新,漏洞修复滞后。
  • 应对方案
    1. 短期:如果无法立即迁移,请确保所有外部访问通过 WAF(Web 应用防火墙)防护,并严格限制 SSH 来源 IP。
    2. 长期:强烈建议迁移到 Rocky Linux 9AlmaLinux 9。两者与 RHEL/CentOS 兼容,且社区活跃,能获得长期的安全支持。

验证清单

在执行完上述配置后,建议执行以下检查:

  1. sysctl -a | grep tcp 确认内核参数生效。
  2. ulimit -n 确认文件句柄限制。
  3. ss -tunap 确认网络连接状态正常。
  4. ssh -vv user@host 测试 SSH 登录是否成功。
  5. 模拟断网或重启,观察服务是否能自动恢复。

如果您有特定的业务场景(如:MySQL 数据库、Kafka 消息队列、Nginx 高并发),我可以提供更针对性的参数调优建议。