1. 程式人生 > >docker compose 應用案例 web負載均衡

docker compose 應用案例 web負載均衡

安裝docker-compose

這種方式是將Compose當做一個Python應用從pip源中安裝, 其他安裝方式可以自行百度。
sudo pip3 install -U docker-compose

安裝完成後,可以檢視docker-compose的用法:
docker-compose -h

這裡寫圖片描述

新建工作目錄

本文將haproxy_web作為案例演示的工作目錄。
整體檔案結構如下:

這裡寫圖片描述

docker-compose.yml 是docker-compose的配置檔案,用於編排容器群。
haproxy目錄下的haproxy.cfg 是haproxy負載均衡器的配置檔案
web目錄下是用來製作web應用容器的目錄。
Dockerfile是映象製作的檔案
static views conf是web專案的靜態資源, myserver是改名後的應用程式。 web目錄下的之後要掛在進centos:latest容器內。

製作web應用容器

因為之前使用過golang語言的beego框架, 這裡為了方便就直接使用beego框架的案例了。
在beego專案的目錄下執行:
go build main.go

這裡寫圖片描述

綠色的main就是這個web專案的可執行檔案, 值得注意的是本機使用的是ubuntu 64位,要使用的web伺服器是centos 64位, 所以這裡build就缺省了相應的構建引數。
將這個 main可執行檔案 conf目錄 static目錄 views目錄 拷貝到工作目錄下的web目錄下 main檔案改名為myserver. 將 conf目錄下的配置檔案埠8080改成80埠。
web目錄下結構如下:
這裡寫圖片描述

編輯Dockerfile檔案:

vim Dockerfile

檔案內容如下:

FROM centos:latest
WORKDIR /web-server
ADD . /web-server
EXPOSE 8080
RUN chmod 755 myserver 
CMD ./myserver

這裡可以使用docker build -t myserver:1.0 .命令來構建映象,docker run -p 80:80 -d myserver:1.0執行映象, 來測試Dockerfile檔案是否正確配置。

負載均衡配置

編輯負載均衡的配置檔案:
vim haproxy.cfg

檔案內容如下:

global 
    log
127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 4096 defaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms listen stats bind 0.0.0.0:70 mode http stats enable stats hide-version stats scope . stats realm Haproxy\ Statistics stats uri / stats auth user:pass frontend balancer bind 0.0.0.0:80 mode http default_backend web_backends backend web_backends mode http option forwardfor balance roundrobin server weba weba:80 check server webb webb:80 check server webc webc:80 check option httpchk GET / http-check expect status 200

docker-compose配置

編輯docker-compose配置檔案docker-compose.yml:

vim docker-compose.yml

內容如下:

weba:
    build: ./web
    expose:
        - 80

webb:
    build: ./web
    expose:
        - 80

webc:
    build: ./web
    expose:
        - 80

haproxy:
    image: haproxy:1.6
    volumes:
        - ./haproxy:/haproxy-override
        - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
    links:
        - weba
        - webb
        - webc
    ports:
        - "80:80"
        - "70:70"

在工作目錄下執行:

docker-compose up --build

執行結果如下:
這裡寫圖片描述
這裡寫圖片描述

注意:
為了加速構建速度, 在之前應該拉去相應的映象:

docker pull centos:latest
docker pull haproxy:1.6