docker集群-----swarm

本文介绍了Docker Swarm集群管理的原理和操作,包括声明式服务模型、负载均衡、滚动更新和节点管理。通过示例展示了如何创建和管理Docker Swarm集群,以及如何在集群中部署、扩展和更新服务。
摘要由CSDN通过智能技术生成

一:原理:
1:docker集群亮点:
功能亮点
与Docker Engine集成的集群管理:使用Docker Engine CLI创建一大群Docker引擎,您可以在其中部署应用程序服务。您不需要额外的编排软件来创建或管理群。即自带swarm不需要那么多负载均衡高可用源件

分散式设计: Docker Engine在部署时不是处理节点角色之间的差异,而是在运行时处理任何专业化。您可以使用Docker Engine部署这两种节点,管理员和工作人员。这意味着您可以从单个磁盘映像构建整个群集。

声明式服务模型: Docker Engine使用声明式方法来定义应用程序堆栈中各种服务的所需状态。例如,您可能会描述一个由带有消息队列服务和数据库后端的Web前端服务组成的应用程序。

缩放:对于每个服务,您可以声明要运行的任务数量。当您向上或向下缩放时,s​​warm管理器会通过添加或删除任务来自动调整以保持所需的状态。

期望的状态协调:群管理器节点不断监视群集状态,并协调实际状态与表达的期望状态之间的任何差异。例如,如果您设置了一个服务来运行一个容器的10个副本以及一个承载其中两个副本崩溃的工作器,那么管理器将创建两个新的副本来替换崩溃的副本。swarm manager将新副本分配给正在运行且可用的工作人员。

多主机联网:您可以为您的服务指定一个重叠网络。swarm管理器在初始化或更新应用程序时会自动将地址分配给覆盖网络上的容器。

服务发现: Swarm管理器节点为swarm中的每个服务分配唯一的DNS名称,并负载平衡正在运行的容器。您可以通过群集中嵌入的DNS服务器来查询在群集中运行的每个容器。

负载平衡:您可以将服务的端口暴露给外部负载平衡器。在群集内部,您可以指定如何在节点之间分发服务容器。

默认情况下是安全的:群中的每个节点都强制实施TLS相互认证和加密,以保护自身与所有其他节点之间的通信。您可以选择使用自定义根证书或来自自定义根CA的证书。

滚动更新:在推出时,您可以逐渐将服务更新应用于节点。swarm管理器允许您控制服务部署到不同节点集之间的延迟。如果出现任何问题,您

当Docker以群集模式运行时,您仍然可以在参与群集的任何Docker主机以及群集服务上运行独立容器。独立容器和群集服务之间的一个主要区别是,只有群集管理员可以管理群集,而独立容器可以在任何守护进程上启动。Docker守护进程可以作为管理者,工作者,或两者兼而有之。

负载均衡
swarm管理器使用入口负载均衡来暴露你想在群集外部提供的服务。swarm管理器可以自动将服务分配给一个PublishedPort,或者您可以为该服务配置一个PublishedPort。您可以指定任何未使用的端口。如果您不指定端口,那么swarm管理器将为该服务分配一个30000-32767范围内的端口。

外部组件(如云负载平衡器)可以访问群集中任何节点的已发布端口上的服务,而不管该节点当前是否正在运行该服务的任务。群路由中的所有节点都将入口连接到正在运行的任务实例。

Swarm模式有一个内部的DNS组件,可以自动为群集中的每个服务分配一个DNS条目。群管理器使用内部负载平衡根据服务的DNS名称在群集内的服务之间分配请求。

按照官网的文档直接走,别翻来覆去找没用的资料了
1. manager:172.25.67.250
2. server1:172.25.67.1
3. server2:172.25.67.2
前提:
本教程需要在每台主机上安装Docker Engine 1.12或更高版本。安装Docker Engine并验证Docker Engine守护进程在每台机器上运行。如果低于1.12 不会自带swarm ,需要pull

三台:

 yum update -y docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm
systemctl restart docker
[root@foundation67 Desktop]# docker swarm init
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on interface br0 (172.25.254.67 and 172.25.67.250) - specify one with --advertise-addr

错误原因:在manager上我有俩快网卡,没有指定哪个ip上创建swarm

[root@foundation67 Desktop]# docker swarm init --advertise-addr 172.25.67.250
Swarm initialized: current node (3fj7bam3qavua00ksimls79n2) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-4ea7kwwqtwaddags5ypb44ql7qea4rjktysa9lvqkfculf4ywi-ev61dcr7g15xjb0fw8o3s1sjl \
    172.25.67.250:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

该–advertise-addr标志配置管理器节点将其地址发布为192.168.99.100。群中的其他节点必须能够访问IP地址的管理者。

输出包括将新节点加入到群中的命令。根据–token 标志的价值,节点将作为经理或工人加入。根据上面输出在节点上执行,token是唯一标

[root@server1 ~]# docker swarm join     --token SWMTKN-1-4ea7kwwqtwaddags5ypb44ql7qea4rjktysa9lvqkfculf4ywi-ev61dcr7g15xjb0fw8o3s1sjl     172.25.67.250:2377
This node joined a swarm as a worker.
[root@server2 ~]# docker swarm join     --token SWMTKN-1-4ea7kwwqtwaddags5ypb44ql7qea4rjktysa9lvqkfculf4ywi-ev61dcr7g15xjb0fw8o3s1sjl     172.25.67.250:2377
This node joined a swarm as a worker.

运行docker info查看群体的当前状态:

[root@foundation67 Desktop]# docker info
Containers: 20
 Running: 0
 Paused: 0
 Stopped: 20
Images: 8
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-8:10-273268971-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop4
 Metadata file: /dev/loop5
 Data Space
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值