docker 的水平拓展和负载均衡 —— scale

 

 

说明:假设你想启动3个 redis,那么你先使用 docker-compose up -d,起来一个服务,然后再使用 scale 进行拓展

 

1、docker-compose.yml 文件:

version: '3'
services:
  web:
    image: nginx

  redis:
    image: redis

 

—— 请注意,这里因为我们要使用到水平拓展,所以是不能绑定端口的,即不能设定以下内容:

 

2、执行 scele:

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

—— 这里的 --scale web=3,是我们设定的服务里面的web 需要启动三个容器。

—— 我们使用 docker-compose ps ,能够查看到此时三个 web 的容器都开启了5000端口,但是并没有映射到本地。

如下:自然生成了三个 web 服务

 

 

—— 我们需要使用一个负载均衡器(HAProxy)将请求分散到三个容器,然后可以通过三个容器再进行请求真正的压力,这就是负载均衡的概念, 如下:

 

3、如果这时候想把 web 容器拓展成 10 个,那么执行一样的命令即可:

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

—— 会自动重启,并开启10个。

 

4、使用haproxy 的 docker-compose.yml 文件示例:

version: '3'
services:
  web:
    image: nginx

  redis:
    image: redis
  lib: 
    image: dockercloud/haproxy 
    links: 
      - web 
    ports: 
      - 8080:80 

 

然后执行:

docker-compose up -d

然后拓展 web =3:

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

然后访问127.0.0.1:8080,每次返回的主机是不一样的。

———— 以上,scale 是单机的,可以在多机子上使用 swarm / k8s 等

 

 

———— 未实验成功,之后再说。 

 

 

 

 

 

 

 

————占位符

posted @ 2018-12-17 21:32  小寒1206  阅读(3449)  评论(0编辑  收藏  举报