小编ren*_*udg的帖子

使用Ansible(+ Docker?)进行持续部署和AWS自动扩展

我的组织的网站是在前端Web服务器上运行的Django应用程序+ AWS中的一些后台处理服务器.

我们目前正在使用Ansible:

  • 系统配置(来自裸OS映像)
  • 经常手动触发的代码部署.

同样的Ansible playbook能够从头开始配置本地Vagrant dev VM或生产EC2实例.

我们现在想要在EC2中实现自动缩放,这需要对"将服务器视为牛,而不是宠物"的理念进行一些更改.

第一个先决条件是从静态管理的Ansible库存转移到动态的,基于EC2 API的库存,完成.

接下来的一个重要问题是如何在这个新世界中进行部署,在这个世界中,一夜之间会出现一次性事件.我能想到的选择是:

  1. 为每个部署烘焙新的完全部署的AMI,创建新的AS Launch配置并使用它更新AS组.听起来非常非常麻烦,但由于采用了清晰的平板方法,因此也非常可靠,并且将确保任何系统更改所需的代码都在这里.此外,实例启动时无需其他步骤,因此可以更快地启动和运行.
  2. 使用不经常更改的基本AMI,在启动时自动从git获取最新的应用程序代码,启动webserver.一旦完成,只需按需要进行手动部署,就像之前一样.但是如果新代码依赖于系统配置的更改(新包,权限等)呢?看起来你必须开始处理代码版本和系统/ AMI版本之间的依赖关系,而"只做一个完整的ansible运行"方法更集成,更可靠.这不仅仅是实践中的潜在头痛吗?
  3. 使用Docker?我有一个强烈的预感它可能有用,但我不确定它如何适合我们的图片.我们是一个相对独立的Django前端应用程序,只有RabbitMQ + memcache作为服务,我们永远不会在同一台主机上运行.那么使用包含系统包+最新代码的Ansible构建Docker镜像有什么好处,而不是让Ansible直接在EC2实例上进行?

你怎么做呢 ?任何见解/最佳实践?谢谢 !

amazon-ec2 continuous-deployment autoscaling ansible docker

18
推荐指数
1
解决办法
5465
查看次数

通过Google Pub/Sub + Dataflow直接流入BigQuery的优缺点

我们在Google Kubernetes Engine上托管了NodeJS API,我们想开始将事件记录到BigQuery中.

我可以看到3种不同的方法:

  1. 使用API​​中的Node BigQuery SDK将每个事件直接插入BigQuery(如"流式插入示例"中所述:https://cloud.google.com/bigquery/streaming-data-into-bigquery或此处:https:/ /github.com/googleapis/nodejs-bigquery/blob/7d7ead644e1b9fe8428462958dbc9625fe6c99c8/samples/tables.js#L367)
  2. 将每个事件发布到Cloud Pub/Sub主题,然后编写Cloud Dataflow管道以将其流式传输到BigQuery(仅在Java或Python中),例如https://blog.doit-intl.com/replacing-mixpanel- with-bigquery-dataflow-and-kubernetes-b5f844710674https://github.com/bomboradata/pubsub-to-bigquery
  3. 将每个事件从API发布到Pub/Sub主题,但不是Dataflow使用自定义工作进程,该进程在一侧订阅Pub/Sub主题并在另一侧流入BQ.像这里:https: //github.com/GoogleCloudPlatform/kubernetes-bigquery-python/blob/master/pubsub/pubsub-pipe-image/pubsub-to-bigquery.py 或在这里:https://github.com/mchon89 /Google_PubSub_BigQuery/blob/master/pubsub_to_bigquery.py

对于这个特定的用例,我们不需要进行任何转换,只是将事件直接发送到正确的格式.但是我们稍后可能会有其他用例,我们需要将主数据存储区(MySQL)中的表同步到BQ进行分析,所以可能马上从Dataflow开始值得吗?

几个问题 :

  • 选项1(直接向BQ发送单个事件)似乎最简单,如果你没有任何变换.它是否像发布Pub/Sub主题一样快速可靠?我主要关注延迟和错误/重复处理(https://cloud.google.com/bigquery/troubleshooting-errors#streaming).也许这在单独的过程中做得更好?
  • 对于选项2,是否有任何数据流"预设"不需要您编写自定义代码,只需要从Pu​​b/Sub +读取可靠地发送到BQ而不进行转换(可能只是重复数据删除/错误处理)
  • 有一个简单的自定义工作程序(选项3)是否有任何缺点,从Pub/Sub读取然后流入BQ并执行所有错误处理/重试等?

google-bigquery google-cloud-pubsub google-cloud-dataflow

16
推荐指数
1
解决办法
2052
查看次数