一、背景:服务器扩容重启,直接炸掉整条业务线

近期线上阿里云服务器从 8G 内存升级至 16G,本以为只是简单扩容提效,无需额外运维操作。

服务器重启完成后,所有配置过开机自启的中间件看似自动拉起,结果前端直接反馈所有业务接口全部瘫痪

查看后端 Java 微服务日志,大面积报错:

Redis connection failed: NOAUTH Authentication required.
Unable to connect to Redis cluster.

整条业务链路因为无法连接 Redis 直接卡死,诡异的是部分 Redis 节点进程还在运行,并非彻底宕机。

顺着报错线索逐层向上溯源排查:Redis→ZooKeeper→Nacos→分布式存储…… 前后耗时整整两小时才彻底理清问题根源。

核心原因:服务器重启后第三方中间件启动顺序彻底错乱,依赖未就绪上层服务先行启动,配置认证失效、集群状态异常,连锁引发微服务全线报错。

此文把两小时踩坑经验全部收敛固化,整理成一套标准重启恢复手册,后续服务器重启,照着操作 5 分钟即可全部恢复上线。

二、基础环境

服务器:阿里云 ECS 16G,系统:Linux所有命令实测生产可用,路径、参数均适配线上环境敏感 IP、密码已脱敏,使用自行替换即可

三、终极启动顺序口诀(重中之重)

ZooKeeper → Redis → Nacos → SeaweedFS → Milvus → MinIO → Nebula → Nginx → Nexus → vsftpd → Jenkins

核心逻辑:先底层基础依赖,再中间件集群,最后业务网关与运维工具,顺序绝对不能颠倒。

四、全服务标准启停命令合集

1、ZooKeeper 集群(最优先启动)

# 进入目录
cd /usr/local/apache-zookeeper-3.8.5-bin/bin
# 启动
./zkServer.sh start
# 查看状态 / 集群角色
./zkServer.sh status
# 停止
./zkServer.sh stop
# 重启
./zkServer.sh restart

2、Redis 集群(本次故障核心)

# 集群密码配置
# requirepass 111111!
# masterauth  111111!

# 启动集群节点
/usr/local/redis/bin/redis-server /usr/local/redis/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/7002/redis.conf

# 校验集群健康状态
/usr/local/redis/bin/redis-cli -p 7001 -a 111111! cluster info | grep cluster_state
/usr/local/redis/bin/redis-cli -p 7002 -a 111111! cluster info | grep cluster_state

# 重启必做:重置集群认证并持久化(解决NOAUTH报错)
/usr/local/redis/bin/redis-cli -p 7001 -a 111111!
CONFIG SET masterauth 111111!
CONFIG SET requirepass 111111!
CONFIG REWRITE
CONFIG GET masterauth

3、Nacos 注册配置中心集群

# 需要root用户
cd /usr/local/nacos/bin
# 启动(集群模式)
./startup.sh  
# 查看启动日志
tail -20f /usr/local/nacos/logs/startup.log 
# 停止
./shutdown.sh                                     

4、SeaweedFS 分布式文件集群

# 替换为实际服务器集群IP
# 启动Master节点
weed master -ip=<IP> -port=9333 -mdir=~/weed_data/master -peers=<IP1>:9333,<IP2>:9333,<IP3>:9333 &
# 启动Volume节点
weed volume -dir=~/weed_data/volume -max=100 -mserver=<IP1>:9333,<IP2>:9333,<IP3>:9333 -port=8333 &
# 启动Filer服务
weed filer -master=<IP1>:9333 &

5、Milvus 向量数据库(单机)

# 查看状态
systemctl start milvus
# 启动
systemctl status milvus
# 开机自启
systemctl enable milvus
# 端口校验
netstat -lntp | grep 19530

6、MinIO 对象存储(单机)

