Docker Compose 部署Nginx服务实现负载均衡

Compose简介:

Compose是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose,不再需要使用shell脚本来启动容器。
Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用。
docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过image 指令指定镜像或 build指令(需要Dockerfile)来自动构建镜像。

1.下载并安装docker-compose

安装包:(二进制文件)

docker-compose-Linux-x86_64-1.22.0
#1.下载
[root@server1 ~]# ls
docker-compose-Linux-x86_64-1.22.0
#2.拷贝二进制文件
[root@server1 ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
#3.添加权限
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose

2.创建目录

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

3.编写compose文件

[root@server1 compose]# vim docker-compose.yml
#######################
web1:                                             #容器名称
        image: nginx                              #镜像名称
        expose:                                   #对外暴露端口
                - 80
        volumes:                                  #挂载卷
                - ./web1:/usr/share/nginx/html    #将当前目录下的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"

在这里插入图片描述
4.编写发布文件

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

5.编写haproxy文件

haproy:提供负载均衡
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# ls
[root@server1 haproxy]# vim 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              #轮询算法;check表示健康检查
        server server1 web1:80 check
        server server2 web2:80 check

在这里插入图片描述

[root@server1 haproxy]# ls
haproxy.cfg
[root@server1 haproxy]# cd ..
[root@server1 compose]# ls
docker-compose.yml  haproxy  web1  web2

6.下载并导入镜像

镜像:

nginx.tar  
ubuntu.tar
#1.下载镜像
[root@server1 ~]# ls
nginx.tar  ubuntu.tar
#2.导入镜像
[root@server1 ~]# docker load -i nginx.tar 
[root@server1 ~]# docker load -i haproxy.tar 
#3.查看年镜像
[root@server1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              881bd08c0b08        2 weeks ago         109MB
haproxy             latest              fbd1f55f79b3        3 years ago         139MB

7.启动compose

[root@server1 ~]# cd /tmp/docker/compose
#启动;注意必须在此路径下才能执行
[root@server1 compose]# docker-compose up -d 

在这里插入图片描述

#查看日志
[root@server1 compose]# docker-compose logs
Attaching to compose_haproxy_1, compose_web1_1, compose_web2_1
haproxy_1  | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds 

测试:

输入: http://172.25.66.1/status  发现可以实现健康检查

在这里插入图片描述

输入:http://172.25.66.1/  刷新网页,发现可以实现轮询

在这里插入图片描述
在这里插入图片描述
管理compose:

#必须先关闭才能删除
[root@server1 haproxy]# docker-compose stop
[root@server1 haproxy]# docker-compose rm

在这里插入图片描述

#下次想再使用,只需再开启即可
[root@server1 haproxy]# docker-compose up -d

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lilygg/article/details/88760613