Docker集群实验环境布署--swarm【5 容器启动组件--node】

10.40.100.143 docker-node0.venic.com

10.40.100.144 docker-node1.venic.com

原用swarm镜像

直接启动

10.40.100.143上

docker run -d  --restart=always --name node0 docker-registry.venic.com:5000/swarm:latest join --advertise=10.40.100.143:2375 consul://docker-consul.venic.com:8500

10.40.100.144上

docker run -d  --restart=always --name node1   docker-registry.venic.com:5000/swarm:latest join --advertise=10.40.100.144:2375 consul://docker-consul.venic.com:8500

在Manager节点上查看集群状态,多了2个node节点

# docker -H :4000 info

Containers: 2

Running: 2

Paused: 0

Stopped: 0

Images: 6

Server Version: swarm/1.2.5

Role: primary

Strategy: spread --默认的均衡模式

Filters: health, port, containerslots, dependency, affinity, constraint

Nodes: 2

docker-node0.venic.com: 10.40.100.143:2375

└ ID: IP3U:TRP7:ZJTS:L3SX:UU4R:VVB5:B4LE:QNOL:MALC:A4BX:GFC7:WJPV

└ Status: Healthy

└ Containers: 1 (1 Running, 0 Paused, 0 Stopped)

└ Reserved CPUs: 0 / 1

└ Reserved Memory: 0 B / 2.052 GiB

└ Labels: kernelversion=3.10.0-514.2.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper

└ UpdatedAt: 2016-12-22T11:26:27Z

└ ServerVersion: 1.12.5

docker-node1.venic.com: 10.40.100.144:2375

└ ID: TXYV:2VVM:H32T:DWDN:AD5M:Z22S:RRLJ:KYN2:SKNP:YFLI:4RUI:GRPM

└ Status: Healthy

└ Containers: 1 (1 Running, 0 Paused, 0 Stopped)

└ Reserved CPUs: 0 / 1

└ Reserved Memory: 0 B / 2.052 GiB

└ Labels: kernelversion=3.10.0-514.2.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper

└ UpdatedAt: 2016-12-22T11:26:35Z

└ ServerVersion: 1.12.5

Plugins:

Volume:

Network:

Swarm:

NodeID:

Is Manager: false

Node Address:

Security Options:

Kernel Version: 3.10.0-514.2.2.el7.x86_64

Operating System: linux

Architecture: amd64

CPUs: 2

Total Memory: 4.103 GiB

Name: 27fbbfe0fae4

Docker Root Dir:

Debug Mode (client): false

Debug Mode (server): false

WARNING: No kernel memory limit support

Swarm调度策略



Swarm在schedule节点运行容器的时候,会根据指定的策略来计算最适合运行容器的节点,目前支持的策略有:spread, binpack, random.

Random顾名思义,就是随机选择一个Node来运行容器,一般用作调试用,spread和binpack策略会根据各个节点的可用的CPU, RAM以及正在运行的容器的数量来计算应该运行容器的节点。

在同等条件下,Spread策略会选择运行容器最少的那台节点来运行新的容器,binpack策略会选择运行容器最集中的那台机器来运行新的节点(The binpack strategy causes Swarm to optimize for the Container which is most packed.)。

使用Spread策略会使得容器会均衡的分布在集群中的各个节点上运行,一旦一个节点挂掉了只会损失少部分的容器。

Binpack策略最大化的避免容器碎片化,就是说binpack策略尽可能的把还未使用的节点留给需要更大空间的容器运行,尽可能的把容器运行在一个节点上面。

时间: 2024-10-08 17:02:55

Docker集群实验环境布署--swarm【5 容器启动组件--node】的相关文章

Docker集群实验环境布署--swarm【4 管理组件--manager】

主机分配如下,支持双活,中断其中1台,primary会通过consul自动重新选举 10.40.100.141 docker-manager0.venic.com 10.40.100.142 docker-manager1.venic.com 首先在镜像服务器上148上,拉取一个官网 的 consul镜像,方便等下在其它三台上快速启动 # docker pull  swarm && docker tag swarm:latest docker-registry.venic.com:5000

Docker集群实验环境布署--swarm【3 注册服务监控与自动发现组件--consul】

