欢迎光临
我们一直在努力

SpringCloud 微服务系统 云资源 / 本地资源全流程部署与运维实施方案

SpringCloud 微服务系统 云资源 / 本地资源全流程部署与运维实施方案

一、方案总体概述

1.1 部署架构说明

本方案针对 SpringCloud 微服务全套技术栈,提供本地机房物理资源部署和公有云资源部署两套完整实施流程,覆盖核心组件:Linux 服务器、MySQL 数据库、Redis 缓存、MQ 消息队列(RabbitMQ/RocketMQ)、OSS 对象存储、SpringCloud 微服务集群。 方案涵盖:环境初始化、依赖安装、组件配置、网络互通、日志集成、启停脚本、日常运维、故障排查、权限安全、备份恢复全流程,可直接用于项目上线、运维落地。

1.2 两套部署模式对比

表格

资源类型本地机房部署(物理机 / 虚拟机)公有云部署(阿里云 / 腾讯云)
服务器 CentOS7/CentOS8 物理机 / 本地虚拟机 云 ECS 服务器
数据库 本地自建 MySQL 云 RDS MySQL
缓存 本地自建 Redis 云 Redis 数据库
消息队列 本地自建 MQ(RabbitMQ/RocketMQ) 云消息队列服务
对象存储 本地自建 MinIO 替代 OSS 云 OSS 对象存储
网络 内网局域网、防火墙手动放行 VPC 私有网络、安全组管控

1.3 环境基础要求

  • 操作系统:CentOS 7.9 / CentOS 8(统一 Linux 环境)
  • 运行环境:JDK1.8+/Maven3.6+/Git
  • 网络要求:服务器内网互通、外网可访问(用于拉取依赖、推送镜像)
  • 权限要求:root 或具备 sudo 最高权限
  • 时间要求:所有服务器统一时间、开启 NTP 时间同步

二、通用服务器 Linux 环境初始化(本地 / 云服务器通用)

本步骤为所有 Linux 服务器前置操作,本地物理机、云 ECS 均需执行。

2.1 系统基础优化

# 关闭防火墙(生产可保留,按需放行端口)
systemctl stop firewalld
systemctl disable firewalld

# 关闭SELinux
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

# 安装基础依赖
yum install -y wget curl net-tools vim lsof tree ntp gcc git

# 开启时间同步
systemctl start ntpd
systemctl enable ntpd

# 设置主机名(区分微服务节点)
hostnamectl set-hostname microservice-node01

# 重启生效
reboot

2.2 JDK 环境安装(微服务必备)

# 卸载系统自带openjdk
yum remove -y java*

# 上传jdk1.8压缩包至/usr/local/
tar -zxvf jdk-8u381-linux-x64.tar.gz -C /usr/local/

# 配置环境变量
vim /etc/profile

# 末尾添加
export JAVA_HOME=/usr/local/jdk1.8.0_381
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

# 生效配置
source /etc/profile
java -version

2.3 统一目录规划(标准化运维)

# 统一创建微服务目录结构
mkdir -p /usr/local/micro/{service,config,log,script,jar,backup}

目录说明:service 存放服务包、config 存放配置文件、log 统一日志目录、script 启停脚本、jar 部署包、backup 备份文件。

三、本地资源全套部署方案(自建 MySQL/Redis/MQ/MinIO)

3.1 本地 MySQL 8.0 安装配置

3.1.1 安装部署

# 卸载mariadb
yum remove -y mariadb*

# 下载安装MySQL8.0
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum install -y mysql-community-server

# 启动开机自启
systemctl start mysqld
systemctl enable mysqld

3.1.2 初始化配置

# 查看初始密码
grep 'temporary password' /var/log/mysqld.log

# 登录修改密码
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';

# 开启远程访问
CREATE USER 'root'@'%' IDENTIFIED BY 'Root@123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# 新建微服务专属数据库
CREATE DATABASE micro_service DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3.1.3 日志与备份配置

开启慢查询日志、二进制日志,配置定时备份。

