提交 5cf6083e authored 作者: 陈泽健's avatar 陈泽健

docs(security): 更新漏洞修复文档和镜像组件升级计划

- 添加 Nacos 权限绕过修复实际操作步骤文档
- 添加 MQTT 协议弱口令匿名登录修复实际操作步骤文档
- 创建远程升级镜像组件版本需求文档
- 创建远程升级镜像组件版本计划执行文档
- 记录 X86 和 ARM 服务器组件版本升级对照表
- 制定详细的升级执行计划和验证清单
- 提供完整的回滚方案和风险缓解措施
上级 820c126c
# 05-Nacos权限绕过修复 — 实际操作步骤
> 修复时间:2026-05-29
> 服务器:192.168.5.52
> Nacos 版本:2.5.2(容器名:unacos)
> nacos配置文件挂载路径:``
> nacos部署脚本:```
> nginx配置文件路径:
---
## 修复结果总览
| 验证项 | 结果 |
|--------|------|
| 旧头 `nacos: nacos` 绕过认证 | ✅ 已拒绝(403 Forbidden) |
| 无认证头访问 | ✅ 已拒绝(403 Forbidden) |
| 新 identity 头访问 | ✅ 正常可用(200 OK) |
| 微服务注册(14 个服务) | ✅ 全部正常 |
| Nginx 限制公网访问 Nacos 控制台 | ✅ 仅内网可访问 |
| 所有容器状态 | ✅ 全部正常运行 |
---
## 实际执行的操作
### 步骤 1:备份 Nacos 配置
```bash
# 容器内备份
docker exec unacos cp /home/nacos/conf/application.properties \
/home/nacos/conf/application.properties.bak.20260529
# 拷贝到宿主机
docker cp unacos:/home/nacos/conf/application.properties \
/tmp/nacos-application-backup.properties
```
### 步骤 2:生成随机 identity 值
```bash
# 生成 identity key(32位随机字符串)
IDENTITY_KEY=$(cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 32)
# 结果: jFL309cppMFZrqyV8JhR9ss5QqEZEN2k
# 生成 identity value(32位随机字符串)
IDENTITY_VALUE=$(cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 32)
# 结果: Zow4EBPa7D6X6WLcOOL0L2al64jIticI
# 生成新的 token secret key(Base64 编码)
NEW_TOKEN_SECRET=$(openssl rand -base64 32)
# 结果: 8+6XfqfuuE2fqBAJyUoGUHcRFHgC5UZinNv8LGJyrHA=
```
### 步骤 3:修改 application.properties
配置文件位于宿主机挂载路径:`/data/middleware/nacos/conf/application.properties`
```bash
# 替换 identity key
sed -i 's|nacos.core.auth.server.identity.key=.*|nacos.core.auth.server.identity.key=jFL309cppMFZrqyV8JhR9ss5QqEZEN2k|g' \
/data/middleware/nacos/conf/application.properties
# 替换 identity value
sed -i 's|nacos.core.auth.server.identity.value=.*|nacos.core.auth.server.identity.value=Zow4EBPa7D6X6WLcOOL0L2al64jIticI|g' \
/data/middleware/nacos/conf/application.properties
# 替换 token secret key
sed -i 's|nacos.core.auth.plugin.nacos.token.secret.key=.*|nacos.core.auth.plugin.nacos.token.secret.key=8+6XfqfuuE2fqBAJyUoGUHcRFHgC5UZinNv8LGJyrHA=|g' \
/data/middleware/nacos/conf/application.properties
```
修改后配置确认:
```
nacos.core.auth.server.identity.key=jFL309cppMFZrqyV8JhR9ss5QqEZEN2k
nacos.core.auth.server.identity.value=Zow4EBPa7D6X6WLcOOL0L2al64jIticI
nacos.core.auth.plugin.nacos.token.secret.key=8+6XfqfuuE2fqBAJyUoGUHcRFHgC5UZinNv8LGJyrHA=
```
### 步骤 4:重启 Nacos
```bash
docker restart unacos
# 等待约 30 秒启动完成
# 检查: curl http://127.0.0.1:8848/nacos/ 返回 200
```
### 步骤 5:重启 Java 微服务
token secret key 变更后,微服务缓存的 JWT 失效,需要重启重新用 username/password 认证:
```bash
docker restart ujava2
# 等待约 90 秒让 7 个 Java 服务全部启动
# 检查: docker logs ujava2 最后一行显示 "成功启动: 7"
```
### 步骤 6:Nginx 限制 Nacos 控制台仅内网访问
编辑 `/etc/nginx/conf.d/unified443.conf`,在 `location /nacos/` 块中添加 IP 白名单:
```nginx
#nacos转发(仅内网访问)
location /nacos/ {
allow 172.17.0.0/16;
allow 127.0.0.1;
deny all;
rewrite ^/api/(.*)$ /$1 break;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.17.0.1:8848/nacos/;
}
```
```bash
# 备份 Nginx 配置
docker exec unginx cp /etc/nginx/conf.d/unified443.conf \
/etc/nginx/conf.d/unified443.conf.bak
# 测试并重载
docker exec unginx nginx -t
docker exec unginx nginx -s reload
```
### 步骤 7:验证
```bash
# 1. 旧头 nacos:nacos → 应返回 403
curl -s -w "\nHTTP:%{http_code}" \
"http://127.0.0.1:8848/nacos/v1/auth/users?search=blur&pageNo=1&pageSize=10" \
-H "nacos: nacos"
# 结果: 403 Forbidden ✓
# 2. 无认证头 → 应返回 403
curl -s -w "\nHTTP:%{http_code}" \
"http://127.0.0.1:8848/nacos/v1/auth/users?search=blur&pageNo=1&pageSize=10"
# 结果: 403 Forbidden ✓
# 3. 新 identity 头 → 应返回 200
curl -s -w "\nHTTP:%{http_code}" \
"http://127.0.0.1:8848/nacos/v1/auth/users?search=blur&pageNo=1&pageSize=10" \
-H "jFL309cppMFZrqyV8JhR9ss5QqEZEN2k: Zow4EBPa7D6X6WLcOOL0L2al64jIticI"
# 结果: 200 OK,返回用户列表 ✓
# 4. 微服务注册列表 → 应返回 14+ 个服务
curl -s "http://127.0.0.1:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=50" \
-H "jFL309cppMFZrqyV8JhR9ss5QqEZEN2k: Zow4EBPa7D6X6WLcOOL0L2al64jIticI"
# 结果: count=14 ✓
```
---
## 关键信息
| 项目 | 值 |
|------|------|
| 新 identity key | `jFL309cppMFZrqyV8JhR9ss5QqEZEN2k` |
| 新 identity value | `Zow4EBPa7D6X6WLcOOL0L2al64jIticI` |
| 新 token secret key | `8+6XfqfuuE2fqBAJyUoGUHcRFHgC5UZinNv8LGJyrHA=` |
| Nacos 用户 | nacos / dNrprU&2S(未变动) |
---
## 回滚方案
```bash
# 1. 恢复 Nacos 配置
docker cp /tmp/nacos-application-backup.properties \
unacos:/home/nacos/conf/application.properties
docker restart unacos
sleep 30
# 2. 重启 Java 微服务
docker restart ujava2
# 3. 恢复 Nginx 配置
docker exec unginx cp /etc/nginx/conf.d/unified443.conf.bak \
/etc/nginx/conf.d/unified443.conf
docker exec unginx nginx -s reload
```
# 06-MQTT协议弱口令匿名登录修复 — 实际操作步骤
> 修复时间:2026-05-29
> 服务器:192.168.5.52
> EMQX 版本:5.8.7(容器名:uemqx)
## 修复思路
**只做两件事:**
1. 开启 EMQX 密码认证,禁止匿名连接
2. 将现有业务凭据 `mqtt@cmdb / mqtt@webpassw0RD` 注册为合法用户
**不改密码、不改前端配置、不改后端配置,业务零影响。**
---
## 操作步骤
### 步骤 1:开启 EMQX 密码认证
在 EMQX 容器内创建认证配置并加载:
```bash
# 创建认证配置文件
cat > /tmp/enable_auth.conf << 'EOF'
authentication = [
{
backend = "built_in_database"
mechanism = "password_based"
password_hash_algorithm {
name = "sha256"
salt_position = "suffix"
}
user_id_type = "username"
}
]
EOF
# 复制到容器内并加载
docker cp /tmp/enable_auth.conf uemqx:/tmp/enable_auth.conf
docker exec uemqx emqx ctl conf load --replace /tmp/enable_auth.conf
```
输出:`load authentication on cluster ok`
### 步骤 2:注册现有凭据为合法用户
```bash
# 登录 Dashboard 获取 Token
TOKEN=$(docker exec uemqx curl -s -X POST "http://127.0.0.1:18083/api/v5/login" \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "Admin@2026Secure"}' | python3 -c "import sys,json; print(json.load(sys.stdin)['token'])")
# 注册现有业务凭据
docker exec uemqx curl -s -X POST \
"http://127.0.0.1:18083/api/v5/authentication/password_based:built_in_database/users" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"user_id": "mqtt@cmdb", "password": "mqtt@webpassw0RD", "is_superuser": false}'
```
输出:`{"is_superuser":false,"user_id":"mqtt@cmdb"}`
### 步骤 3:验证
```python
python3 << 'EOF'
import socket
# 验证1: 匿名连接 → 应被拒绝
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect(('192.168.5.56', 1883))
client_id = b'test_anon'
var_header = bytes([0,4]) + b'MQTT' + bytes([4, 2, 0, 60])
payload = bytes([0, len(client_id)]) + client_id
s.send(bytes([0x10, len(var_header) + len(payload)]) + var_header + payload)
resp = s.recv(4)
rc = resp[3]
print("匿名连接:", "已拒绝 ✓" if rc != 0 else "仍允许 ✗")
s.close()
# 验证2: 现有凭据 → 应正常可用
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect(('192.168.5.56', 1883))
client_id = b'test_cred'
username, password = b'mqtt@cmdb', b'mqtt@webpassw0RD'
var_header = bytes([0,4]) + b'MQTT' + bytes([4, 0xC2, 0, 60])
payload = bytes([0, len(client_id)]) + client_id
payload += bytes([0, len(username)]) + username
payload += bytes([0, len(password)]) + password
s.send(bytes([0x10, len(var_header) + len(payload)]) + var_header + payload)
resp = s.recv(4)
rc = resp[3]
print("现有凭据:", "认证成功 ✓" if rc == 0 else f"失败 ✗ (rc={rc})")
s.close()
EOF
```
验证结果:
```
匿名连接: 已拒绝 ✓
现有凭据: 认证成功 ✓
```
---
## 验证结果
| 验证项 | 结果 |
|--------|------|
| 匿名连接被拒绝 | ✅ 返回码=4(需认证) |
| 现有凭据 mqtt@cmdb 正常可用 | ✅ 返回码=0(认证成功) |
| EMQX 服务运行正常 | ✅ 5.8.7 running |
| MQTT 客户端进程正常 | ✅ 10 个活跃连接 |
| 前端/后端配置无变动 | ✅ 业务零影响 |
---
## 回滚方案
```bash
# 恢复匿名访问(如需回退)
cat > /tmp/rollback.conf << 'EOF'
authentication = []
EOF
docker cp /tmp/rollback.conf uemqx:/tmp/rollback.conf
docker exec uemqx emqx ctl conf load --replace /tmp/rollback.conf
```
# 远程升级镜像组件版本_计划执行文档
## 上下文
根据 `_PRD_远程升级镜像组件版本_需求文档.md` 的要求,对X86(192.168.5.52)和ARM(192.168.9.75)两台服务器的镜像组件进行版本升级。
---
## 一、版本对照表
| 组件 | X86当前 | ARM当前 | 升级目标版本 | 备注 |
|------|---------|---------|-------------|------|
| JDK(容器) | 1.8.0_201 | 1.8.0_321 | **1.8.0_491** | Oracle最新8u版本 |
| MySQL | 8.0.x | 8.0.28 | **8.x最新** | 只能升级8.x,禁止跨非8.x |
| Nginx | 1.29.3 | 1.30.0 | **1.30.2** | 官方stable最新 |
| Redis | 8.2.2 | 8.2.2 | **8.8.x** | 官方最新开源版 |
| EMQX | 5.8.7 | 5.8.7 | **6.0.2** | 官方最新主版本 |
| Nacos | v2.5.2 | v2.5.1 | **v2.5.2**(ARM升级) | 禁止跨3.x,ARM需从2.5.1升到2.5.2 |
| Docker | 29.1.3 | 29.4.3 | **仅记录最新版本,不执行升级** | 当前不升级,记录备查 |
---
## 二、升级执行计划
### 步骤1:升级JDK(容器内)
**X86服务器 (192.168.5.52)**
- [ ] 1.1 下载 `jdk-8u491-linux-x64.tar.gz` 到服务器
- [ ] 1.2 备份当前容器启动参数:`docker inspect ujava2 > /tmp/ujava2_inspect.json`
- [ ] 1.3 将新JDK复制进容器:`docker cp jdk-8u491-linux-x64.tar.gz ujava2:/tmp/`
- [ ] 1.4 进入容器替换JDK(⚠️需确认JDK路径)
- [ ] 1.5 commit新镜像:`docker commit ujava2 139.9.60.86:5000/ujava:v7`
- [ ] 1.6 验证:`docker exec ujava2 java -version` → 应输出 1.8.0_491
- [ ] 1.7 检查服务日志无异常
- [ ] 1.8 打包新镜像:`docker save 139.9.60.86:5000/ujava:v7 | gzip > /data/offline_auto_unifiedPlatform/data/temp/java_new.tar.gz`
- [ ] 1.9 ⚠️ 确认是否替换旧包 `jdk-8u472-linux-x64.tar.gz`
**ARM服务器 (192.168.9.75)**
- [ ] 1.10 下载 `jdk-8u491-linux-aarch64.tar.gz` 到服务器
- [ ] 1.11 同上述1.2-1.9步骤,对ARM的ujava2容器执行
- [ ] 1.12 打包替换 `/data/arm_offline_auto_unifiedPlatform/data/temp/arm_java1.8.0_321.tar`
### 步骤2:升级MySQL
> 需求:只能升级到8.x版本,禁止升级非8.x版本。需先确认当前MySQL容器具体版本。
**X86服务器 (192.168.5.52)**
- [ ] 2.1 确认当前MySQL版本:`docker exec umysql mysql --version`
- [ ] 2.2 备份MySQL数据:`docker exec umysql mysqldump -u root -p --all-databases > /tmp/mysql_backup.sql`(⚠️需确认密码)
- [ ] 2.3 备份完整容器参数:`docker inspect umysql > /tmp/umysql_inspect.json`
- [ ] 2.4 拉取新镜像:`docker pull mysql:8.x`(⚠️需确认具体8.x最新版本号)
- [ ] 2.5 停止旧容器:`docker stop umysql && docker rm umysql`
- [ ] 2.6 用新镜像+原配置/数据卷启动新容器(⚠️需确认完整docker run参数)
- [ ] 2.7 验证:`docker exec umysql mysql --version` → 应输出8.x新版本
- [ ] 2.8 检查数据库连接正常,Nacos等依赖MySQL的服务可正常访问
- [ ] 2.9 打包替换镜像目录旧包
**ARM服务器 (192.168.9.75)**
- [ ] 2.10 同上述流程,使用ARM版mysql:8.x镜像
- [ ] 2.11 打包替换 `/data/arm_offline_auto_unifiedPlatform/data/temp/arm_mysql8.0.28.tar`
### 步骤3:升级Nginx
**X86服务器 (192.168.5.52) — 1.29.3 → 1.30.2**
- [ ] 3.1 备份配置:`docker cp unginx:/etc/nginx/nginx.conf /tmp/nginx.conf.bak`
- [ ] 3.2 备份完整容器参数:`docker inspect unginx > /tmp/unginx_inspect.json`
- [ ] 3.3 拉取新镜像:`docker pull nginx:1.30.2`
- [ ] 3.4 停止旧容器:`docker stop unginx && docker rm unginx`
- [ ] 3.5 用新镜像+原配置/挂载启动新容器(⚠️需确认完整docker run参数)
- [ ] 3.6 验证:`docker exec unginx nginx -v` → 应输出 1.30.2
- [ ] 3.7 测试代理功能:`curl -k https://127.0.0.1/` 可正常访问
- [ ] 3.8 打包:`docker save nginx:1.30.2 | gzip > /data/offline_auto_unifiedPlatform/data/temp/nginx-1.30.2.tar.gz`
- [ ] 3.9 ⚠️ 确认是否删除旧包 `nginx-1.29.3.tar.gz`
**ARM服务器 (192.168.9.75) — 1.30.0 → 1.30.2**
- [ ] 3.10 拉取ARM版镜像:`docker pull --platform arm64 nginx:1.30.2`
- [ ] 3.11 同上述备份/替换/验证/打包流程
- [ ] 3.12 打包替换 `/data/arm_offline_auto_unifiedPlatform/data/temp/arm_nginx_v1.30.tar.gz`
### 步骤4:升级Redis
**X86服务器 (192.168.5.52) — 8.2.2 → 8.8.x**
- [ ] 4.1 备份配置:`docker cp uredis:/usr/local/etc/redis/redis.conf /tmp/redis.conf.bak`
- [ ] 4.2 备份完整容器参数:`docker inspect uredis > /tmp/uredis_inspect.json`
- [ ] 4.3 拉取新镜像:`docker pull redis:8.8`
- [ ] 4.4 停止旧容器:`docker stop uredis && docker rm uredis`
- [ ] 4.5 用新镜像+原配置/挂载启动新容器(⚠️需确认完整docker run参数)
- [ ] 4.6 验证:`docker exec uredis redis-server --version` → 应输出 8.8.x
- [ ] 4.7 测试连接:`docker exec uredis redis-cli ping` → PONG
- [ ] 4.8 检查依赖Redis的服务正常(运维服务等)
- [ ] 4.9 打包替换镜像目录旧包
**ARM服务器 (192.168.9.75)**
- [ ] 4.10 同上述流程,使用ARM版redis:8.8镜像
- [ ] 4.11 打包替换 `/data/arm_offline_auto_unifiedPlatform/data/temp/arm_redis8.2.2.tar.gz`
### 步骤5:升级EMQX
**X86服务器 (192.168.5.52) — 5.8.7 → 6.0.2**
- [ ] 5.1 备份EMQX数据卷和配置
- [ ] 5.2 备份完整容器参数:`docker inspect uemqx > /tmp/uemqx_inspect.json`
- [ ] 5.3 拉取新镜像:`docker pull emqx/emqx:6.0.2`
- [ ] 5.4 停止旧容器:`docker stop uemqx && docker rm uemqx`
- [ ] 5.5 用新镜像+原配置启动新容器(⚠️需确认完整docker run参数,6.x配置格式可能有变化)
- [ ] 5.6 验证:`docker exec uemqx emqx ctl broker` → 应输出 6.0.2
- [ ] 5.7 测试MQTT连接正常
- [ ] 5.8 重启依赖MQTT的服务(ujava2等),检查重连成功
- [ ] 5.9 打包替换镜像目录旧包
**ARM服务器 (192.168.9.75)**
- [ ] 5.10 同上述流程,使用ARM版emqx/emqx:6.0.2镜像
- [ ] 5.11 打包替换 `/data/arm_offline_auto_unifiedPlatform/data/temp/arm_uemqx5.8.7.tar.gz`
### 步骤6:升级Nacos(仅ARM需升级)
**X86服务器** — 当前已是v2.5.2,无需升级。
**ARM服务器 (192.168.9.75) — v2.5.1 → v2.5.2**
- [ ] 6.1 备份Nacos数据卷和配置
- [ ] 6.2 备份完整容器参数:`docker inspect unacos > /tmp/unacos_inspect.json`
- [ ] 6.3 拉取新镜像:`docker pull nacos/nacos-server:v2.5.2`
- [ ] 6.4 停止旧容器:`docker stop unacos && docker rm unacos`
- [ ] 6.5 用新镜像+原配置启动新容器(⚠️需确认完整docker run参数)
- [ ] 6.6 验证Nacos控制台可访问
- [ ] 6.7 检查服务注册列表正常
- [ ] 6.8 打包替换 `/data/arm_offline_auto_unifiedPlatform/data/temp/arm_nacos-server-v2.5.1.tar.gz`
---
## 三、每步验证清单
每个组件升级后执行:
- [ ] 容器运行状态:`docker ps` 确认 Up
- [ ] 版本确认:对应版本命令确认新版本
- [ ] 日志检查:`docker logs <container> --tail 50` 无ERROR
- [ ] 服务日志检查:检查预定/运维/讯飞服务日志无异常
- [ ] 接口测试:
- `curl -k https://服务器IP/exapi/message/getMsgPageList` → 返回"无效token"
- `curl -k https://服务器IP/monitor/api2/api/servermonitor/` → 正常响应
---
## 四、回滚方案
每个组件升级前:
1. 导出容器完整参数 `docker inspect <container> > /tmp/<container>_inspect.json`
2. 备份配置文件到 `/tmp/`
3. 保留旧镜像不删除
4. 异常时用旧镜像+备份配置重新启动容器
---
## 五、风险点
| 风险 | 影响 | 缓解措施 |
|------|------|----------|
| EMQX 5.8.7→6.0.2 主版本升级 | MQTT协议/配置不兼容 | 先在X86测试,确认后再升级ARM |
| MySQL 8.0.x→8.x最新 | 数据兼容性、Nacos等服务连接 | 先mysqldump全量备份,保留旧容器 |
| JDK容器替换 | 可能影响Java服务 | 先commit备份,失败可回滚 |
| Nginx 1.29→1.30 | 配置格式变化 | 备份原配置,逐步验证 |
| Redis 8.2→8.8 | 数据兼容性 | dump.rdb通常向后兼容 |
---
## 六、输出物
- 升级日志:`AuxiliaryTool/ScriptTool/RemoteDeploy/reports/镜像组件升级日志_YYYYMMDD.log`
- 升级分析报告:`AuxiliaryTool/ScriptTool/RemoteDeploy/reports/镜像组件升级报告_YYYYMMDD.md`
# 远程升级镜像组件_需求文档
## 相关资料要求
### 部署包路径
- ARM架构:/data/arm_offline_auto_unifiedPlatform。
- ARM架构-镜像目录:/data/arm_offline_auto_unifiedPlatform/data/temp
- X86架构:/data/offline_auto_unifiedPlatform。
- X86架构-镜像目录:/data/offline_auto_unifiedPlatform/data/temp
### 目标服务器
- X86架构服务器:192.168.5.52 root Ubains@123
- ARM架构服务器:192.168.9.75 root Ubains@123
### 相关服务路径
- 预定对外服务宿主机日志路径:/data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log
- 预定对内服务宿主机日志路径:/data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
- 运维服务宿主机日志路径:/data/services/api/python-cmdb/log/uinfo.log
- 讯飞服务宿主机日志路径:/data/services/api/python-voice/log/uinfo.log
### 相关系统网址
- 新统一平台前台地址:https://服务器IP/
## 组件清单
- jdk:只能升级1.8.X版本,禁止升级非1.8.X版本
- mysql:只能升级到8.x版本,禁止升级非8.x版本
- nacos:按照当前官方最高版本进行升级,禁止跨越到3.x版本,只能在2.5.X版本进行升级
- redis:按照当前官方最高版本进行升级
- emqx:按照当前官方最高版本进行升级
- nginx:按照当前官方最高版本进行升级
- docker:可以先记录最新的版本,先不执行升级操作。
## 容器说明
- ujava容器:需升级jdk
- ungin容器:需升级nginx组件
- uredis容器:需升级redis版本
- uemqx容器:需升级emqx版本
- unacos容器:需升级nacos版本,禁止跨越到3.x版本,只能在2.5.X版本进行升级。
## 宿主机说明
- 需升级jdk版本,按照官网升级为1.8.X版本。
## 升级目标
- X86架构服务器和ARM架构服务器均需执行升级。
## 升级流程
1. 升级jdk
2. 升级nginx
3. 升级redis
4. 升级emqx
5. 升级nacos
- 升级完成后需检测容器日志以及运行状态是否正常。
- 运行状态与容器日志均正常,可将容器打成tar.gz镜像包,上传至对应架构的镜像目录。
## 升级方式
- 升级容器组件(Nginx/Redis/EMQX/Nacos)的流程:
1. 拉取官方最新版本镜像
2. 迁移原有容器配置
3. 停止旧容器并启动新容器
4. 验证容器日志及运行状态正常
5. 将新容器docker save打包为tar.gz,替换对应架构镜像目录下的旧离线包
- 升级JDK的流程:
1. 下载JDK 1.8.0最新版本
2. 替换宿主机及容器内的JDK
3. 重启相关服务并验证
## 不升级项说明
- docker:先记录最新版本,暂不执行升级操作(当前版本29.1.3)
## 注意事项
1. 升级过程中禁止随意改变文件,如需调整文件,需进行无尽的询问我。
2. 升级过程需日志记录分析,并在最终输出md文件记录。
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论