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


    Compose简介:

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

    安装包:(二进制文件)

    docker-compose-Linux-x86_64-1.22.0
    1
    #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
    1
    2
    3
    4
    5
    6
    7
    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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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"
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

    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
    1
    2
    3
    4
    5.编写haproxy文件

    haproy:提供负载均衡
    1
    [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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27


    [root@server1 haproxy]# ls
    haproxy.cfg
    [root@server1 haproxy]# cd ..
    [root@server1 compose]# ls
    docker-compose.yml haproxy web1 web2
    1
    2
    3
    4
    5
    6.下载并导入镜像

    镜像:

    nginx.tar
    ubuntu.tar
    1
    2
    #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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    7.启动compose

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


    #查看日志
    [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
    1
    2
    3
    4
    测试:

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


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


    管理compose:

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


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

    ————————————————
    版权声明:本文为CSDN博主「奋斗吧,青年!」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lilygg/article/details/88760613

  • 相关阅读:
    ES6 数值类型常用方法
    阿里云如何发布网站
    常用的网站推荐
    笔记一 sql 基础知识
    笔记一 MVC初识
    基础二 面向对象编程
    基础一
    css reset 样式
    CSS 嵌套绝对定位
    ADO
  • 原文地址:https://www.cnblogs.com/ExMan/p/12019411.html
Copyright © 2020-2023  润新知