vim /etc/my.cnf
# 添加配置
slow_query_log=1
slow_query_log_file=/usr/local/micro/log/mysql-slow.log
long_query_time=2
log_bin=/usr/local/micro/log/mysql-bin.log

# 重启生效
systemctl restart mysqld

3.2 本地 Redis 6.2 安装配置

3.2.1 编译安装

wget http://download.redis.io/releases/redis-6.2.10.tar.gz
tar -zxvf redis-6.2.10.tar.gz
cd redis-6.2.10
make && make install

3.2.2 核心配置

# 新建配置文件
vim /usr/local/micro/config/redis.conf
# 核心配置
port 6379
bind 0.0.0.0
protected-mode no
requirepass Redis@123456
daemonize yes
logfile "/usr/local/micro/log/redis.log"
dir /usr/local/micro/backup

3.2.3 启停与开机自启

# 启动
redis-server /usr/local/micro/config/redis.conf
# 停止
redis-cli -a Redis@123456 shutdown

3.3 本地 RabbitMQ 安装配置(微服务主流 MQ)

3.3.1 环境与安装

RabbitMQ 依赖 Erlang,统一版本适配。

yum install -y erlang socat
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.0/rabbitmq-server-3.10.0-1.el7.noarch.rpm
rpm -ivh rabbitmq-server-3.10.0-1.el7.noarch.rpm

# 启动自启
systemctl start rabbitmq-server
systemctl enable rabbitmq-server

3.3.2 控制台与用户配置

# 开启管理控制台
rabbitmq-plugins enable rabbitmq_management

# 创建微服务专属用户
rabbitmqctl add_user micro Mq@123456
rabbitmqctl set_permissions -p / micro ".*" ".*" ".*"
rabbitmqctl set_user_tags micro administrator

访问地址:http:// 服务器 IP:15672

3.4 本地 OSS 替代方案:MinIO 部署

无云 OSS 时,使用 MinIO 搭建本地对象存储,完全兼容 OSS 接口,SpringCloud 项目无缝切换。

# 下载MinIO
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/

# 创建存储目录
mkdir -p /usr/local/micro/oss-data

# 配置账号密码
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=Minio@123456

# 后台启动
nohup minio server /usr/local/micro/oss-data –console-address :9001 > /usr/local/micro/log/minio.log 2>&1 &

访问地址:http://IP:9001,支持创建存储桶、对接微服务文件上传下载。

四、云资源部署方案(RDS + 云 Redis + 云 MQ + 云 OSS)

云资源无需手动安装部署,核心为资源创建、网络配置、权限白名单、项目对接,大幅降低运维成本。

