问题标签 [blue-green-deployment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - AWS Blue Green 中的 Codepipeline 工作,但 gihub 文件不在服务器中
构建规范.yaml
应用规范.yml
Terraform 资源(代码管道)
代码构建
一切都在代码管道中运行良好。创建任务,并重定向流量。没有显示任何问题的日志。就在通过 ssh 连接到服务器时。该文件夹folder-test
存在,但除子文件夹外没有其他内容。文件不存在。
我尝试在控制台中删除该文件夹,然后重新部署新的推送,结果相同。
amazon-web-services - AWS ECS 蓝/绿部署丢失了我的代码
我有一个在环境python3
中运行的项目docker
container
。
我的 Python 项目使用但使用存储在计算机中的凭据文件,该文件AWS Acces keys
使用.secret
ADD
我将我的项目部署到EC2
. 服务器有一个运行良好的任务。我能够通过端口8080
到达webserver
(Airflow
)。
当我进行新的提交并推送到master branch
github 中时,钩子会下载内容并在没有构建阶段的情况下部署它。
新代码在EC2
服务器中,我使用它进行检查,ssh
但是在任务中运行的容器“卡住”并且bind volumes
消失了,直到我重新启动新任务它们才工作。卷再次从 0 开始应用,并且引用了新代码。此操作是完全手动的。
然后,为了修复它,我听了AWS ECS Blue/Green
部署,所以我实现了它。在这种情况下,Codepipeline
添加一个build
阶段,但这里开始出现问题。如果在构建中我尝试将 a 推docker image
送到ECR
,我的任务定义引用它失败。它失败是因为在服务器中,并且在 repo(我提交推送我的新代码)中没有凭据文件。
docker image
我尝试从我的 . 中执行最新的操作,并localhost
避免在. 如果我点击任何地方,它会说找不到代码。codepipeline
8080
因此,在一般审查中,我想了解我做错了什么,以及如何在一般准则中进行修复,另一方面询问为什么我的集群中EC2
的实例有 3 个 ip。AWS ECS Blue/Green
第一个是我用来通过端口 22 访问服务器的那个。如果我在那里运行,docker ps
我会看到一个或两个容器在运行,这取决于我是否处于新部署的中间。如果我在这里搜索我的新代码,它不在这里......
其他两个 ip 每次都在变化deployment
(我猜它的蓝色和绿色)并且都工作正常,直到Codepipeline
破坏绿色(5 分钟等待时间),但代码不存在。我知道这一点,因为当我单击网络服务器中的任何链接时,它会失败说Airflow Dag
尚未找到。
所以我的问题是我有一个完整的工作AWS ECS Blue/Green deployment
但没有我的代码。然后我的网络服务器没有任何东西可以运行。
google-app-engine - 推荐的 GCP 蓝绿部署模式?
我们正在为使用 React-Native 与 GCP 后端对话的客户端开发/支持移动应用程序。数据库是 Firestore,对象存储使用 GCP Storage,我们使用 GCP app-engine 进行一些 REST 调用,以及一系列 Cloud Functions 来处理一些 Firestore 和 GCP Storage 处理。
我们的产品部署包括将移动应用程序构建文件交付给客户端(他们在自己的服务器上内部分发应用程序),对于后端,我们使用 GCP CloudBuild 从我们的主/产品分支部署我们的应用程序引擎和云功能。然而,在过去的六个月里,我们进行了一系列粗略的产品部署,主要归结为我们在 dev 或 qa 环境(或忘记)上没有遇到的意外环境配置问题,以及一些数据库更新问题(数据模型更改)。这让我们对客户感到很困惑,因为在我们解决问题时,推出可能会延迟几个小时。
为了尝试解决这个问题,我们一直在考虑GCP 后端的蓝绿部署策略。这将包括创建一个新的 GCP 项目,为其部署最新的 master/prod 分支,并允许我们在将更新的移动应用程序交付给客户端之前进行全面测试——这并不奇怪。这在理论上听起来很棒,但在实践中并不是那么简单。主要问题是 Firestore 数据库和 GCP 存储——我们还需要将存储对象和 Firestore 数据库转移到新项目。可行,但又是一个复杂的问题。
所以我们的蓝绿理念是这样的:
- 我们创建了一个新的“Firestore/GCP 存储”项目,其唯一目的是充当“产品”数据存储位置(此项目中没有应用程序引擎或云功能),并充当身份验证提供者。该项目将是静态的,不会在产品部署之间更新
- 我们创建了一个新的“prod”(绿色)GCP 项目,该项目将为绿色部署托管最新的 App-Engine 和 Cloud Functions。此项目将被授予访问“Firestore/GCP 存储”项目数据和存储对象的权限
- 移动应用程序将与“数据存储”项目连接以与 Firestore 通信和上传文件,并将与新的“绿色”项目连接以进行 App-Engine REST 调用
我们希望这种模式能够让我们进行蓝绿后端逻辑部署,而无需担心数据/对象传输。我的问题是:有没有人在 GCP 中使用过这种类型的部署模式?它是推荐的模式,还是回避的反模式?
任何反馈表示赞赏。谢谢
azure - 插槽交换时连接丢失
我想为我的 Blazor 服务器端应用程序使用部署槽,但它在交换期间停止为当前用户工作,他们必须刷新页面。
出于性能原因,我正在使用 Azure SignalR 服务,所以这有点道理,我想它是这样的:
连接保存在内存中,当我交换时,显然它已经消失了。至少没有 SignalR 服务。但是我的 SignalR 服务不应该保持 SignalR 连接(见红色)吗?我设置不正确吗?
我发现其他人也有类似的问题(不使用 Blazor),但我不确定这些是否适用于 Blazor,特别是因为我只想减少 1-2 分钟的停机时间以进行更新......
自动重新连接 SignalR 客户端在 Azure 插槽交换上断开连接
将连接存储在外部存储中。但是手动处理连接是荒谬的吗? https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/mapping-users-to-connections
更新: 见:https ://www.youtube.com/watch?v=Vvjdqq8MB44&t=12m10s
似乎有“网络流量”直接流向 Blazor 应用程序。我的猜测:交换后,“Web 流量”仍然流向前一个实例,而 SignalR 流量流向新交换的实例。这听起来像是个问题。
但再一次,我不知道“Web 流量”到底是什么,或者这是否是问题所在,以及 Azure 是否提供了解决问题的方法,所以仍然会得到明确的答案。
apache-kafka - 有人在使用 Kafka 进行蓝绿部署时遇到过问题吗?
我们的服务利用 Kafka 发布和消费消息。我们使用蓝绿部署策略部署我们的服务。考虑以下场景:
我们这里的问题是,一旦切换发生,我们的绿色 pod(其中我们有旧代码 App1.0)仍在使用来自该 kafka 主题的消息。理想情况下,绿色 pod 现在应该停止从主题中消费。我们正在寻找一种解决方案,当我们部署时,我们的绿色 pod 应该停止消耗。
azure - 使用部署槽进行交换时处理数据库迁移的推荐方法
我正在尝试了解使用 Azure 应用服务托管我的 Web 应用的部署槽的使用。我对执行交换时处理数据库的理想方法感到特别困惑。虽然维护两个数据库版本似乎是一种解决方案,但它增加了跨多个数据库维护数据以使它们保持一致的复杂性。在使用蓝/绿部署,特别是部署槽时,处理数据库架构和迁移的推荐方法是什么?
deployment - 使用 Rabbit 进行部署处理
我的应用程序有rabbitMq,它有多个消费者[3],我会循环使用消息。目前我在部署新版本时进行金丝雀部署,但这让我陷入了任何消费者[不仅仅是金丝雀消费者]都可以使用消息的情况,这会产生问题。
[另外我希望它只有在需要循环部署所有其他时间时才表现得像这样]
我已经知道绿蓝部署过程,但是还有其他方法可以解决这个问题吗?
amazon-web-services - CodeDeploy 与私有子网实例上的 VPC 终端节点
我正在尝试使用 CodeDeploy 在使用 VPC 端点的私有子网实例上部署我的修订。VPC 终端节点已配置所需的子网,并且在 VPC 终端节点上应用的安全组已允许所有入站和出站。我的部署仍然失败,并且我没有任何方法可以检查 EC2 实例上的日志,因为它是私有的。对此有任何帮助或指导吗?我正在尝试按照以下链接进行操作:
amazon-web-services - Airflow 1.1.10 远程 S3 日志
我正在尝试启用Remote Airflow logs
,为此我按照以下步骤操作:
apache气流安装
气流.cfg 文件:
我已经Airflow
在. 我读到如果气流托管在 EC2 服务器上,您应该创建连接,除了连接类型应该保持为 S3 之外,配置中的所有内容都留空。docker
AWS ECS Blue/Green deploy
S3hook 将默认为 boto,这将默认为您正在运行气流的 EC2 服务器的角色。假设此角色拥有 S3 的权限,您的任务将能够访问存储桶。
所以我应用了这个,但我不知道使用 docker 是否能按预期工作。
如果我运行 dag,我会看到在/urs/local/airflow/logs
文件夹中创建的日志docker container
,但在 S3 中的指定文件夹中没有新文件。
amazon-cloudformation - API 网关上的 CodeDeploy 蓝/绿部署侦听器端口?
我正在 AWS 上研究一个复杂的结构,其中包括一个 API 网关,供用户连接位于 VPC 内的网站。在这个 VPC 中,我计划使用 ALB 对从外部到不同 ECS Fargate 任务的流量进行负载均衡。
为了自己的目的,我计划在 CodeDeploy 会话中使用蓝/绿部署来部署位于 ECS fargate 中的服务。从 AWS 的文档中,我了解到可以在负载均衡器上设置生产和测试环境的侦听器端口。
我想知道API网关是否可以设置监听端口。因为我希望将 CloudFormation 用于这种方法,所以它会更好地与它相关。谢谢!