docker swarm 多服务器部署多容器实现高可用
docker swarm的基本使用
swarm能真正实现多服务器自动部署,自动管理,服务器扩展、服务器裁减等。
本次使用到四个服务器,其中一个管理服务器,两上工作服务器,还有一个扩展服务器。
1、swarm初始化:初始化管理服务器的swarm服务,


2,现在加两个从节点服务器到这个管理节点,在那两个从节点服务器上分别执行
先看要加到管理节点的token令牌是什么,在管理节点执行:

在两个从节点服务器上执行以下命令:

然后在管理节点下能看到刚加入的节点:

3,现在集群已经搭起来了,我们开始部署服务,我们以nginx来测试,在管理节点执行以下命令:

参数说明:replicas指应用的实例复制多少份,p指对面暴露端口:应用端口。在管理节点执行:


你会发现在管理节点(discovery这个节点是管理节点的主机名)上运行一个应用实例,这里需要说明下管理节点也是一个工作节点。再到这两个上执行下面这个命令确定服务已经启动成功。

我们可以通过浏览器来访问8080端口。

从节点也一样可以访问到。
4,现在想扩展应用实例,比如发现2个应用实例不能满足需求的时候,需要扩展应用实例,执行以下命令:

这个表示在这个管理节点的集群里运行的应用实例数为6个,管理节点会自动的分配各应用实例在哪些服务器上运行。再在管理节点上执行:

此时你发现已经有6个实例在跑了,分别在三个节点上。至此你会发现应用的伸缩性非常好。再比如,发现三台服务器都满负载运行,想扩展服务器,只需要把要扩展的服务器加入到这个集群就可以。用前面提到的第2点,就可以实现。

此时你需要扩展应用来重新分配各应用实例。

你发现新加入的节点也开始提供服务。整个过程都不需要停服务,实现真正的可伸缩,弹性服务管理。管理节点会自动管理单服务器运行多应用实例,多服务器运行多应用实例。
5、现在要把这些节点的服务对外提供。对外提供统一的IP,我们选择一个负载均衡工具haproxy。本人虚拟机资源有限,所以去了一个从节点来做负载均衡节点。

下线discovery-2这个服务器


需要停掉discovery-2的docker服务。在discovery-2从服务器节点上执行:

回到管理节点,发现discovery-2的状态为Down。再执行 :


启动discvoery-2节点的docker服务,为运行haproxy服务使用。
首先拉取haproxy服务。

编写Dockerfile文件,跟haproxy配置文件
Dockerfile文件内容:

haproxy文件内容:

这里指向我的三台服务器的8080端口。在Dockerfile目录下执行构建:

构建完后,测试配置文件是否配置正确:

运行haproxy镜像:

浏览器查看服务:

发现三个服务都正常运行。访问一下服务:

发现从负载均衡节点可以正常访问到后台的服务。关于负载均衡节点的可高用上面一样,这里就不多说了。
6、我们经常需要更新镜像,说下更新镜像,同样整个过程都不需要停服务。

一般的我们在创建一个服务的时候都会指定更新策略(查看 UpdateConfig属性)。
下面我们以redis 3.0.6版本来做更新测试。
在管理台节点执行:


现在更新到redis 3.0.7版本:


可以看到更新的结果是否成功:

同理回滚也一样,只是版本号不同而已。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)