說明:假設你想啟動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 等
———— 未實驗成功,之后再說。
————占位符