docker-compose

本文介绍如何使用Docker Compose配置haproxy作为负载均衡器,实现对多个容器如Apache和Nginx的服务负载均衡。通过编写Docker Compose文件及haproxy配置文件,一键启动多个容器并实现轮询负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker-compose

docker单独只能run一次创建一个容器,而docker-compose可以对多个容器进行编排。
这里我用docker-compose用haproxy做负载均衡,一键配置多个容器
先导入需要的镜像.haproxy,nginx,apache

因为apche,nginx,的镜像我这里前面导入过了
所以,我这只导了haproxy
[root@foundation3 ~]# docker load -i haproxy.tar 
917c0fc99b35: Loading layer 130.9 MB/130.9 MB
5f70bf18a086: Loading layer 1.024 kB/1.024 kB
c205bb11f213: Loading layer 4.684 MB/4.684 MB
ffef890bdf7b: Loading layer 9.549 MB/9.549 MB
3ec368642ee3: Loading layer 2.048 kB/2.048 kB
Loaded image: haproxy:latest

在/tmp/docker目录下建立compose目录,并编写.yml文件

[root@foundation3 .docker]# cd /tmp/docker/
[root@foundation3 docker]# ls
auth  certs  Dockerfile  dvd.repo  ssh  supervisord.conf  test  web
[root@foundation3 docker]# mkdir compose
[root@foundation3 docker]# cd compose/
[root@foundation3 compose]# ls
[root@foundation3 compose]# pwd
/tmp/docker/compose
[root@foundation3 compose]# vim docker-compose.yml

docker-compose.yml 文件内容为:

apache:
    image: rhel7:v1
    expose:
        - 80
    volumes:
        - ./web:/var/www/html

nginx:
    image: nginx
    expose:
        - 80

haproxy:
    image: haproxy
    volumes:
        - ./haproxy:/usr/local/etc/haproxy
    links:
        - apache
        - nginx
    ports:
        - "8080:80"
    expose:
        - 80

这里写图片描述
编辑haproxy的配置文件,指定web1和web2实现apache和nginx负载均衡

[root@foundation3 compose]# cd ..
[root@foundation3 docker]# cp -r web/  compose/
###为了看到之前写好的apache页面,直接将之前的web拷贝到compose目录里
[root@foundation3 docker]# cd compose/
[root@foundation3 compose]# ls
docker-compose.yml  web
[root@foundation3 compose]# mkdir haproxy
[root@foundation3 compose]# cd haproxy/
[root@foundation3 haproxy]# ls
[root@foundation3 haproxy]# vim haproxy.cfg

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 web1 apache:80 check
    server web2 nginx:80 check

这里写图片描述
在网上下载docker-compose-Linux-x86_64-1.22.0
将其放在/usr/local/bin下,不然没有docker-compose命令

[root@foundation3 compose]# cd /usr/local/bin/
[root@foundation3 bin]# chmod  +x docker-compose-Linux-x86_64-1.22.0 
[root@foundation3 bin]# ln -s docker-compose-Linux-x86_64-1.22.0 docker-compose

以上完成后,就可以启用了

##up推送,crtl+c退出
[root@foundation3 compose]# docker-compose up
Starting compose_apache_1 ... done
Starting compose_nginx_1  ... done
Starting compose_haproxy_1 ... done
Attaching to compose_apache_1, compose_nginx_1, compose_haproxy_1
apache_1   | AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
haproxy_1  | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
^CGracefully stopping... (press Ctrl+C again to force)
Stopping compose_haproxy_1 ... done
Stopping compose_apache_1  ... done
Stopping compose_nginx_1   ... done

在网页测试会实现论询:
这里写图片描述
这里写图片描述
查看状态监控:
这里写图片描述

###crtl + c退出后
[root@foundation3 compose]# docker-compose start  ###直接打开
Starting apache  ... done
Starting nginx   ... done
Starting haproxy ... done
[root@foundation3 compose]# docker ps -a  ##查看容器情况
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
33595ac4a76e        haproxy             "/docker-entrypoin..."   9 minutes ago       Up 16 seconds       0.0.0.0:8080->80/tcp   compose_haproxy_1
fbe24843f3c4        rhel7:v1            "/usr/sbin/httpd -..."   9 minutes ago       Up 17 seconds       80/tcp                 compose_apache_1
96f4c5491008        nginx               "nginx -g 'daemon ..."   9 minutes ago       Up 17 seconds       80/tcp                 compose_nginx_1
[root@foundation3 compose]# docker stop compose_apache_1
compose_apache_1
####关闭apache

当apache被关闭后,查看监控状态,会显示down,当然论询也会失败
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值