Docker學習之:水平擴展和負載均衡

有時候我們一臺服務器不夠用的時候我們都會多加幾臺服務器,然后在做個負載均衡之類的操作,那么今天就交給大家一個很厲害的命令,可以很方便的進行負載均衡。

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,就會出現(xiàn)端口占用的情況,怎么辦?刪除它就OK了。刪除之后的yml文件如下。。。

version: "2"

services:
  redis:
    image: redis
  web:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      REDIS_HOST: redis

刪除之后我們發(fā)現(xiàn)果然操作成功了

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


?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容