有时候我们一台服务器不够用的时候我们都会多加几台服务器,然后在做个负载均衡之类的操作,那么今天就交给大家一个很厉害的命令,可以很方便的进行负载均衡。
stevendeAir:flask-redis steven$ docker-compose up --scale web=3 -d
Creating network "flaskredis_default" with the default driver
WARNING: The "web" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating flaskredis_redis_1 ...
Creating flaskredis_web_1 ... error
Creating flaskredis_web_2 ... error
Creating flaskredis_web_3 ... done
我们想通过scale命令启动三个web服务,竟然报错了,原因是什么呢?原来是因为我们的yml文件,把端口映射到外部的8080,那么我们有单个web服务都映射到8080,就会出现端口占用的情况,怎么办?删除它就OK了。删除之后的yml文件如下。。。
version: "2"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redis
删除之后我们发现果然操作成功了
stevendeAir:flask-redis steven$ docker-compose up --scale web=3 -d
Recreating flaskredis_web_1 ...
Recreating flaskredis_web_1 ... done
Recreating flaskredis_web_2 ... done
Recreating flaskredis_web_3 ... done
这个时候我们还需要一个代理的镜像,就是需要一个不变的ip,怎么做呢?看下面
version: "3"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redis
lb:
image: dockercloud/haproxy
links:
- web
ports:
- 8080:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
这里要注意的是你需要把flask的启动端口改成80,接下来我们操作一把。
网友评论