美文网首页
Docker学习之:水平扩展和负载均衡

Docker学习之:水平扩展和负载均衡

作者: __apple | 来源:发表于2018-05-26 10:58 被阅读0次

有时候我们一台服务器不够用的时候我们都会多加几台服务器,然后在做个负载均衡之类的操作,那么今天就交给大家一个很厉害的命令,可以很方便的进行负载均衡。

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,接下来我们操作一把。


相关文章

网友评论

      本文标题:Docker学习之:水平扩展和负载均衡

      本文链接:https://www.haomeiwen.com/subject/ijidjftx.html