Blogs

在生产中使用金丝雀部署来进行测试

作者:丁轶群 | 归档于 cloudfoundry

2014-12-02

根据Nolio发布的DevOps最佳实践系列中的第一个demo,很多公司通过路由策略选择性地对部分用户发布新功能从而使用 “金丝雀部署(Canary Deployments)”来测试生产中的软件,并将这一方式作为其可持续交付的一部分。“金丝雀部署”是增量发布的一种类型,它的执行方式是在原有软件生产版本可用的情况下,同时部署一个新的版本。同时运行同一个软件产品的多个版本需要软件针对配置和完美自动化部署进行特别设计。

继续阅读

Cloud Foundry中warden的架构与实现

作者:孙宏亮 | 归档于 cloudfoundry

2014-12-02

在Cloud Foundry中,当应用开发者的应用由Cloud Foundry的组件DEA来运行时,应用的资源隔离与控制显得尤为重要,而warden的存在很好得解决了这个问题。 Cloud Foundry中warden项目的首要目的是提供一套简易的接口来管理隔离的环境,这些隔离的环境可以被称为“容器”,他们可以在CPU使用,内存使用,磁盘使用以及设备访问权限方面做相应的限制。

继续阅读

Cloud Foundry中DEA与warden通信完成应用端口监听

作者:孙宏亮 | 归档于 cloudfoundry

2014-12-02

在Cloud Foundry v2版本中,DEA为一个用户应用运行的控制模块,而应用的真正运行都是依附于warden。更具体的来说,是DEA接收到Cloud Controller的请求;DEA发送请求给warden server;warden server创建warden container并将用户应用droplet等环境配置好;DEA发送应用启动请求至warden serve;最后warden container执行启动脚本启动应用。本文主要具体描述,DEA如何与warden交互,以保证最终用户的应用可以成功绑定某一个端口,实现用户应用对外提供服务。

继续阅读

Docker源码分析(四):Docker Daemon之NewDaemon实现

作者:孙宏亮 | 归档于 Docker

2014-12-02

Docker的生态系统日趋完善,开发者群体也在日趋庞大,这让业界对Docker持续抱有极其乐观的态度。然而,对于广大开发者而言,使用Docker这项技术已然不是门槛,享受Docker带来的技术福利已不是困难。如今,如何探寻Docker适应的场景,如何发展Docker周边的技术,以及如何弥合Docker新技术与传统物理机或VM技术的鸿沟,已经占据Docker研究者们的思考与实践。

继续阅读

Docker源码分析(三):Docker Daemon启动

作者:孙宏亮 | 归档于 Docker

2014-12-02

【Docker源码分析(三):Docker Daemon启动】Docker作为业界备受推崇的轻量级虚拟化容器管理引擎,其强大的后台能力全凭Docker Daemon。本文从源码出发,介绍了Docker Daemon的启动流程,并深入分析启动流程中每一步骤的实现细节。Docker的运行真可谓,载体为daemon,调度管理由engine,任务执行靠job。

继续阅读

Docker源码分析(二):Docker Client创建与命令执行

作者:孙宏亮 | 归档于 Docker

2014-12-02

如今,Docker作为业界领先的轻量级虚拟化容器管理引擎,给全球开发者提供了一种新颖、便捷的软件集成测试与部署之道。在团队开发软件时,Docker可以提供可复用的运行环境、灵活的资源配置、便捷的集成测试方法以及一键式的部署方式。可以说,Docker的优势在简化持续集成、运维部署方面体现得淋漓尽致,它完全让开发者从前者中解放出来,把精力真正地倾注在开发上。

继续阅读

Docker源码分析(一):Docker架构

作者:孙宏亮 | 归档于 Docker

2014-12-02

Docker是Docker公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。目前,Docker可以在容器内部快速自动化部署应用,并可以通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率,并且提升诸如IO等方面的性能。

继续阅读

Cloud Foundry中gorouter对StickySession的支持

作者:孙宏亮 | 归档于 cloudfoundry

2014-11-21

Cloud Foundry作为业界出众的PaaS平台,在应用的可扩展性方面做得非常优秀。具体来讲,在一个应用需要横向伸展的时候,Cloud Foundry可以轻松地帮助用户做好伸展工作,也就是创建出一个应用的多个实例,多个实例地位相等,多个实例共同为用户服务,多个实例共同分担访问压力。大致来说,可以认为是共同分担访问压力,但是也不是针对所有该应用的访问,都进行均衡,分发到不同的应用实例处。譬如:当Cloud Foundry的访问用户访问应用时,第一次的访问,gorouter会将请求分发到应用的某个实例处,但是如果该用户之后的访问都是有状态的,不希望之后的访问会被分发到该应用的其他实例处。针对以上这种情况,Cloud Foundry提供了自己的解决方案,使用StickySession的方式,保证请求依旧分发给指定的应用实例。

继续阅读

Cloud Foundry中DEA启动应用实例时环境变量的使用

作者:孙宏亮 | 归档于 cloudfoundry

2014-11-20

在Cloud Foundry v2中,当应用用户需要启动应用的实例时,用户通过cf CLI向cloud controller发送请求,而cloud controller通过NATS向DEA转发启动请求。真正执行启动事宜的是DEA,DEA主要做的工作为启动一个warden container, 并将droplet等内容拷贝进入container内部,最后配置完指定的环境变量,在这些环境变量下启动应用的启动脚本。 本文将从阐述Cloud Foundry中DEA如何为应用实例的启动配置环境变量。

继续阅读

Haproxy端口映射(client头中URL/HOST修改后转发)

作者:丁轶群 | 归档于 haproxy

2014-10-28

CloudFoundry是对域名强依赖的云计算集群,没有域名的话几乎无法访问。但是域名备案等事宜所耗时间较长,在上线较为紧急的情况下,就需要实现直接通过“IP+端口”的形式,在公网访问CF集群上部署的APP。

继续阅读