#方法 1:进入目录再启动(最不容易错)
cd /opt/minio/bin && ./minio server --address :9010 --console-address :9011 /mnt/minio_data
#方法 2:后台常驻启动(关闭终端不退出,生产常用)
cd /opt/minio/bin
nohup ./minio server --address :9010 --console-address :9011 /mnt/minio_data > /var/log/minio.log 2>&1 &
# 三、查看状态
ps -ef | grep minio
#四、停止命令
pkill -f "minio server"

7、NebulaGraph 图数据库(单机全套)

# 查看状态(推荐)
/usr/local/nebula/scripts/nebula.service status all

# 启动所有组件(标准方式)
/usr/local/nebula/scripts/nebula.service start all

# 停止所有组件
/usr/local/nebula/scripts/nebula.service stop all

# 重启所有组件
/usr/local/nebula/scripts/nebula.service restart all

# 验证端口
netstat -lntp | grep -E "9559|9669|9779"

8、Nginx 反向代理网关

# 修改配置必做:语法检测
nginx -t
# 基础操作
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
# 平滑重载(不中断线上业务)
systemctl reload nginx
systemctl status nginx

9、Nexus 私有仓库

cd /usr/local/nexus/nexus-3.70.4-02/bin
./nexus start
./nexus stop
./nexus status
./nexus restart
ps -ef | grep nexus

10、vsftpd FTP 服务

systemctl start vsftpd
systemctl stop vsftpd
systemctl restart vsftpd
systemctl status vsftpd
systemctl enable vsftpd
netstat -lntp | grep vsftpd

11、Jenkins 自动化部署工具

systemctl start jenkins
systemctl stop jenkins
systemctl restart jenkins
systemctl status jenkins
systemctl enable jenkins
ps -ef | grep jenkins

五、线上真实踩坑复盘

坑 1:微服务报 Redis NOAUTH 认证失败

现象:服务进程正常,但是连接直接拒绝,无法读写缓存

原因:服务器重启后 Redis 认证配置未持久化,主从节点授权失效,集群状态异常

解决:手动重新设置masterauth与访问密码,执行CONFIG REWRITE写入配置文件

总结:只看进程没用,必须校验集群状态 + 账号密码配置

坑 2:Nacos 启动异常,服务注册全部丢失

现象:Nacos 页面空白,微服务无法注册

原因:ZK 未完全启动就绪,提前启动 Nacos,导致注册中心降级异常

解决:停止 Nacos,清理异常缓存数据,严格遵循先 ZK 后 Nacos顺序启动

坑 3:MinIO 启动后自动关闭

现象:手动启动正常,退出终端直接关闭进程

原因:直接前台运行无后台托管

解决:统一使用nohup后台挂载运行,脱离终端会话常驻

六、运维固化铁律

  1. 集群类中间件严格遵守依赖启动顺序,不可逆序启动
  2. Redis 集群重启后,必须校验集群状态与登录认证,避免隐性故障
  3. Nacos 启动优先查看日志,不单纯依赖页面访问判断状态
  4. 常驻服务统一使用nohupsystemd托管,杜绝终端退出进程消亡
  5. Nginx 修改配置先检测语法,再平滑重载,杜绝线上 502

七、全局快速排查命令

# 批量校验所有服务端口
netstat -lntp | grep -E "2181|7001|7002|8848|9333|19530|9010|9011|9559|9669|9779|8081|21"

# 批量查看所有中间件进程
ps -ef | grep -E "zookeeper|redis|nacos|weed|milvus|minio|nebula|nginx|nexus|vsftpd|jenkins"

# 查看systemd托管服务实时日志
journalctl -u jenkins -f

八、文末总结

此文由线上真实生产故障复盘整理而成,从微服务 Redis 连接失败单点报错,逐层排查梳理出整套第三方中间件运维规范。

全文收录 11 款常用服务完整运维命令、集群排错方案、启动顺序规范,属于后端开发与服务器运维刚需干货。


《技术底稿》系列第 38 篇,收藏留存,服务器重启直接照搬执行,告别漫无目的排查,大幅缩减故障恢复时长。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