docker-compose创建haproxy教程

docker,compose,haproxy · 浏览次数 : 24

小编点评

本文主要介绍了如何使用Docker Compose创建HAProxy并进行代理。首先,简要介绍了HAProxy的基本概念和特性,然后详细讲解了如何安装和配置HAProxy,最后通过一个实际的例子展示了如何使用Docker Compose来部署和管理HAProxy。 1. **HAProxy简介**: - 一款基于事件驱动、单进程模型设计的四层与七层负载均衡器。 - 适用于Web服务器负载均衡,同时支持数据库、邮件服务器等多种场景。 - 支持高并发连接和极低延迟。 2. **docker-compose安装下载**: - 使用curl命令下载docker-compose的二进制文件。 - 赋予可执行权限。 - 验证安装。 3. **编写yml文件**: - 定义服务名为"haproxy"。 - 设置镜像为HAProxy。 - 编写配置文件路径。 - 暴露端口6380。 4. **编写配置文件haproxy.cfg**: - 配置全局参数。 - 配置默认后端。 - 配置前端和后端的连接参数。 5. **使用Docker Compose启动容器**: - 运行docker-compose.yml文件。 - 注意配置中的端口映射。 总的来说,本文详细说明了如何使用Docker Compose工具部署和管理HAProxy负载均衡器,包括其安装、配置和实际应用场景的示例。

正文

本文主要讲解通过docker-compose创建haproxy并进行代理

一、haproxy简介
  1. HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡,还能应用于数据库、邮件服务器、缓存服务器等多种场景,支持高达数百万级别的并发连接,并具有极低的延迟
  2. 主要特性
    1. 高性能负载均衡
    2. 健康检查与故障恢复
    3. 会话保持与亲和性
    4. 安全性与SSL卸载
    5. 高级路由与策略
    6. 日志记录与监控
  3. 优点
    1. 高性能:HAProxy是一个高性能的负载均衡器,可以处理大量的并发连接
    2. 灵活性:HAProxy支持多种负载均衡算法,如轮询、加权轮询、最少连接等,可以根据实际需求选择合适的算法
    3. 高可用性:HAProxy可以检测服务器的健康状态,如果某个服务器出现故障,它可以自动将流量转移到其他健康
    4. 安全性:HAProxy可以作为反向代理,隐藏后端服务器的真实IP地址,提高系统的安全性。
  4. 缺点
    1. 单点故障:如果HAProxy本身出现故障,可能会导致整个系统的服务不可用
    2. 配置复杂:HAProxy的配置相对复杂,需要一定的学习成本
    3. 性能瓶颈:虽然HAProxy的性能很高,但在处理大量并发连接时,可能会成为系统的性能瓶颈
    4. 功能单一:只支持做负载均衡的调度服务器,不支持正则处理,不能实现动静分离,也不能做web服务器
二、docker-compose安装

下载docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

赋予执行权限

sudo chmod +x /usr/local/bin/docker-compose

验证安装

docker-compose --version
三、编写yml文件
version: '3'
services:
  haproxy:
    image: haproxy  # 可以使用为本地镜像的名称或路径,
    container_name: my-haproxy
    volumes:
      - /project/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg # /project/haproxy/haproxy.cfg为我存放配置文件的地址
    ports:
      - "6380:6380" # 需要从容器内映射到宿主机的对象,这个地址是经过haproxy已经转发过的地址,不是初始地址, 这里的端口
    restart: always

四、编写配置文件haproxy.cfg
global
    maxconn 65535  # 最大并发连接数
    stats socket /var/run/haproxy.stat mode 600 level admin  # HAProxy 统计信息的套接字
    log 127.0.0.1 local0  # 日志服务器
    uid 200  # HAProxy 进程的用户 ID
    gid 200  # HAProxy 进程的组 ID
    # chroot /var/empty  # 取消注释以启用 chroot 以增加安全性
    daemon  # 以守护进程方式运行 HAProxy

