feat: backend executor implement
This commit is contained in:
@@ -2,7 +2,61 @@
|
||||
|
||||
本文只适用于已经安装 `yms-backend@.service`、使用宿主机 Nginx managed upstream、当前由旧 `yms.service` 或 `ymsback.service` 接流的开发环境。
|
||||
|
||||
## 1. 构建 ARM64 二进制
|
||||
## 1. 构建 RPM
|
||||
|
||||
ARM64:
|
||||
|
||||
```bash
|
||||
./packaging/rpm/build-rpm.sh --goarch arm64
|
||||
```
|
||||
|
||||
x86-64:
|
||||
|
||||
```bash
|
||||
./packaging/rpm/build-rpm.sh --goarch amd64
|
||||
```
|
||||
|
||||
RPM 输出到 `dist/`。需要指定包版本和发布序号时使用:
|
||||
|
||||
```bash
|
||||
./packaging/rpm/build-rpm.sh \
|
||||
--goarch arm64 \
|
||||
--version 0.1.0 \
|
||||
--release 20260816010000
|
||||
```
|
||||
|
||||
安装或升级:
|
||||
|
||||
```bash
|
||||
rpm -Uvh dist/<完整RPM文件名>.rpm
|
||||
systemctl enable --now yms-daemon.service
|
||||
```
|
||||
|
||||
RPM 不会自动启动或重启 `yms-daemon.service`,避免安装恰好发生在更新事务执行期间。首次安装执行 `systemctl enable --now`;升级后由交付人员在确认没有更新事务执行时运行:
|
||||
|
||||
```bash
|
||||
systemctl restart yms-daemon.service
|
||||
```
|
||||
|
||||
`/etc/yms-daemon/yms-daemon.toml` 使用 `noreplace` 语义,升级不会覆盖现场配置。RPM 会安装 `/usr/bin/yms-daemon`、两个 systemd unit、tmpfiles 配置,并创建 `/home/yms/dump`。
|
||||
|
||||
RPM 示例配置使用客户环境值:
|
||||
|
||||
```toml
|
||||
[daemon]
|
||||
environment = "prod"
|
||||
```
|
||||
|
||||
开发机必须明确改为:
|
||||
|
||||
```toml
|
||||
[daemon]
|
||||
environment = "dev"
|
||||
```
|
||||
|
||||
从不包含 `[daemon]` 的旧配置升级时,必须先加入上述完整 table,再重启 `yms-daemon.service`。`environment` 只选择未来 container 更新使用 Registry pull 还是 repack ZIP load,不改变当前 native backend 行为。
|
||||
|
||||
## 2. 直接构建 ARM64 二进制
|
||||
|
||||
在 `yms-daemon` 源码目录执行:
|
||||
|
||||
@@ -10,7 +64,7 @@
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -o yms-daemon .
|
||||
```
|
||||
|
||||
## 2. 安装文件
|
||||
## 3. 手工安装文件
|
||||
|
||||
把构建结果和 `packaging` 目录传到服务器后,以 root 执行:
|
||||
|
||||
@@ -26,7 +80,7 @@ systemctl daemon-reload
|
||||
systemctl enable --now yms-daemon.service
|
||||
```
|
||||
|
||||
## 3. 更新前检查
|
||||
## 4. 更新前检查
|
||||
|
||||
```bash
|
||||
systemctl status yms-daemon.service --no-pager -l
|
||||
@@ -36,7 +90,7 @@ curl -fsS http://127.0.0.1:8081/yms/actuator/health
|
||||
|
||||
确认健康响应顶层 `status` 为 `UP`。第一次更新前不要手工停止 `ymsback.service`;daemon 需要读取当前接流端口和旧 unit 状态完成受控迁移。
|
||||
|
||||
## 4. 执行更新
|
||||
## 5. 执行更新
|
||||
|
||||
客户 repack ZIP 模式:
|
||||
|
||||
@@ -110,7 +164,7 @@ transaction=<事务ID> state=COMMITTED
|
||||
journalctl -u yms-daemon.service -f
|
||||
```
|
||||
|
||||
## 5. 零停机重启 backend
|
||||
## 6. 零停机重启 backend
|
||||
|
||||
修改 `/home/yms/bin/env/yms.env` 等 backend 启动配置后,执行:
|
||||
|
||||
@@ -128,7 +182,7 @@ yms-daemon restart --service backend --quite
|
||||
|
||||
restart 进行中如果 daemon 重启,再次执行同一命令会恢复唯一未完成的 backend restart 事务。存在其他未完成 update 事务时,restart 拒绝创建新事务并返回该活动事务 ID。
|
||||
|
||||
## 6. 更新或重启后检查
|
||||
## 7. 更新或重启后检查
|
||||
|
||||
```bash
|
||||
systemctl show --no-pager \
|
||||
|
||||
Reference in New Issue
Block a user