参考官网集群配置方式 https://hub.docker.com/r/progrium/consul/ 集群中需要manager与node能通信consul的发现服务,不然,管理节点选举不了,无法执行docker 命令. 集群中consul工作3台的机器,大于等2台时,集群仍正常工作,如果,发生只有1台时,集群失效,无法选择管理节点,需要启动数据再次达到3台的标准后,集群才能慢慢恢复. 测试最终得出一个惊人结论,我把consul集群删除后,重新拉起时,元数据全部自动发现恢复. 10.40.10

Docker集群实验环境布署--swarm【6 配置上层Nginx代理,让任意Docker client访问得到高可用的管理API】

10.40.42.10上,也就是对应的VRRP中的10.40.42.1和2上,配置nginx tcp代理 # cat 4000_manager.venic.com_10.40.100.141-142_4000.conf upstream manager.venic.com { server 10.40.100.141:4000; server 10.40.100.142:4000; } server { listen 4000; proxy_pass manager.venic.com; } 重

Docker集群实验环境布署--swarm【2 搭建本地镜像仓库】

在10.40.100.148上 # docker run -d -p 5000:5000 --restart=always --name docker-registry.venic.com -v /data:/var/lib/registry  registry 参数说明: --restart=always 是将来重启宿主机的docker服务时,容器也能自启动 -v /docker/registry/data:/var/lib/registry  是将镜像文件存放目录挂载到本地硬盘中. 接下来下

Docker集群下,如何用Flannel实现容器互联

当您将多台服务器节点组成一个Docker集群时,需要对集群网络进行设置,否则默认情况下,无法跨主机容器互联,接下来我们首先分析一下原因. 跨主机容器互联 下图描述了一个简单的集群网络,在该集群内,有两台服务器甲和乙,每台服务器上都有两张网卡,分别连接公网和私网,两台服务器可以通过私网互联,在两个服务器节点上分别安装了Docker,并且运行了A/B/C/D 4个容器. 每台服务器节点上都有一个 docker0 网桥,这是docker启动后初始化的虚拟设备,每个容器都与docker0网桥连接,并且,

docker集群部署:第2部分:容器

介绍现在是开始构建Docker应用程序.我们将从这个应用程序的层次结构的底部开始,这个应用程序是一个容器.在这个层次上面是一个服务,它定义了容器在生产中的行为方式,将在第3部分中进行讨论.最后,在顶层是堆栈,定义了所有服务的交互,将在第5部分进行讨论. docker开发环境在过去,如果你要开始编写一个Python应用程序,你的第一步就是在你的服务器上安装一个Python运行库.但是,这会造成你的服务器上的环境必须如此,以使你的应用程序能够按预期运行.使用Docker,docker具有可移植性,你

如何在一台ESXi主机上搭建一整套VSAN集群的环境

从上周起,我开始翻译一本新书.IT类中文书籍的翻译往往有一个术语的问题,如何选择最准确的中文术语,让读者清楚明白而且在实际操作和配置的时候不至于误解,是一件不那么容易的事情.一个简单的例子就是cluster,中文可以译作"集群"或者"群集".这两者本身都广为使用,而且是完全相同的意思.我查了一下中文亚马逊书店,136本IT类中文图书用了"集群",29本用了"群集".看上去"集群"更为普及一些,而且我本人也习

Docker 集群环境实现方式

Docker 集群环境实现的新方式 近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展,加之企业业务需求的不断变化,紧随技术更新的步伐,导致企业架构要随时更改以适合业务需求.当前,越来越多的公司都已将以 Docker 为代表的容器技术用于企业级业务平台,比如:腾讯,京东,美团,新浪,阿里巴巴等互联网公司.数据的安全.Docker 容器的稳定运行是众多用户关注的,这就要求我们提供一套行

Docker 集群环境实现的新方式

近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展,加之企业业务需求的不断变化,紧随技术更新的步伐,导致企业架构要随时更改以适合业务需求.当前,越来越多的公司都已将以 Docker 为代表的容器技术用于企业级业务平台,比如:腾讯,京东,美团,新浪,阿里巴巴等互联网公司.数据的安全.Docker 容器的稳定运行是众多用户关注的,这就要求我们提供一套行之有效的管理大型容器集群的整体解决方