Docker Swarm 集群 实现负载均衡

本文详细介绍了如何使用Docker Swarm搭建集群,并实现负载均衡。首先,通过启动Swarm模式并设置节点,创建了一个Docker集群。接着,部署了Nginx服务,配置了3个副本,映射端口实现负载均衡。在物理机上,通过监控和操作,验证了集群的负载均衡功能,当关闭一个主机时,流量自动转移到其他主机上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in go, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用Go语言来完成开发,上周五,4月17号,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。

Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。下面是Swarm的结构图:

这里写图片描述

这里写图片描述

Docker集群管理需要服务发现(Discovery service backend)功能。Swarm支持以下几种discovery service backend:Docker Hub上面内置的服务发现功能,本地的静态文件描述集群(static file describing the cluster),etcd(顺带说一句,etcd这玩意貌似很火很有前途,有时间研究下),consul,zookeeper和一些静态的ip列表(a static list of ips)。本文会详细介绍前面两种方法backend的使用。

清空之前负载均衡环境

这里写图片描述

一、搭建集群

[root@server1 ~]# ls
docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
[root@server1 ~]# yum install -y docker-engine-*
[root@server1 ~]# scp * server2:
[root@server1 ~]# scp * server3:
[root@server1 ~]# systemctl start docker
[root@server1 ~]# docker swarm init    #初始化

在当前主机上启动swarm模式,要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥

这里写图片描述

【server2】

[root@server2 ~]# yum install docker-engine-* -y
[root@server2 ~]# systemctl start docker
[root@server2 ~]# docker swarm join \
> --token SWMTKN-1-0807sj8p46kkdgrvsdozw3n8y23wgehvanvby1bq6yob0w45lk-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值