docker搭建haproxy实现负载均衡

server/2024/12/14 19:16:08/

华子目录

  • 获取`haproxy镜像`
  • 建立`haproxy容器`的`数据卷`
  • 获取`haproxy`的`配置文件`
  • 编写`yaml文件`
  • 运行
  • 测试

获取haproxy镜像

[root@docker-node1 ~]# docker pull haproxy:2.3

建立haproxy容器数据卷

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

获取haproxy配置文件

[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数据卷
[root@docker-node1 mnt]# cd etc/haproxy/
[root@docker-node1 haproxy]# cp haproxy.cfg /var/lib/docker/volumes/conf/
  • 修改配置文件
[root@docker-node1 haproxy]# cd /var/lib/docker/volumes/conf/
[root@docker-node1 conf]# vim haproxy.cfg

在这里插入图片描述

编写yaml文件

[root@docker-node1 ~]# cd huazi/
[root@docker-node1 huazi]# vim haproxy.yml
services:web1:image: nginx:1.23container_name: webserver1restart: alwaysexpose:- 80volumes:- data_web1:/usr/share/nginx/htmlnetworks:- internelweb2:image: nginx:1.23container_name: webserver2restart: alwaysexpose:- 80volumes:- data_web2:/usr/share/nginx/htmlnetworks:- internelhaproxy:image: haproxy:2.3container_name: haproxyrestart: alwaysports:- "80:80"volumes:- /var/lib/docker/volumes/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfgnetworks:- internel- externelnetworks:internel:driver: bridgeexternel:driver: bridgevolumes:data_web1:name: data_web1data_web2:name: data_web2

运行

[root@docker-node1 huazi]# docker compose -f haproxy.yml up -d
[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

测试

  • 建立测试网页
[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
[root@docker-node1 huazi]# curl 172.25.254.100
webserver1
[root@docker-node1 huazi]# curl 172.25.254.100
webserver2

http://www.ppmy.cn/server/150166.html

相关文章

制作WINDOWS恶意软件以获取AHELL时,通常使用什么软件

制作 Windows 恶意软件并获得 Ahell(假设是指“Access Hell”或者类似的控制/权限提升目标)时,攻击者通常会使用一系列工具和技术来构建和部署恶意软件。以下是一些常见的工具和技术,它们被广泛用于创建恶意软件并获取系统权限&am…

第二章 包装类和泛型

一 包装类 1.产生的原因: Java的发明者既想要保存原有基本类型不变,但同时很多功能机制又需要为引用类型/类才可以使用(可以将其与Object类统一为统一体系),所以将基本类型包装了一下,为包装类型 2.写法…

RabbitMQ中点对点(Point-to-Point)通讯方式的Java实现

RabbitMQ是一个广泛使用的开源消息代理软件,它实现了高级消息队列协议(AMQP)。RabbitMQ支持多种消息传递模式,其中最基本的是点对点(Point-to-Point)通讯方式。在这种模式下,消息生产者将消息发…

java配置环境变量 jdk配置环境变量 linux环境

一. 使用yum安装jdk centos系统中可以使用yum来安装jdk, 执行以下命令 查询yum仓库信息 yum list java* java-1.8.0-openjdk.x86_64 1:1.8.0.422.b05-1.1.al7 updates java-1.8.0-openjdk-devel.x86_64 …

使用Vue.js的步骤

使用Vue.js开发一个应用的详细流程和代码示例如下: 1. 环境准备和项目初始化 使用Vue CLI创建项目 Vue CLI是一个全局命令行工具,用于快速搭建Vue项目。首先,你需要安装Vue CLI: bash npm install -g vue/cli # 或者 yarn glo…

【解决】k8s使用flannel网络插件的问题整理

问题1: 拉取镜像失败ImagePullBackOff 问题排查 1、查看所有pod的状态 kubectl get pods --all-namespaceskube-flannel的两个pod状态为ImagePullBackOff,由于镜像拉取异常导致 2、查看pod启动日志,获取更详细的信息 kubectl logs -n 命名空间namesp…

以ATTCK为例构建网络安全知识图

ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge )是一个攻击行为知识库和模型,主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。本文简单介绍ATT&CK相关的背景概念,并探讨通过ATT&a…

Qt之截图存为图片或PDF打印(七)

Qt开发 系列文章 - Screenshot-To-PicOrPDF(七) 目录 前言 一、截图 二、功能实现 1.创建项目 2.新建类 3.编写类 1.定义头文件 2.相关功能函数 3.使用类 总结 前言 本文利用Qt平台,实现屏幕截图功能,并将截图复制、保…