CentOS 7.6 最佳实践与性能优化 – wiki基地

CentOS 7.6 最佳实践与性能优化

CentOS 7.6 作为一款稳定、可靠且广泛使用的企业级 Linux 发行版,在服务器领域占据着重要的地位。然而,为了充分发挥其潜力,确保系统安全、高效地运行,我们需要遵循一系列最佳实践并进行适当的性能优化。本文将深入探讨 CentOS 7.6 的最佳实践和性能优化策略,涵盖系统安装、安全加固、内核调优、网络优化、存储优化、应用程序优化以及监控与维护等方面。

一、 系统安装与初始化

  1. 选择合适的安装方式:

    • 最小化安装: 强烈建议选择最小化安装(Minimal Install),只安装必要的软件包。这可以减少系统 footprint,降低安全风险,并提高性能。后续根据实际需要安装所需的软件包。
    • 网络安装: 如果有多个服务器需要安装,可以考虑使用网络安装方式(PXE 启动),通过 Kickstart 文件实现自动化安装,提高部署效率。
    • 自定义分区: 根据服务器的用途和数据存储需求,合理规划分区。建议至少创建以下分区:
      • /boot:存放内核和引导加载程序。
      • /:根分区,存放系统文件。
      • swap:交换分区,当物理内存不足时使用。大小通常为物理内存的 1-2 倍,但不建议超过 8GB。
      • /home:(可选)如果服务器用作多用户环境,可以创建单独的 /home 分区。
      • /var:存放日志、缓存等可变数据。建议单独分区,防止 / 分区被填满。
      • /tmp:存放临时文件。建议单独分区,并设置 noexecnodevnosuid 挂载选项。
      • 数据分区:根据应用需求创建单独的数据分区,例如 /data
  2. 配置网络:

    • 静态 IP 地址: 服务器通常需要配置静态 IP 地址,以确保网络连接的稳定性。
    • 主机名: 设置一个有意义的主机名,方便管理和识别。
    • DNS 解析: 配置正确的 DNS 服务器地址,确保域名解析正常。
    • 防火墙: 启用防火墙(firewalld),并配置必要的规则,只允许必要的网络流量通过。
  3. 更新系统:

    • 安装完成后,立即更新系统到最新版本:
      bash
      yum update -y
    • 定期更新系统,以获取最新的安全补丁和功能更新。
  4. 安装常用工具:

    • 安装一些常用的系统管理工具,例如 vimwgetcurlnet-toolshtopiotopsysstat 等。

二、 安全加固

安全性是服务器管理的重中之重。以下是一些关键的安全加固措施:

  1. SSH 安全:

    • 禁用 root 远程登录:/etc/ssh/sshd_config 中设置 PermitRootLogin no
    • 使用密钥认证: 禁止密码登录,改用密钥认证。设置 PasswordAuthentication no
    • 修改默认端口: 将 SSH 默认端口 22 修改为其他不常用的端口,例如 2222。设置 Port 2222
    • 限制登录尝试次数: 使用 fail2ban 等工具,防止暴力破解。
    • 启用双因素认证(2FA): 考虑使用 Google Authenticator 等工具实现双因素认证,进一步提高安全性。
  2. 防火墙配置:

    • firewalld: CentOS 7 默认使用 firewalld 作为防火墙。学习并熟练使用 firewall-cmd 命令进行配置。
    • 最小化开放端口: 只开放必要的端口,例如 SSH 端口(修改后的)、Web 服务端口(80/443)等。
    • 限制访问来源: 对于某些服务,可以限制只允许特定的 IP 地址或 IP 段访问。
    • 自定义规则: 根据实际需求,创建自定义的防火墙规则。
  3. SELinux:

    • 启用 SELinux: CentOS 7 默认启用 SELinux。SELinux 提供强制访问控制(MAC),可以有效防止恶意程序或配置错误导致的系统破坏。
    • 了解 SELinux 上下文: 学习 SELinux 的基本概念和管理工具,例如 semanagerestoreconaudit2allow 等。
    • 排查 SELinux 问题: 当遇到由于 SELinux 导致的访问问题时,不要直接禁用 SELinux,而是应该通过查看日志(/var/log/audit/audit.log)和使用 audit2allow 等工具来解决问题。
  4. 用户和权限管理:

    • 最小权限原则: 为每个用户分配合适的权限,避免过度授权。
    • sudo: 使用 sudo 命令来执行需要 root 权限的操作,而不是直接使用 root 用户登录。
    • 定期审查用户: 定期检查系统中的用户和组,删除不再需要的用户和组。
  5. 系统日志:

    • rsyslog: CentOS 7 默认使用 rsyslog 作为系统日志服务。
    • 配置日志轮转: 配置日志轮转,防止日志文件过大。
    • 集中日志管理: 考虑将多台服务器的日志集中到一个日志服务器上,方便统一管理和分析。
    • 监控日志: 定期检查系统日志,及时发现和处理异常情况。
  6. 禁用不必要的服务:

    • 使用 systemctl list-unit-files --type=service 查看系统中的服务。
    • 禁用不需要的服务,例如 postfix(如果不需要邮件服务)、cups(如果不需要打印服务)等。
    • 使用 systemctl disable <service_name> 禁用服务。
  7. 定期安全审计:

    • 使用 lynis 等工具进行系统安全审计,发现潜在的安全漏洞。
    • 定期进行漏洞扫描,例如使用 Nessus 或 OpenVAS。