defaults
    mode http  # 默认模式设置为 HTTP
    log global  # 使用全局日志配置
    option httplog  # 启用详细的 HTTP 日志记录
    option dontlognull  # 不记录没有数据的连接
    monitor-uri /monitoruri  # HAProxy 监控的 URI
    maxconn 8000  # 每个后端的最大并发连接数
    timeout client 30s  # 客户端超时时间
    retries 2  # 连接失败时的重试次数
    option redispatch  # 启用会话重新分配
    timeout connect 5s  # 建立到后端的连接的超时时间
    timeout server 5s  # 服务器响应超时时间
    stats uri /status  # 访问 HAProxy 统计信息的 URI

frontend custom_frontend
    mode tcp  
    # 转发请求的地址以及请求从 HAProxy 出去的端口
    bind *:6380  # 绑定前端到所有接口的 6380 端口 这里的端口
    default_backend custom_servers  # 此前端使用的默认后端

backend custom_servers
    mode tcp  
    # 服务器的内部地址(将 10.10.11.11:30028 替换为所需的地址)
    server custom1 10.10.11.11:30028 maxconn 1000  最大连接数为 1000    
五、 最后

最后我们则直接通过docker-compose启动命令执行docker-compose.yml文件则可以运行容器,在配置的过程中我们需要注意的是在haproxy绑定的端口是我们在docker-compose中暴露的端口,大家不要配置错误

haproxy官方地址:https://www.haproxy.com/

如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧🙂

与docker-compose创建haproxy教程相似的内容:

docker-compose创建haproxy教程

本文主要讲解通过docker-compose创建haproxy并进行代理 一、haproxy简介 HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡,还能应

【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误

{ "code":"DeploymentFailed", "message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usag

[转帖]Docker-Compose 自动创建的网桥与局域网冲突解决方案

https://zhuanlan.zhihu.com/p/379305319 Docker-Compose 自动创建的网桥与局域网冲突解决方案 当我使用docker-compose的方式部署内网的harbor时。它自动创建了一个bridge网桥,与内网的一个网段(172.18.0.1/16)发生冲突

[转帖]docker报错:报错br-xxxx 之Docker-Compose 自动创建的网桥与局域网络冲突

https://www.dianjilingqu.com/653590.html 故障描述: 当我使用docker-compose的方式部署内网的harbor时。它自动创建了一个bridge网桥,与内网的一个网段(172.18.0.1/16)发生冲突,docker 默认的网络模式是bridge ,默

Docker Compose V2 安装常用数据库MySQL+Mongo

主要增加对容器创建 MySQL、Mongo 时对 数据文件,日志,配置,网络,时区,端口映射,密码 的配置,更贴合生产环境的实际使用

[转帖]harbor 更改网段(docker-compose)

`https://blog.csdn.net/Darkernote/article/details/119390862` 问题:harbor 安装后网段冲突 docker-compose 一般安装会创建一个默认的网桥ip为172.17,18有和公司网络冲突的可能 解决方案: 一、 查看docker

日志采集/分析

目录EFK1. 日志系统2. 部署ElasticSearch2.1 创建handless服务2.2 创建sts3. 部署kibana4. 部署ilogtail(docker-compose)4.1 编写docker-compose4.2 配置ilogtail采集4.3 查看容器采集的日志4.4 采集

关于docker-compose up -d 出现超时情况处理

由于要搭建一个ctf平台,用docker一键搭建是出现超时情况 用了很多办法,换源,等之类的一样没办法,似乎它就是只能用官方那个一样很怪。 只能用一种笨办法来处理了,一个个pull。 打个比如: 打开相对应docker-compose.yml文件 可以看到image就是需要去下载的。那么此时你就可以

Docker Compose V2 安装 ClickHouse v20.6.8.5 经验分享

前言 ClickHouse 是一款开源的分布式列式数据库管理系统,专门设计用于高性能的大数据分析和查询。 目前项目中用到的一个场景是将mongo的数据同步到clickhouse,使用clickhouse做报表,后续也将分享同步和使用方案 使用 Docker Compose 部署单机版,小项目和自己测

[转帖]docker-compose完全清除

https://www.cnblogs.com/gelandesprung/p/12112420.html#:~:text=docker-compose%E5%AE%8C%E5%85%A8%E6%B8%85%E9%99%A4%20%E9%80%9A%E8%BF%87yml%E6%96%87%E4%B