docker搭建haproxy实现负载均衡

华子目录

获取haproxy镜像

bash 复制代码
[root@docker-node1 ~]# docker pull haproxy:2.3

建立haproxy容器数据卷

  • conf目录数据卷
bash 复制代码
[root@docker-node1 ~]# mkdir /var/lib/docker/volumes/conf/

获取haproxy配置文件

bash 复制代码
[root@docker-node1 ~]# yum install haproxy -y --downloadonly --downloaddir=/mnt

[root@docker-node1 ~]# cd /mnt/

[root@docker-node1 mnt]# rpm2cpio haproxy-2.4.17-3.el9.x86_64.rpm | cpio -id

[root@docker-node1 mnt]# ls
etc  haproxy-2.4.17-3.el9.x86_64.rpm  usr  var
  • 配置文件cpconf数据卷
bash 复制代码
[root@docker-node1 mnt]# cd etc/haproxy/
[root@docker-node1 haproxy]# cp haproxy.cfg /var/lib/docker/volumes/conf/
  • 修改配置文件
bash 复制代码
[root@docker-node1 haproxy]# cd /var/lib/docker/volumes/conf/
[root@docker-node1 conf]# vim haproxy.cfg

编写yaml文件

bash 复制代码
[root@docker-node1 ~]# cd huazi/
[root@docker-node1 huazi]# vim haproxy.yml
services:
  web1:
    image: nginx:1.23
    container_name: webserver1
    restart: always
    expose:
      - 80
    volumes:
      - data_web1:/usr/share/nginx/html
    networks:
      - internel


  web2:
    image: nginx:1.23
    container_name: webserver2
    restart: always
    expose:
      - 80
    volumes:
      - data_web2:/usr/share/nginx/html
    networks:
      - internel


  haproxy:
    image: haproxy:2.3
    container_name: haproxy
    restart: always
    ports:
      - "80:80"
    volumes:
      - /var/lib/docker/volumes/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
    networks:
      - internel
      - externel


networks:
  internel:
    driver: bridge

  externel:
    driver: bridge

volumes:
  data_web1:
    name: data_web1

  data_web2:
    name: data_web2

运行

bash 复制代码
[root@docker-node1 huazi]# docker compose -f haproxy.yml up -d
bash 复制代码
[root@docker-node1 huazi]# docker compose -f haproxy.yml ps
NAME         IMAGE         COMMAND                   SERVICE   CREATED        STATUS                                                                                                                  PORTS
haproxy      haproxy:2.3   "docker-entrypoint.s..."   haproxy   13 hours ago   Up 13 hours   0                                                                                                          .0.0.0:80->80/tcp, :::80->80/tcp
webserver1   nginx:1.23    "/docker-entrypoint...."   web1      13 hours ago   Up 13 hours   8                                                                                                          0/tcp
webserver2   nginx:1.23    "/docker-entrypoint...."   web2      13 hours ago   Up 13 hours   8                                                                                                          0/tcp

测试

  • 建立测试网页
bash 复制代码
[root@docker-node1 huazi]# echo webserver1 > /var/lib/docker/volumes/data_web1/_data/index.html
[root@docker-node1 huazi]# echo webserver2 > /var/lib/docker/volumes/data_web2/_data/index.html
bash 复制代码
[root@docker-node1 huazi]# curl 172.25.254.100
webserver1
[root@docker-node1 huazi]# curl 172.25.254.100
webserver2
相关推荐
影龙帝皖17 分钟前
Linux服务之lvs集群与dr模式部署
linux·服务器·lvs
2302_7995257427 分钟前
【Linux】第十六章 分析和存储日志
linux·运维·服务器
愚润求学1 小时前
【Linux】Ext系列文件系统
linux·运维·服务器·笔记
微刻时光1 小时前
影刀RPA网页自动化总结
运维·人工智能·python·低代码·自动化·rpa·影刀rpa
2301_787552871 小时前
Lightpanda开源浏览器:专为 AI 和自动化而设计的无界面浏览器
运维·自动化
小阳睡不醒1 小时前
vim 练习题
linux·编辑器·vim
胖大和尚1 小时前
完整的 CentOS 6.10 虚拟机安装启动脚本
linux·运维·centos
酷爱码2 小时前
Nginx的核心功能--正向代理、反向代理、缓存和Rewrite
运维·nginx·缓存
熙曦Sakura2 小时前
【Linux网络】TCP全连接队列
linux·网络·tcp/ip
脚比路长3 小时前
win11 安装 wsl ubuntu 18.04后换源失败!
linux