Docker容器技术:水平扩展和负载均衡

394 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情 Docker Compose安装和使用

1. compose的scale

这节课主要学习scale这个功能:

目前我们只有一个redis容器,一个web容器,但是我们可以通过scale来启动多个容器:

这里我们直接按照提示来输入指定,尝试生成3个web容器:

docker-compose up --scale web=3 -d

但是报错了:

这个失败的原因,是因为yml里面对web做了端口映射,但是如果启动3个容器,是没办法把各自端口都映射到同一个端口8080上的,这里我们先删除ports字段,然后启动:

2. 扩展和负载均衡

这里我们来了解一下一种较为理想的网络部署和访问模式

HAProxy充当负载均衡器,可以把外界的访问流量转发到任意一个web容器上,同时任意一个web容器都对接redis容器,这样部署web服务将来的扩展性也会很强,例如将来发现流量暴增,传统做法是加机器,现在通过compose我们可以很快把web容器扩展到10个。

3. 实例

本节课实例使用了haproxy,但是原理这里不阐述了,有需要的可以网上自己找一下:

image.png

这里web容器的dockerfile露出的是80端口,并通过loadbanlance是把自身80映射到本地的8080.

这里我们直接进到对应目录下,执行:

docker-compose up -d

然后我们通过scale扩展容器:

docker-compose up --scale web=3 -d

image.png

我们发现对服务的访问是通过负载均衡对对应的web容器进行请求,轮询了~

当然也可以减少容器,节约资源:

image.png

目前的docker-compose的scale只能限制在一台资源上面,能不能多机进行呢?这个就需要后面讲解的docker swarm--集群上面操作了~