三、 内核调优

内核调优可以显著提高系统性能。以下是一些常见的内核调优参数:

  1. 文件描述符限制:

    • 修改 /etc/security/limits.conf 文件,增加文件描述符限制:
      “`

      • soft nofile 65535
      • hard nofile 65535
        “`
    • 或者通过 sysctl 临时修改:
      bash
      sysctl -w fs.file-max=65535
  2. 网络参数调优:

    • 修改 /etc/sysctl.conf 文件,添加以下参数(根据实际情况调整):
      net.core.somaxconn = 65535
      net.ipv4.tcp_max_syn_backlog = 8192
      net.ipv4.tcp_tw_reuse = 1
      net.ipv4.tcp_tw_recycle = 0 # 不建议开启,可能导致 NAT 环境下连接问题
      net.ipv4.tcp_fin_timeout = 30
      net.ipv4.tcp_keepalive_time = 1200
      net.ipv4.ip_local_port_range = 10000 65535
      net.ipv4.tcp_syncookies = 1
      net.core.netdev_max_backlog = 2500
      net.ipv4.tcp_rmem = 4096 87380 8388608
      net.ipv4.tcp_wmem = 4096 65536 8388608
      net.core.rmem_default = 8388608
      net.core.rmem_max = 16777216
      net.core.wmem_default = 8388608
      net.core.wmem_max = 16777216
    • 执行 sysctl -p 使配置生效。
  3. 内存管理:

    • vm.swappiness:控制系统使用 swap 分区的积极性。默认值为 60。对于服务器,建议降低此值,例如设置为 10 或 1。
      bash
      sysctl -w vm.swappiness=10
    • vm.dirty_ratiovm.dirty_background_ratio:控制脏页(已修改但未写入磁盘的内存页)的比例。根据服务器负载和 I/O 性能调整。
  4. I/O 调度器:

    • CentOS 7 默认的 I/O 调度器是 deadline。对于 SSD,可以考虑使用 noopdeadline。对于机械硬盘,deadlinecfq 通常是较好的选择。
    • 查看当前 I/O 调度器:
      bash
      cat /sys/block/<device>/queue/scheduler
    • 临时修改 I/O 调度器:
      bash
      echo noop > /sys/block/<device>/queue/scheduler
    • 永久修改 I/O 调度器:
      • 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 行中添加 elevator=noop
      • 重新生成 grub 配置文件:grub2-mkconfig -o /boot/grub2/grub.cfg
      • 重启服务器。

四、 网络优化

  1. 禁用 IPv6(如果不需要):

    • 如果不需要 IPv6,可以禁用以减少资源占用和潜在的安全风险。
    • 编辑 /etc/sysctl.conf,添加以下内容:
      net.ipv6.conf.all.disable_ipv6 = 1
      net.ipv6.conf.default.disable_ipv6 = 1
    • 执行 sysctl -p 使配置生效。
    • 在网络配置文件中(例如 /etc/sysconfig/network-scripts/ifcfg-eth0)设置 IPV6INIT=no
  2. 优化网络设备驱动程序:

    • 确保使用最新版本的网络设备驱动程序。
    • 对于某些高性能网卡,可以考虑使用厂商提供的专用驱动程序。
  3. 使用 TCP BBR 拥塞控制算法(如果内核版本支持):

    • TCP BBR 是 Google 开发的一种拥塞控制算法,可以显著提高网络吞吐量和降低延迟。
    • CentOS 7.6 内核版本较老,需要手动升级内核或者使用第三方仓库。
    • 升级内核后,编辑 /etc/sysctl.conf,添加以下内容:
      net.core.default_qdisc = fq
      net.ipv4.tcp_congestion_control = bbr
    • 执行 sysctl -p 使配置生效。

