--- 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 服务