Docker三剑客--Docker compose(多容器架构实现负载均衡)

Docker-compose简介

  • Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
  • Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr)。Docker Compose 运行的目录下的所有文件(docker-compose.yml, extends 文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker Compose 并没有解决负载均衡的问题,因此需要借助其他工具实现服务发现及负载均衡。
  • Docker Compose 是一个用来创建和运行多容器应用的工具。使用 Compose 首先需要编写Compose 文件来描述多个容器服务以及之间的关联,然后通过命令根据配置启动所有的容器。
  • Dockerfile 可以定义一个容器,而一个 Compose 的模板文件(YAML 格式)可以定义一个包含多个相互关联容器的应用。Compose 项目使用 python 编写,基于后面的实验中我们将学习的 Docker API 实现。

多容器架构部署

环境部署:

rhel7.3虚拟机server1

具体部署:

<1>安装docker-compose

官网上下载docker-compose-Linux-x86_64-1.22.0

[root@server1 ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose

[root@server1 ~]# chmod +x /usr/local/bin/docker-compose

<2>部署compose

[root@server1 ~]# mkdir /tmp/docker/compose -p

[root@server1 ~]# mkdir /tmp/docker/compose -p

[root@server1 ~]# cd /tmp/docker/compose/

[root@server1 compose]# vim docker-compose.yml  ##.yml文件的编写一定要注意冒号“:”与“-”后要有空格

web1:
        image: nginx
        expose:
                - 80                 ## "-"表示列表方式
        volumes:
                - ./web1:/usr/share/nginx/html

web2:
        image: nginx
        expose:
                - 80
        volumes:
                - ./web2:/usr/share/nginx/html

haproxy:
        image: haproxy
        volumes:
                - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
        links:
                - web1
                - web2
        ports:
                - "80:80"
        expose:
                - "80"

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第1张图片

<3>编写web测试页

[root@server1 compose]# mkdir web1 web2

[root@server1 compose]# echo web1 > web1/index.html

[root@server1 compose]# echo web2 > web2/index.html

<4>负载均衡

[root@server1 compose]# mkdir haproxy

[root@server1 compose]# vim haproxy/haproxy.cfg

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    stats uri /status

frontend balancer
    bind 0.0.0.0:80
    default_backend web_backends

backend web_backends
    balance roundrobin
    server server1 web1:80 check
    server server2 web2:80 check

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第2张图片

<5>准备docker容器:

  • haproxy镜像与nginx镜像

[root@server1 ~]# docker load -i haproxy.tar

[root@server1 ~]# docker load -i nginx.tar

<6>在项目路径下通过 docker-compose up 命令启动应用

第一次开启服务需要up,再次直接start、stop

[root@server1 ~]# cd /tmp/docker/compose/

[root@server1 compose]# docker-compose up -d

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第3张图片

负载均衡测试:

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第4张图片

浏览器访问172.25.81.1/status

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第5张图片

 

web1停止时:

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第6张图片

自带健康检查:

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第7张图片

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第8张图片

 

关闭docker-compose:

必须先关闭再进行删除:

[root@server1 compose]# docker-compose stop

[root@server1 compose]# docker-compose rm

Docker三剑客--Docker compose(多容器架构实现负载均衡)_第9张图片

你可能感兴趣的:(Docker三剑客--Docker compose(多容器架构实现负载均衡))