V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daocloud
V2EX  ›  推广

HealthDirect 用 Swarm 进行蓝绿部署

  •  
  •   daocloud · 2016-04-11 10:59:57 +08:00 · 1782 次点击
    这是一个创建于 3148 天前的主题,其中的信息可能已经有所发展或是发生改变。

    深入浅出 Docker Swarm | DaoCloud 现推出 Docker Swarm 系列技术文章,为大家深入浅出地解读 Docker Swarm 的概念、使用方法以及最真实的案例分析。

    这篇文章,让我们分享 Swarm 案例: HealthDirect 用 Docker Swarm 进行蓝绿部署.

    关于 HealthDirect :澳大利亚 HealthDirect 向全体澳洲公民提供健康信息和诊疗建议咨询服务。无论用户身处何时何地,他们都能从网上向专业的,有良好信誉的医疗顾问寻求关于自己健康问题的咨询服务,并且在需要的时候找到当地最近的健康服务中心。

    在 HealthDirect ,我们用 Puppet 部署我们的 Swarm 集群,保证我们的集群在每次部署的时候都能维持持续更新状态。在此过程中,我们将从本地私有 Trusted Registry 调用 Docker 镜像。

    我们的环境基于 AWS 云服务,但同样的方法可以很轻易地移植到其他云服务供应商或 OpenStack 等开源项目里。我们之所以选择内部私有 Registry ,是因为在部署的时候把我们的镜像放置得离 endpoint 近一些,这样可以获得更快的速度。

    首先,来看看整个流程:我们假设用一个部署工具如 Jenkins 将我们的实例配置到构建服务器。作为整个构建过程的一环,云端初始化 userdata 会把 Puppet 架到我们的节点上。

    整个环境如下所示:

    搭建集群的话,我们用到了 Puppet 的 module :_Docker, _Docker Swarm 和_Consul (作为 Swarm 后端的服务发现)。

    我们用如下代码来搭建 Consul 集群:

    以上代码片段中,我们将建立起 Consul 集群,并设置一个简易的健康监测,以确定我们的 Docker daemon 是运行正常的。你会发现我们用了两块代码来建立 Consul ,第一块用来搭建集群,第二块用来连接集群。

    接着我们将用叫做 swarm-private 的原生 Docker 网络来建好 Swarm 。我们用 overlay 驱动来创建一个名为 swarm-private 的私有网络。这次我们又用两块代码来组建集群,第一块为 master ,第二块仍然起到向集群添加节点的功能。

    最后的代码片段将把应用部署到我们的 Swarm 集群中。在此实例中,我们在 Trusted Registry 上保存了 Nginx 、应用和 db 镜像。然后我们用 Puppet 拉取镜像并将其部署在集群上。

    如你所见,我们利用了原生 Docker 网络栈来锁定数据库的访问。在生产环境中,你会需要增加调度过滤来保证所有容器能够正确地展开。

    如上面图表所示,我们已经建好了一个可正常运作的 Swarm 集群,它定义准确,而且可以重复使用。当有新的应用发布时,我们还可以新建一个 Swarm 集群。这对开发者, QA 团队和生产部门来说都是福音,因为他们可以自由进行蓝绿部署,并且重定向负载平衡器或 DNS 。

    下期预告: Swarm 在房屋信贷领域的最佳实践

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2893 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:50 · PVG 16:50 · LAX 00:50 · JFK 03:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.