95 lines
4.6 KiB
Markdown
95 lines
4.6 KiB
Markdown
---
|
||
name: session-20260621-2
|
||
description: 2026-06-21 第2次会话 — DNS解析API从10.1.1.160迁移至101.132.183.138:32210
|
||
metadata:
|
||
type: session
|
||
date: 2026-06-21
|
||
sessionNumber: 2
|
||
startTime: 2026-06-21T03:45:00+08:00
|
||
endTime: 2026-06-21T04:00:00+08:00
|
||
---
|
||
|
||
# 2026-06-21 第2次会话
|
||
|
||
## 会话摘要
|
||
将 DNS 解析 Python API 从 10.1.1.160:5000 迁移至 101.132.183.138:32210。创建了精简版独立 DNS API(去掉了 Nginx/SSL 依赖),通过 systemd 部署到 138 上,Java 后端改指新地址,已编译部署到 Docker。全链路验证通过。
|
||
|
||
## 关键操作
|
||
|
||
### 1. 创建独立 DNS Python API
|
||
- **做了什么**: 新建 `dns-api/` 目录,包含 4 个文件:`app.py`(精简 Flask,仅 DNS 路由+健康检查)、`dns_service.py`(复制自原项目,零依赖改动)、`requirements.txt`(flask 2.0.3 + gunicorn 20.1.0,兼容 Python 3.6)、`gunicorn_config.py`(端口 32210)
|
||
- **原因**: 10.1.1.160 将停用,138 上只需要 DNS 功能,不需要 Nginx/SSL 管理
|
||
- **关键改动**: `zone` 默认值从 `ssl_service.get_le_root_domain()` 改为环境变量 `DNS_DEFAULT_ZONE`(默认 zgitm.com),彻底解除对 ssl_service 的依赖
|
||
- **结果**: 4 个文件已上传至 138
|
||
|
||
### 2. 部署 DNS API 到 101.132.183.138
|
||
- **做了什么**: SSH 到 138,安装依赖(flask 2.0.3 + gunicorn 20.1.0,适配 Python 3.6.8),创建 systemd 服务 `/etc/systemd/system/dns-api.service`,设置开机自启
|
||
- **阿里云 AK**: `LTAI5t98jUxLUadZM1LkaSa8` / `K2HyLLXizAgvOMOa0Mzc7ebs4gbAZs`(从 160 systemd 文件获取,已写入 138 服务 Environment)
|
||
- **端口**: 32210(HTTP)
|
||
- **结果**: 服务正常运行,健康检查通过,DNS 记录查询正常
|
||
|
||
### 3. 修改 Java 后端配置
|
||
- **application.yml**: `python-api.base-url` 从 `http://10.1.1.160:5000` → `http://101.132.183.138:32210`
|
||
- **原因**: Java 通过 RestTemplate rootUri 自动拼接路径,只需改配置
|
||
- **无需改动**: RestTemplateConfig.java、PythonApiClient.java、DnsRecordService.java、DnsController.java、前端任何文件
|
||
|
||
### 4. 编译部署 Java 后端
|
||
- **编译**: `mvn clean package -Pprod -DskipTests` → BUILD SUCCESS
|
||
- **部署**: JAR 上传到 10.1.1.170,docker cp 到 nginx-server-nginx-server:/app/app.jar,重启容器
|
||
- **结果**: 服务正常启动,API 响应正常
|
||
|
||
### 5. 全链路验证
|
||
- **列表查询**: 通过 Java → 138:32210 → 阿里云,记录正常返回(含审计字段)
|
||
- **添加测试**: `verify-dns-migration.zgitm.com` 创建成功,record_id 返回正确
|
||
- **删除测试**: 测试记录已清理,列表确认已删除
|
||
- **结果**: DNS 添加/删除/列表 全链路通过
|
||
|
||
## 重要信息
|
||
|
||
### 新 DNS API 部署信息
|
||
| 项目 | 详情 |
|
||
|------|------|
|
||
| 服务器 | 101.132.183.138 |
|
||
| 端口 | 32210 |
|
||
| 协议 | HTTP |
|
||
| Python 版本 | 3.6.8 |
|
||
| 服务名 | dns-api |
|
||
| 目录 | /opt/dns-api/ |
|
||
| 启动 | `systemctl start dns-api` |
|
||
| 日志 | `journalctl -u dns-api` |
|
||
| 环境变量 | Ali_Key, Ali_Secret, DNS_DEFAULT_ZONE=zgitm.com |
|
||
| 默认 zone | zgitm.com(可通过 DNS_DEFAULT_ZONE 环境变量修改) |
|
||
|
||
### 当前架构
|
||
```
|
||
Vue前端 → Mokee Gateway → Java后端(10.1.1.170:4002)
|
||
↓ DnsRecordService
|
||
↓ PythonApiClient
|
||
↓ RestTemplate rootUri: http://101.132.183.138:32210
|
||
↓
|
||
Python Flask (101.132.183.138:32210)
|
||
↓ dns_service.py → 阿里云 DNS API (alidns.aliyuncs.com)
|
||
```
|
||
|
||
### 数据库地址变更(未完成)
|
||
- 用户要求将数据库从 10.1.1.122 改为 10.20.1.122
|
||
- **问题**: 10.20.1.122 从 10.1.1.170(Docker 主机)ping 不通,3306 端口不可达
|
||
- **处理**: 已回滚,仍使用 10.1.1.122
|
||
- **待办**: 网络/防火墙打通后再次修改并部署
|
||
|
||
### 涉及文件清单
|
||
|
||
| 文件 | 操作 | 说明 |
|
||
|------|------|------|
|
||
| `dns-api/app.py` | **新建** | 精简版 Flask DNS API(4个DNS路由+健康检查) |
|
||
| `dns-api/dns_service.py` | **新建** | 阿里云DNS服务核心(复制自原项目) |
|
||
| `dns-api/requirements.txt` | **新建** | flask==2.0.3, gunicorn==20.1.0 (Python 3.6兼容) |
|
||
| `dns-api/gunicorn_config.py` | **新建** | 端口32210 |
|
||
| `application.yml` | **改1行** | python-api.base-url → 101.132.183.138:32210 |
|
||
| `application-qa.yml` | 无净变更 | 数据库地址改了又回滚 |
|
||
| `application-prod.yml` | 无净变更 | 数据库地址改了又回滚 |
|
||
|
||
## 待处理
|
||
- [ ] 数据库地址 10.1.1.122 → 10.20.1.122(需网络打通 / 连得上数据库)
|
||
- [ ] 160 机器停用后清理旧 nginx-api 服务
|