Tech
[Java] Java Crac 几乎正式可用
宿主机负责正式运行
Java 服务最终仍由 systemd 管理,监听固定的 48080 ,不改变现有 Nginx 配置。
Docker 只负责制作 CRaC 快照
新 JAR 在容器内冷启动、完成健康检查和预热,然后创建 checkpoint 。容器内部仍使用 48080 ,宿主机映射随机端口,所以不会和线上服务冲突。
容器和宿主机使用相同路径
统一挂载:
/opt/app-server/app-server.jar
/opt/app-server/zulu25-crac
/opt/app-server/crac/checkpoint
避免恢复时出现 JDK 、JAR 或快照路径不一致。
外部服务使用统一可达地址
MySQL 、Redis 、TDengine 等从 127.0.0.1 改成 172.17.0.1 ,保证容器制作快照和宿主机恢复后都能连接。
快照成功后再切换
Docker checkpoint 成功之前,旧服务继续运行。成功后才停止旧进程、替换 JAR 和快照,再由 systemd 从 checkpoint 快速恢复。
实测启动时间从 2 分钟压到了...
Read the full discussion on V2EX
This article was aggregated from V2EX. Click to join the conversation.
View on V2EX