Ubuntu Server在高并发、高可用场景下的运维实践和常见问题有哪些?

在高并发、高可用(HA)场景下运维 Ubuntu Server(尤其是 LTS 版本如 22.04/24.04)需兼顾系统稳定性、性能可扩展性、故障自愈能力与可观测性。以下是经过生产环境验证的核心运维实践高频踩坑问题及解决方案,按模块组织,兼顾原理与实操:


一、关键运维实践(生产级建议)

✅ 1. 系统层加固与调优

领域 实践要点 命令/配置示例
内核参数优化 针对高连接数、低延迟场景调整:
net.core.somaxconn(监听队列)、
net.ipv4.tcp_tw_reuse(TIME_WAIT复用)、
vm.swappiness=1(禁用swap避免GC抖动)
bash<br>echo 'net.core.somaxconn = 65535' >> /etc/sysctl.conf<br>echo 'net.ipv4.tcp_tw_reuse = 1' >> /etc/sysctl.conf<br>sysctl -p<br>
文件描述符限制 全局+服务级双限制(避免 Too many open files bash<br># /etc/security/limits.conf<br>* soft nofile 65536<br>* hard nofile 65536<br># systemd service override (e.g., nginx)<br>[Service]<br>LimitNOFILE=65536<br>
时钟同步 必须启用 chrony(非 ntpd),避免 NTP 跳变导致分布式锁/日志乱序 bash<br>sudo apt install chrony<br>sudo systemctl enable --now chrony<br>chronyc tracking # 验证偏移 < 5ms<br>

✅ 2. 高可用架构设计

组件 推荐方案 关键注意事项
负载均衡 Nginx + Keepalived(L4/L7)或 HAProxy + Pacemaker(更严格HA) • Keepalived VIP 切换需配置 nopreempt + priority 避免脑裂
• 后端健康检查必须带 tcp_checkhttpchk,超时 ≤ 3s
数据库 HA PostgreSQL:Patroni + etcd(自动故障转移)
MySQL:MGR(Group Replication)
• Patroni 要求 etcd 集群 ≥3节点,网络延迟 < 5ms
• MGR 写节点唯一,读流量需通过 ProxySQL 分流
存储共享 CephFS/RBD(云原生)或 DRBD + Pacemaker(传统物理机) • Ceph OSD 必须使用 SSD 缓存 + bluestore,避免 HDD 单点瓶颈

✅ 3. 自动化与可观测性(DevOps 核心)

工具链 生产配置建议
配置管理 Ansible + AWX/Tower
• Playbook 按角色拆分(web/db/cache),使用 tags 控制滚动更新
• 敏感变量加密:ansible-vault encrypt_string
监控告警 Prometheus + Grafana + Alertmanager
• 采集指标:node_exporter(主机)、blackbox_exporter(端口探测)、mysqld_exporter
• 告警规则:ALERT HighCPUUsage(>90%持续5m)、ALERT DiskFull(>95%)→ 企业微信/钉钉通知
日志集中 Loki + Promtail + Grafana(轻量替代 ELK):
promtail 配置 pipeline_stages 过滤敏感字段(如密码、token)

✅ 4. 安全与合规

  • 最小权限原则
    • 禁用 root SSH 登录,强制密钥认证(PermitRootLogin no, PasswordAuthentication no
    • 服务账户使用 systemdDynamicUser=yes(Ubuntu 22.04+)
  • 漏洞响应
    • 启用 unattended-upgrades 自动更新安全补丁:
      sudo apt install unattended-upgrades
      sudo dpkg-reconfigure -plow unattended-upgrades  # 选择 "Yes"
  • 审计强化
    • 启用 auditd 记录关键操作(/etc/audit/rules.d/custom.rules):
      -w /etc/passwd -p wa -k identity

二、高频问题与根因解决方案(附诊断命令)

问题现象 根本原因 快速诊断 解决方案
nginx: worker process is shutting down 频繁重启 worker_connections 不足 + ulimit -n 未生效 ss -s 查看 total 连接数;cat /proc/$(pgrep nginx)/limits | grep "Max open files" ① 检查 /etc/security/limits.conf 是否被 systemd 覆盖 → 改用 systemd 服务级 LimitNOFILE
② Nginx 配置 worker_rlimit_nofile 65536;
数据库主从延迟突增(>60s) 从库 I/O 线程卡住(磁盘慢/锁竞争)或网络分区 SHOW SLAVE STATUSG 查看 Seconds_Behind_MasterIO_Running/SQL_Running
iostat -x 1 观察 %util >95%
① 从库升级 SSD,关闭 innodb_flush_log_at_trx_commit=2(允许丢1s事务)
② 使用 pt-heartbeat 替代 Seconds_Behind_Master(更准)
systemd-journald 占用 100% CPU 日志轮转失败或 journalctl --vacuum-size=100M 未配置 journalctl --disk-usage 查看占用;top -p $(pgrep journald) ① 限制日志大小:/etc/systemd/journald.conf 中设置:
<br>SystemMaxUse=1G<br>MaxRetentionSec=1month<br>
② 重启服务:sudo systemctl restart systemd-journald
Keepalived VIP 不切换(脑裂) 两节点间 vrrp 组播包被防火墙拦截或网络隔离 tcpdump -i eth0 vrrp(检查是否收发 VRRP 包)
sudo ufw status
① 开放 VRRP 协议:sudo ufw allow proto vrrp
② 使用单播模式(unicast_peer)替代组播(避免交换机不支持)
apt update 超时失败(国内源失效) Ubuntu 默认源(archive.ubuntu.com)在某些地区不可达 curl -I http://archive.ubuntu.com/ubuntu 测试连通性 切换阿里云源(22.04):
bash<br>sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list<br>sudo apt update<br>

三、避坑指南(血泪经验)

  1. 绝不手动修改 /etc/fstab 挂载 NFS/Ceph
    → 改用 systemd-mount + .mount 单元,避免启动卡死(_netdev 选项在 Ubuntu 22.04+ 不可靠)。

  2. Docker 容器时间不准?
    → 启动容器时添加 --privileged 会破坏主机时钟!正确做法:

    docker run -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro ...
  3. systemd-resolved DNS 解析慢
    → Ubuntu 22.04 默认启用,但与某些内网 DNS 冲突。直接禁用:

    sudo systemctl disable --now systemd-resolved
    echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
  4. 升级内核后无法启动?
    → Ubuntu LTS 内核升级需验证 grub 配置:

    sudo update-grub && sudo reboot
    # 启动时按 Shift 进入 GRUB 菜单,选择旧内核临时恢复

四、延伸建议

  • 混沌工程:定期用 chaos-mesh 注入网络延迟/节点宕机,验证 HA 切换时效性(目标 < 30s)。
  • 容量规划:用 vmstat 1 10 + pidstat -u 1 10 建立基线,CPU 负载 >70% 即触发扩容。
  • 灾备演练:每季度执行一次“断电演练”(强制关机),验证 Pacemaker 故障转移与数据一致性。

💡 终极原则
“自动化一切可重复之事,监控一切可度量之物,文档化一切可复现之步。”
在 Ubuntu Server 上构建高并发 HA 系统,不是堆砌技术,而是建立一套可验证、可回滚、可审计的运维闭环。

如需针对某场景(如 Kubernetes 集群在 Ubuntu 上的 HA 部署、或 PostgreSQL 高并发调优)深入展开,可随时告知,我可提供完整 YAML/SQL/Ansible 示例。

未经允许不得转载:云知识CLOUD » Ubuntu Server在高并发、高可用场景下的运维实践和常见问题有哪些?