4.1 云 RDS MySQL 配置

  • 购买云 RDS MySQL8.0,选择与 ECS 同 VPC 私有网络
  • 设置白名单:添加微服务所有 ECS 内网 IP,放行 3306 端口
  • 创建数据库:micro_service,字符集 utf8mb4
  • 创建专属账号,授权对应数据库权限
  • 开启自动备份、慢查询日志、审计日志
  • 项目配置地址:RDS 内网地址:3306,无需服务器本地安装 MySQL。

    4.2 云 Redis 配置

  • 购买云 Redis 实例,同 VPC 部署
  • 配置 IP 白名单,仅微服务 ECS 可访问
  • 设置实例密码、开启持久化 RDB+AOF
  • 开启慢日志、内存监控、过期淘汰策略
  • 项目直接对接内网 Redis 地址,无需本地部署维护。

    4.3 云消息队列配置

  • 购买云 RabbitMQ/RocketMQ 实例,同 VPC 网络
  • 配置白名单、创建微服务专属账号
  • 提前创建业务交换机、队列、绑定关系
  • 开启消息重试、死信队列、消息日志留存
  • 4.4 云 OSS 对象存储配置

  • 创建 OSS 存储桶,设置私有读写权限
  • 创建 RAM 子账号,分配 OSS 读写权限
  • 配置跨域规则、文件生命周期、防盗链
  • 获取 AccessKey、OSS 内网访问地址,用于项目配置
  • 五、SpringCloud 微服务统一部署流程(本地 / 云环境通用)

    5.1 项目打包

    # 本地开发环境打包
    mvn clean package -Dmaven.test.skip=true

    获取各微服务 jar 包:网关、注册中心、配置中心、业务服务等。

    5.2 微服务核心配置文件适配

    5.2.1 本地资源配置示例

    # application.yml 核心配置
    spring:
    datasource:
    url: jdbc:mysql://本地MySQLIP:3306/micro_service?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: Root@123456
    redis:
    host: 本地RedisIP
    port: 6379
    password: Redis@123456
    rabbitmq:
    host: 本地MQIP
    port: 5672
    username: micro
    password: Mq@123456
    minio:
    endpoint: http://本地MinIOIP:9000
    access-key: minio
    secret-key: Minio@123456

    5.2.2 云资源配置示例

    spring:
    datasource:
    url: jdbc:mysql://云RDS内网地址:3306/micro_service
    username: 云数据库账号
    password: 云数据库密码
    redis:
    host: 云Redis内网地址
    port: 6379
    password: 云Redis密码
    rabbitmq:
    host: 云MQ内网地址
    port: 5672
    username: 云MQ账号
    password: 云MQ密码
    oss:
    endpoint: 云OSS内网地址
    access-key-id: RAM账号AK
    access-key-secret: RAM账号SK
    bucket-name: 存储桶名称

    5.3 统一日志配置(全服务标准化)

    所有微服务统一使用 logback,日志输出至服务器统一目录 /usr/local/micro/log/服务名/,区分 INFO、ERROR 日志,保留 30 天日志。 核心配置:按天分割日志、错误日志单独存储、日志压缩归档、异常堆栈完整输出。

    5.4 通用启停脚本(所有微服务复用)

    创建统一运维脚本 micro.sh,实现一键启动、停止、重启、状态查看。

    #!/bin/bash
    # 微服务通用启停脚本
    SERVICE_NAME=$1
    JAR_PATH=/usr/local/micro/jar/${SERVICE_NAME}.jar
    LOG_PATH=/usr/local/micro/log/${SERVICE_NAME}
    mkdir -p ${LOG_PATH}

    case $2 in
    start)
    nohup java -jar ${JAR_PATH} > ${LOG_PATH}/run.log 2>&1 &
    echo "${SERVICE_NAME} 启动成功"
    ;;
    stop)
    PID=`ps -ef |grep ${SERVICE_NAME}.jar |grep -v grep |awk '{print $2}'`
    kill -9 ${PID}
    echo "${SERVICE_NAME} 停止成功"
    ;;
    restart)
    $0 ${SERVICE_NAME} stop
    sleep 2
    $0 ${SERVICE_NAME} start
    echo "${SERVICE_NAME} 重启成功"
    ;;
    status)
    ps -ef |grep ${SERVICE_NAME}.jar |grep -v grep
    ;;
    esac

    授权使用:

    chmod +x /usr/local/micro/script/micro.sh
    # 使用示例
    ./micro.sh gateway start #启动网关
    ./micro.sh user-service restart #重启用户服务

    六、网络配置方案(本地 / 云环境)

    6.1 本地机房网络

    • 所有服务器统一内网网段,确保互通
    • 防火墙放行核心端口:3306、6379、5672、15672、9000、微服务端口 8080/8090 等
    • 配置内网 DNS 或 hosts 映射,统一服务域名

    6.2 云环境网络

    • 所有资源统一 VPC、同一可用区,降低延迟
    • 安全组最小权限原则:仅放行业务端口、限制 IP 访问
    • 数据库、Redis、MQ 仅对内网 ECS 开放,禁止公网直接访问
    • 网关服务开放公网端口,对外提供接口服务

    七、日常运维完整方案

    7.1 日常巡检项(每日)

    • 服务器:CPU、内存、磁盘、负载、网络流量
    • 微服务:服务运行状态、端口监听、日志报错、接口响应
    • MySQL:连接数、慢查询、磁盘占用、备份状态
    • Redis:内存使用率、key 过期、连接数、持久化状态
    • MQ:队列堆积、消息重试、死信队列数量
    • OSS/MinIO:存储空间、文件上传下载异常

    7.2 定时备份策略

  • MySQL:每日凌晨全量备份,保留 7 天备份,开启 binlog 增量备份
  • Redis:开启 RDB+AOF 持久化,每日手动备份持久化文件
  • 配置文件:所有服务配置、脚本每日打包备份
  • 日志:自动压缩归档,保留 30 天运行日志
  • 7.3 故障基础排查流程

  • 服务无法启动:查看对应服务 run.log 日志,排查端口占用、配置错误、依赖缺失
  • 数据库连接失败:检查网络互通、白名单、账号密码、数据库服务状态
  • Redis 连接超时:检查端口、密码、内存溢出、服务器防火墙
  • MQ 消息堆积:排查消费者服务是否正常、消息异常重试、死信队列
  • 文件上传失败:核对 OSS/MinIO 权限、AK/SK、存储桶配置、网络连通性
  • 7.4 权限安全运维规范

    • 禁止 root 直接运行微服务,创建普通运维用户管理服务
    • 所有组件密码定期更换,禁止弱密码
    • 云资源 AK/SK 禁止明文存储,配置环境变量或配置中心加密
    • 定期清理无效日志、冗余文件、释放磁盘空间

    7.5 自动化备份 & 监控告警脚本

    说明:

  • 所有脚本统一存放路径 /usr/local/micro/script/
  • 脚本日志目录 /usr/local/micro/log/script/
  • 备份文件存放目录 /usr/local/micro/backup/
  • 告警支持邮件,可替换为钉钉 Webhook / 企业微信机器人
  • 环境区分:本地自建组件执行全套备份脚本;云 RDS / 云 Redis / 云 MQ / 云 OSS 无需本地组件备份脚本,仅保留配置备份 + 服务器资源监控
  • 前置准备(所有服务器执行一次)

    # 创建脚本日志目录
    mkdir -p /usr/local/micro/script /usr/local/micro/log/script /usr/local/micro/backup
    # 安装邮件告警依赖
    yum install -y mailx
    # 配置发件邮箱(示例163邮箱)
    vim /etc/mail.rc
    # 文件末尾追加如下内容
    set from="xxx@163.com"
    set smtp="smtp.163.com"
    set smtp-auth-user="xxx@163.com"
    set smtp-auth-password="邮箱授权码"
    set smtp-auth=login

    脚本 1:MySQL 自动备份脚本(本地自建 MySQL)

    文件名:mysql_backup.sh

    #!/bin/bash
    # MySQL备份脚本
    BACKUP_DIR="/usr/local/micro/backup/mysql"
    LOG_FILE="/usr/local/micro/log/script/mysql_backup.log"
    DB_NAME="micro_service"
    DB_USER="root"
    DB_PASS="Root@123456"
    RETENTION_DAYS=7 #保留7天备份

    # 创建目录
    mkdir -p ${BACKUP_DIR}
    DATE=$(date +%Y%m%d_%H%M%S)
    BACKUP_FILE=${BACKUP_DIR}/${DB_NAME}_${DATE}.sql.gz

    # 备份
    echo "===== ${DATE} 开始mysql备份 =====" >> ${LOG_FILE}
    mysqldump -u${DB_USER} -p${DB_PASS} ${DB_NAME} –single-transaction –quick –lock-tables=false | gzip > ${BACKUP_FILE}

    # 判断备份结果
    if [ $? -eq 0 ];then
    echo "备份成功:${BACKUP_FILE}" >> ${LOG_FILE}
    else
    echo "MySQL备份失败!" >> ${LOG_FILE}
    echo "【告警】MySQL数据库备份失败" | mail -s "【微服务告警】MySQL备份失败" 接收告警邮箱@shturl.
    fi

    # 删除7天前旧备份
    find ${BACKUP_DIR} -name "*.sql.gz" -mtime +${RETENTION_DAYS} -delete
    echo "===== 本次备份结束 =====" >> ${LOG_FILE}

    授权命令:

    chmod +x /usr/local/micro/script/mysql_backup.sh

    云 RDS 说明:不需要 mysqldump 备份脚本,云实例自带自动备份,仅保留数据库配置备份。

    脚本 2:Redis 持久化文件备份脚本(本地自建 Redis)

    文件名:redis_backup.sh

    #!/bin/bash
    # Redis备份:拷贝rdb/aof持久化文件
    BACKUP_DIR="/usr/local/micro/backup/redis"
    LOG_FILE="/usr/local/micro/log/script/redis_backup.log"
    RETENTION_DAYS=7
    # redis rdb目录(必须和redis.conf dir配置保持一致)
    REDIS_DATA="/usr/local/micro/backup"

    mkdir -p ${BACKUP_DIR}
    DATE=$(date +%Y%m%d_%H%M%S)
    echo "===== ${DATE} Redis备份开始 =====" >> ${LOG_FILE}
    cp ${REDIS_DATA}/dump.rdb ${BACKUP_DIR}/dump_${DATE}.rdb

    if [ $? -eq 0 ];then
    echo "Redis RDB备份成功" >> ${LOG_FILE}
    else
    echo "Redis备份失败" >> ${LOG_FILE}
    echo "【告警】Redis备份失败" | mail -s "【微服务告警】Redis备份失败" 接收告警邮箱@shturl.
    fi

    find ${BACKUP_DIR} -name "*.rdb" -mtime +${RETENTION_DAYS} -delete
    echo "===== Redis备份结束 =====" >> ${LOG_FILE}

    授权命令:

    chmod +x /usr/local/micro/script/redis_backup.sh

    脚本 3:MinIO 本地对象存储备份脚本(本地自建 OSS)

    MinIO 不推荐直接拷贝底层数据目录,使用 mc 客户端同步 bucket 文件名:minio_backup.sh

    #!/bin/bash
    BACKUP_DIR="/usr/local/micro/backup/minio"
    LOG_FILE="/usr/local/micro/log/script/minio_backup.log"
    RETENTION_DAYS=7
    DATE=$(date +%Y%m%d_%H%M%S)
    mkdir -p ${BACKUP_DIR}

    # 提前执行mc客户端别名配置:mc alias set minio http://127.0.0.1:9000 minio Minio@123456
    echo "===== ${DATE} MinIO备份开始 =====" >> ${LOG_FILE}
    mc mirror minio/bucketname ${BACKUP_DIR}/bucket_${DATE}
    if [ $? -eq 0 ];then
    echo "MinIO bucket备份成功" >> ${LOG_FILE}
    else
    echo "MinIO备份失败" >> ${LOG_FILE}
    echo "【告警】MinIO对象存储备份失败" | mail -s "【微服务告警】MinIO备份失败" 接收告警邮箱@shturl.
    fi

    find ${BACKUP_DIR} -type d -mtime +${RETENTION_DAYS} -exec rm -rf {} \\;
    echo "===== MinIO备份结束 =====" >> ${LOG_FILE}

    授权命令:

    chmod +x /usr/local/micro/script/minio_backup.sh

    脚本 4:系统 & 微服务配置文件统一备份脚本

    文件名:config_backup.sh

    #!/bin/bash
    # 微服务配置、组件配置文件打包备份
    BACKUP_DIR="/usr/local/micro/backup/config"
    LOG_FILE="/usr/local/micro/log/script/config_backup.log"
    RETENTION_DAYS=15
    DATE=$(date +%Y%m%d_%H%M%S)
    mkdir -p ${BACKUP_DIR}

    TAR_FILE=${BACKUP_DIR}/micro_config_${DATE}.tar.gz

    # 需要备份的目录:所有核心配置文件
    tar -zcvf ${TAR_FILE} \\
    /usr/local/micro/config \\
    /usr/local/micro/script \\
    /etc/my.cnf \\
    /usr/local/micro/config/redis.conf \\
    /etc/rabbitmq

    if [ $? -eq 0 ];then
    echo "配置文件备份成功:${TAR_FILE}" >> ${LOG_FILE}
    else
    echo "配置备份失败" >> ${LOG_FILE}
    echo "【告警】微服务配置文件备份失败" | mail -s "【微服务告警】配置备份失败" 接收告警邮箱@shturl.
    fi

    find ${BACKUP_DIR} -name "*.tar.gz" -mtime +${RETENTION_DAYS} -delete
    echo "=====配置备份结束 =====" >> ${LOG_FILE}

    授权命令:

    chmod +x /usr/local/micro/script/config_backup.sh

    脚本 5:服务器资源监控脚本(CPU / 内存 / 磁盘 / 端口)

    文件名:server_monitor.sh

    定时采集服务器资源,超过阈值触发告警

    #!/bin/bash
    LOG_FILE="/usr/local/micro/log/script/server_monitor.log"
    DATE=$(date "+%Y-%m-%d %H:%M:%S")

    # 1 CPU使用率
    CPU=$(top -b -n1 | grep Cpu | awk '{print $2}' | cut -f1 -d"%")
    CPU_THRESHOLD=85

    #2 内存使用率
    MEM=$(free | awk '/Mem/{printf("%.0f"),$3/$2*100}')
    MEM_THRESHOLD=85

    #3 磁盘使用率(根分区)
    DISK=$(df -h / | awk '/\\//{gsub(/%/,"");print $5}')
    DISK_THRESHOLD=85

    echo "==== ${DATE} 监控采集 ====" >> ${LOG_FILE}
    echo "CPU:${CPU}%, MEM:${MEM}%, DISK:${DISK}%" >> ${LOG_FILE}

    ALERT_MSG=""
    if (( $(echo "${CPU} > ${CPU_THRESHOLD}" | bc -l) ));then
    ALERT_MSG+="CPU使用率超过阈值${CPU}%;"
    fi
    if (( $(echo "${MEM} > ${MEM_THRESHOLD}" | bc -l) ));then
    ALERT_MSG+="内存使用率超过阈值${MEM}%;"
    fi
    if [ ${DISK} -gt ${DISK_THRESHOLD} ];then
    ALERT_MSG+="根磁盘使用率超过阈值${DISK}%;"
    fi

    # 检查微服务网关端口(示例8080,按需修改)
    NETSTAT_PORT=$(lsof -i:8080 | wc -l)
    if [ ${NETSTAT_PORT} -eq 0 ];then
    ALERT_MSG+="网关服务端口8080未监听,服务可能宕机;"
    fi

    # 有告警就发送邮件
    if [ -n "${ALERT_MSG}" ];then
    echo "告警内容:${ALERT_MSG}" >> ${LOG_FILE}
    echo "【资源告警】${ALERT_MSG}" | mail -s "【微服务服务器告警】资源超阈值" 接收告警邮箱@shturl.
    fi

    授权命令:

    chmod +x /usr/local/micro/script/server_monitor.sh

    脚本 6:RabbitMQ 队列堆积监控脚本

    文件名:rabbitmq_monitor.sh

    #!/bin/bash
    LOG_FILE="/usr/local/micro/log/script/rabbitmq_monitor.log"
    DATE=$(date "+%Y-%m-%d %H:%M:%S")
    # rabbitmq账号密码
    RABBIT_USER=micro
    RABBIT_PASS=Mq@123456
    QUEUE_NAME=business_queue
    THRESHOLD=1000 #堆积超过1000条触发告警

    # 获取队列消息数量
    QUEUE_COUNT=$(rabbitmqctl list_queues | grep ${QUEUE_NAME}|awk '{print $2}')
    echo "${DATE} Queue:${QUEUE_NAME} 消息数量:${QUEUE_COUNT}" >> ${LOG_FILE}

    if [ ${QUEUE_COUNT} -gt ${THRESHOLD} ];then
    MSG="RabbitMQ队列【${QUEUE_NAME}】消息堆积${QUEUE_COUNT}条,超过阈值${THRESHOLD}"
    echo ${MSG} >> ${LOG_FILE}
    echo ${MSG} | mail -s "【MQ告警】消息队列堆积" 接收告警邮箱@shturl.
    fi

    授权命令:

    chmod +x /usr/local/micro/script/rabbitmq_monitor.sh

    钉钉 Webhook 告警替换方案(可选,替代邮件)

    将脚本内 mail 发送告警代码替换为下面钉钉函数:

    # 钉钉告警函数
    send_ding(){
    CONTENT=$1
    curl -s https://oapi.dingtalk.com/robot/send?access_token=你的机器人token \\
    -H "Content-Type: application/json" \\
    -d "{\\"msgtype\\":\\"text\\",\\"text\\":{\\"content\\":\\"${CONTENT}\\"}}"
    }
    # 调用示例
    send_ding "【告警】MySQL备份失败"

    7.6 Crontab 定时调度配置

    执行 crontab -e,粘贴如下定时任务:

    # 凌晨2点 MySQL备份
    0 2 * * * /usr/local/micro/script/mysql_backup.sh
    # 凌晨3点 Redis备份
    0 3 * * * /usr/local/micro/script/redis_backup.sh
    # 凌晨4点 MinIO备份
    0 4 * * * /usr/local/micro/script/minio_backup.sh
    # 每周日凌晨1点 全量配置文件备份
    0 1 * * 0 /usr/local/micro/script/config_backup.sh
    # 每5分钟 服务器资源监控
    */5 * * * * /usr/local/micro/script/server_monitor.sh
    # 每10分钟 MQ队列监控
    */10 * * * /usr/local/micro/script/rabbitmq_monitor.sh

    查看定时任务:crontab -l

    上线前必须手动执行脚本验证可用性,再加入定时任务 手动测试示例:/usr/local/micro/script/mysql_backup.sh

    7.7 日志自动清理脚本

    文件名:log_clean.sh,防止日志持续占满磁盘

    #!/bin/bash
    # 清理30天之前日志
    LOG_BASE=/usr/local/micro/log
    RETENTION=30
    find ${LOG_BASE} -type f -name "*.log" -mtime +${RETENTION} -delete
    find ${LOG_BASE} -type f -name "*.gz" -mtime +${RETENTION} -delete

    授权:

    chmod +x /usr/local/micro/script/log_clean.sh

    crontab 新增,每天凌晨 5 点自动清理日志

    0 5 * * * /usr/local/micro/script/log_clean.sh

    7.8 脚本运维注意事项
  • 云资源环境:RDS、云 Redis、云 MQ、云 OSS禁用本地组件备份脚本,仅保留config_backup.sh、server_monitor.sh,云侧监控使用云厂商监控,脚本作为兜底。
  • 用户权限:禁止 root 账号运行业务微服务;备份、监控脚本可使用 root 执行。
  • 磁盘规划:备份目录建议独立挂载数据盘,避免备份文件占满系统盘导致业务宕机。
  • 安全规范:脚本内明文密码存在安全风险,生产环境建议将密码抽离至独立加密配置文件,禁止硬编码。
  • 版本变更:修改脚本后,先本地测试执行,确认无报错再上线定时任务。
  • 八、两种部署方案选型总结

    8.1 本地资源部署适用场景

    私有化部署、内网隔离项目、预算有限、数据绝对本地留存场景,优点是自主可控、无云服务费,缺点是运维工作量大、需要自主维护组件升级、故障处理、备份扩容。

    8.2 云资源部署适用场景

    互联网线上项目、需要弹性扩容、快速上线、减少运维成本场景,优点是高可用、免运维、弹性伸缩、自带监控备份,缺点是长期云服务费用较高、依赖公有云环境。

    赞(0)
    未经允许不得转载:171主机测评 » SpringCloud 微服务系统 云资源 / 本地资源全流程部署与运维实施方案
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址