docker swarm 多服务器部署多容器实现高可用

docker swarm的基本使用
swarm能真正实现多服务器自动部署,自动管理,服务器扩展、服务器裁减等。
本次使用到四个服务器,其中一个管理服务器,两上工作服务器,还有一个扩展服务器。
1、swarm初始化:初始化管理服务器的swarm服务,
docker swarm 多服务器部署多容器实现高可用_第1张图片
在这里插入图片描述
2,现在加两个从节点服务器到这个管理节点,在那两个从节点服务器上分别执行

先看要加到管理节点的token令牌是什么,在管理节点执行:
在这里插入图片描述
在两个从节点服务器上执行以下命令:
docker swarm 多服务器部署多容器实现高可用_第2张图片
然后在管理节点下能看到刚加入的节点:
docker swarm 多服务器部署多容器实现高可用_第3张图片
3,现在集群已经搭起来了,我们开始部署服务,我们以nginx来测试,在管理节点执行以下命令:
docker swarm 多服务器部署多容器实现高可用_第4张图片
参数说明:replicas指应用的实例复制多少份,p指对面暴露端口:应用端口。在管理节点执行:
在这里插入图片描述
docker swarm 多服务器部署多容器实现高可用_第5张图片
你会发现在管理节点(discovery这个节点是管理节点的主机名)上运行一个应用实例,这里需要说明下管理节点也是一个工作节点。再到这两个上执行下面这个命令确定服务已经启动成功。

docker swarm 多服务器部署多容器实现高可用_第6张图片
我们可以通过浏览器来访问8080端口。
docker swarm 多服务器部署多容器实现高可用_第7张图片
从节点也一样可以访问到。
4,现在想扩展应用实例,比如发现2个应用实例不能满足需求的时候,需要扩展应用实例,执行以下命令:
在这里插入图片描述
这个表示在这个管理节点的集群里运行的应用实例数为6个,管理节点会自动的分配各应用实例在哪些服务器上运行。再在管理节点上执行:
docker swarm 多服务器部署多容器实现高可用_第8张图片
此时你发现已经有6个实例在跑了,分别在三个节点上。至此你会发现应用的伸缩性非常好。再比如,发现三台服务器都满负载运行,想扩展服务器,只需要把要扩展的服务器加入到这个集群就可以。用前面提到的第2点,就可以实现。
docker swarm 多服务器部署多容器实现高可用_第9张图片
此时你需要扩展应用来重新分配各应用实例。
docker swarm 多服务器部署多容器实现高可用_第10张图片
你发现新加入的节点也开始提供服务。整个过程都不需要停服务,实现真正的可伸缩,弹性服务管理。管理节点会自动管理单服务器运行多应用实例,多服务器运行多应用实例。

5、现在要把这些节点的服务对外提供。对外提供统一的IP,我们选择一个负载均衡工具haproxy。本人虚拟机资源有限,所以去了一个从节点来做负载均衡节点。
docker swarm 多服务器部署多容器实现高可用_第11张图片
下线discovery-2这个服务器
在这里插入图片描述
docker swarm 多服务器部署多容器实现高可用_第12张图片
需要停掉discovery-2的docker服务。在discovery-2从服务器节点上执行:
在这里插入图片描述
回到管理节点,发现discovery-2的状态为Down。再执行 :
在这里插入图片描述
在这里插入图片描述
启动discvoery-2节点的docker服务,为运行haproxy服务使用。
首先拉取haproxy服务。
docker swarm 多服务器部署多容器实现高可用_第13张图片
编写Dockerfile文件,跟haproxy配置文件
Dockerfile文件内容:
在这里插入图片描述
haproxy文件内容:
docker swarm 多服务器部署多容器实现高可用_第14张图片
这里指向我的三台服务器的8080端口。在Dockerfile目录下执行构建:
docker swarm 多服务器部署多容器实现高可用_第15张图片
构建完后,测试配置文件是否配置正确:
在这里插入图片描述
运行haproxy镜像:
在这里插入图片描述
浏览器查看服务:
docker swarm 多服务器部署多容器实现高可用_第16张图片
发现三个服务都正常运行。访问一下服务:
docker swarm 多服务器部署多容器实现高可用_第17张图片
发现从负载均衡节点可以正常访问到后台的服务。关于负载均衡节点的可高用上面一样,这里就不多说了。
6、我们经常需要更新镜像,说下更新镜像,同样整个过程都不需要停服务。
docker swarm 多服务器部署多容器实现高可用_第18张图片
一般的我们在创建一个服务的时候都会指定更新策略(查看 UpdateConfig属性)。
下面我们以redis 3.0.6版本来做更新测试。
在管理台节点执行:
在这里插入图片描述
docker swarm 多服务器部署多容器实现高可用_第19张图片
现在更新到redis 3.0.7版本:
在这里插入图片描述
docker swarm 多服务器部署多容器实现高可用_第20张图片
可以看到更新的结果是否成功:
docker swarm 多服务器部署多容器实现高可用_第21张图片
同理回滚也一样,只是版本号不同而已。

你可能感兴趣的:(docker)