五、 存储优化

  1. 选择合适的文件系统:

    • CentOS 7 默认使用 XFS 文件系统。XFS 是一种高性能、可扩展的文件系统,适合大多数服务器应用。
    • 对于某些特定场景,例如数据库服务器,可以考虑使用 ext4 或其他文件系统。
  2. 优化挂载选项:

    • noatime:禁用文件访问时间的更新,可以减少 I/O 操作。
    • nodiratime:禁用目录访问时间的更新。
    • discard:(对于 SSD)启用 TRIM 支持,可以提高 SSD 性能和寿命。
    • data=ordered:(对于 ext4)在写入数据之前先写入元数据,可以提高数据一致性。
  3. RAID:

    • 对于需要高可用性和数据冗余的服务器,使用 RAID 技术。
    • 根据需求选择合适的 RAID 级别,例如 RAID 1(镜像)、RAID 5(带奇偶校验的条带化)、RAID 10(RAID 1 + RAID 0)。
    • 使用硬件 RAID 控制器可以提高性能和可靠性。
  4. LVM:

    • 使用 LVM(逻辑卷管理器)可以灵活地管理磁盘空间,方便扩容和缩容。
    • 创建 LVM 卷组和逻辑卷,并根据需要调整大小。

六、 应用程序优化

  1. Web 服务器(例如 Nginx、Apache):

    • Nginx:
      • 调整 worker 进程数和连接数。
      • 启用 Gzip 压缩。
      • 配置缓存。
      • 使用 keepalive 连接。
      • 使用 upstream 负载均衡。
    • Apache:
      • 选择合适的 MPM 模块(prefork、worker 或 event)。
      • 调整 MaxClients、MaxRequestsPerChild 等参数。
      • 启用 Gzip 压缩。
      • 配置缓存。
  2. 数据库服务器(例如 MySQL、PostgreSQL):

    • MySQL:
      • 调整 innodb_buffer_pool_size(对于 InnoDB 存储引擎)。
      • 优化查询语句。
      • 使用慢查询日志进行性能分析。
      • 配置主从复制或集群。
    • PostgreSQL:
      • 调整 shared_bufferswork_memmaintenance_work_mem 等参数。
      • 优化查询语句。
      • 使用 pg_stat_statements 扩展进行性能分析。
      • 配置流复制或逻辑复制。
  3. PHP(如果使用):

    • 使用 PHP-FPM。
    • 调整 pm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers 等参数。
    • 启用 OPcache。

七、 监控与维护

  1. 系统监控:

    • 使用 tophtopvmstatiostatsar 等工具监控 CPU、内存、I/O 和网络等系统资源的使用情况。
    • 使用 nmonglances 等工具进行更全面的系统监控。
    • 考虑使用专业的监控系统,例如 Zabbix、Nagios、Prometheus + Grafana 等。
  2. 日志监控:

    • 定期检查系统日志和应用程序日志,及时发现和处理错误。
    • 使用 logwatch 等工具自动分析日志。
    • 考虑使用 ELK Stack(Elasticsearch、Logstash、Kibana)进行日志集中管理和分析。
  3. 性能分析:

    • 使用 perfstracegdb 等工具进行性能分析,找出性能瓶颈。
  4. 定期备份:

    • 制定并执行定期备份策略,确保数据安全。
    • 使用 rsynctardump 等工具进行备份。
    • 考虑使用云存储服务进行异地备份。
  5. 系统维护:

  6. 定期清理系统中的临时文件和过时的软件包。

总结

CentOS 7.6 的最佳实践和性能优化是一个持续的过程,需要根据服务器的实际用途和负载情况进行调整。本文提供了一系列通用的建议和策略,涵盖了系统安装、安全加固、内核调优、网络优化、存储优化、应用程序优化以及监控与维护等方面。通过遵循这些最佳实践并进行适当的性能优化,可以确保 CentOS 7.6 服务器安全、高效地运行,充分发挥其潜力。请注意,在进行任何配置更改之前,务必备份重要数据,并在测试环境中进行充分测试,以避免潜在的风险。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部