通过Registrator进行服务的自动注册

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

上篇文章探索了使用Consul进行服务发现。使用Consul进行服务注册需要手动管理服务条目的创建和删除。如果将其集成到应用程序中,有很多地方容易出错。所以如果有一种方式可以自动管理Consul中的服务条目是最好不过了。Registrator正是这样一种工具。

使用Consul进行服务发现

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

当应用程序由多个服务或层次组成,为了使这些应用程序或服务能够彼此间进行通信,需要知道这些服务部署的位置。这些信息可以存储在类似于Etcd或ZooKeeper等分布式的键值存储系统中,也可以通过DNS查找到服务的部署位置。本篇来看看Consul提供的服务发现功能。

使用Swarm进行Docker集群的部署

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

如果你有很多主机,并且这些主机上都安装了Docker,则需要有一种方法来管理这些主机上的容器。比如说启动一个容器时,如何选择容器运行的主机,容器启动后怎样访问部署在某台主机上的容器。Swarm是为了解决这些问题而开发的。在一个有很多主机的集群中,使用Swarm可以将这些机器看做一个Docker daemon,并且像运行普通Docker命令那样使用。

使用Weave构建跨主机的容器网络

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来。容器在不同主机之间都使用的是自己的私有IP地址,不同主机的容器之间进行通讯需要将主机的端口映射到容器的端口上,而且IP地址需要使用主机的IP地址。Weave正是为了解决这个问题而出现的,它把不同主机上容器互相连接的网络虚拟成一个类似于本地网络的网络。

使用resolvable通过DNS查找容器

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

在某个主机上,我们可以使用link或Docker Compose来使不同的容器可以发现彼此,不过使用link或Compose需要在容器启动之前进行配置,无法更新一个运行中的容器的环境变量。为了解决这个问题,可以使用一个DNS服务器。而Resolvable正是一个这样的DNS服务器。

使用confd和etcd来实现零停机程序版本切换

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

因为容器比较轻量化,一台主机上可以同时运行多个容器,所以程序的版本切换可以通过移除旧版本的容器同时启动新版本的容器来简单的实现。对于基于web应用来说,可以通过nginx和confd来实现版本切换而不需要停机。

使用etcd来存储配置信息

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

Docker镜像被设计为可以部署在任何地方,不过人们经常想在部署之后添加一些额外信息来设置程序运行时的行为。而且,运行docker的机器的配置通常需要保持不变,所以就需要将这些额外信息保存到其它地方。etcd就是为了解决这个问题的。