java - Dockerized Java Spring Boot 应用程序在启动应用程序时抛出 504 Bad Gateway
问题描述
我有一个部署在 docker 数据中心的 java spring boot 应用程序。每当我们为服务部署堆栈时,正如预期的那样,它会杀死现有容器并使用新图像启动新容器。但问题是当spring应用程序在容器内启动时我们得到504 Bad Gateway,这通常是30-40秒。我的预感是由于容器已启动并正在运行,负载均衡器向容器发送请求但应用程序仍在启动,有没有办法解决这个问题?它会产生影响,因为我们有 5 个服务容器,每个容器都会发生同样的事情。因此,在发生这种情况时,很大一部分用户会遇到错误。
解决方案
您的撰写文件中有一个解决方案:update_config
version: '3.4'
services:
your-app:
image: your/image:old
deploy:
replicas: 5
update_config:
parallelism: 2
delay: <yourStartupTimeInSeconds+3>s
order: stop-first
因此,当您部署 的更新版本时your/image
,swarm 将关闭两个容器,部署两个新容器,等待<yourStartupTimeInSeconds+3>
几秒钟,直到使用新映像部署 2 个其他副本,再次等待并部署剩余的一个。
无论如何,您前面的负载均衡器(服务)都会进行健康检查(节点可能会失败),对吗?
推荐阅读
- android - kotlin片段中的弹出窗口
- java - 我正在尝试访问页面,但收到 500 错误
- stripe-payments - 如何在 Stripe 中获取客户 ID?
- html - 如何使 div 只显示前 50 个字符 css
- javascript - Ionic Angular 应用程序中的双路由器状态
- javascript - 如何将 HTML 代码分配给 Vue.js 中的变量
- r - Plotly 条形图与串扰
- magento - Letsencrypt DST Root CA X3 Magento SOAP 服务客户端或服务器端的问题?
- git - 完成了用户存储库的 git 克隆,但看不到分支
- flutter - 容器构造完成后添加一个子容器