一:原理:
1:docker集群亮点:
功能亮点
与Docker Engine集成的集群管理:使用Docker Engine CLI创建一大群Docker引擎,您可以在其中部署应用程序服务。您不需要额外的编排软件来创建或管理群。即自带swarm不需要那么多负载均衡高可用源件
分散式设计: Docker Engine在部署时不是处理节点角色之间的差异,而是在运行时处理任何专业化。您可以使用Docker Engine部署这两种节点,管理员和工作人员。这意味着您可以从单个磁盘映像构建整个群集。
声明式服务模型: Docker Engine使用声明式方法来定义应用程序堆栈中各种服务的所需状态。例如,您可能会描述一个由带有消息队列服务和数据库后端的Web前端服务组成的应用程序。
缩放:对于每个服务,您可以声明要运行的任务数量。当您向上或向下缩放时,swarm管理器会通过添加或删除任务来自动调整以保持所需的状态。
期望的状态协调:群管理器节点不断监视群集状态,并协调实际状态与表达的期望状态之间的任何差异。例如,如果您设置了一个服务来运行一个容器的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