首页 > 其他分享 >docker-compose创建haproxy教程

docker-compose创建haproxy教程

时间:2024-07-09 15:41:27浏览次数:20  
标签:haproxy HAProxy compose 地址 服务器 docker

本文主要讲解通过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/

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

标签:haproxy,HAProxy,compose,地址,服务器,docker
From: https://www.cnblogs.com/ancold/p/18292082

相关文章

  • docker 设置日志大小限制
    docker设置日志大小限制防止docker运行时使用df-h时候查看占用会将固态硬盘占用满overlay占用比较高检查overlay占用高的方法:每次创建一个容器时,都会有一些文件和目录被创建,例如:/var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形......
  • Haproxy搭建Web群集
    一:案例分析1:案例概述2:案例前置知识3:案例环境二:案例实施1:编译安装nginx服务器(两个nginx网站的步骤完全一样,只有测试页面不同)[root@localhost~]#yum-yinstallpcre-develzlib-develgcc*[root@localhost~]#useradd-M-s/sbin/nologinnginx[root@localhost~]......
  • haproxy搭建Web集群
    一.案例概述    haproxy是目前比较流行的一种群集调度工具,同类工具中lvs性能更好,但搭建相对复杂;nginx的upstream模块支持群集功能,但是对群集节点健康检测功能不强,高并发性能没有Haproxy好;Haproxy的官方网站是http://www.haproxy.org/。    常见的Web群集调度......
  • nvidia docker Cannot load libnvcuvid.so.1
    问题使用docker对runtime进行封装,程序需要用到GPU且在host正常运行,在容器内则报错:Cannotloadlibnvcuvid.so.1[hevc_cuvid@0x559da3fbd80]Failedloadingnvcuvid.terminatecalledafterthrowinganinstanceof'std::runtime_error'what():failedtoopenavcod......
  • Docker日志批量清理
    转发:原文:https://blog.csdn.net/u013737132/article/details/134639909Docker容器日志查看查看所有容器数据大小并按倒序排列:du-d1-h/var/lib/docker/containers|sort-rhdu:用于估算文件或目录空间使用量。-d1:仅显示深度为1的目录,即只显示直接子目录的信息。......
  • docker安装mysql8.0.23
    拉取镜像dockerpullmysql:8.0.23创建挂载文件mkdir-p/home/docker/mysql/confmkdir-p/home/docker/mysql/datamkdir-p/home/docker/mysql/logcd/home/docker/mysql/conftouchmy.cnf编辑my.cnfvimy.cnf内容如下:default-character-set=utf8[mysql]defa......
  • Ubuntu安装docker
    1、首先查看内核以及架构详细信息命令uname-aPS:安装的是较新版本的ubuntu22.04.2的可以省略(我安装的就是这个版本) 2、安装软件之前的尽可能下意识执行的三个命令sudoapt-getupdatesudoapt-getupgradesudoapt-getfull-upgrade 3、添加Docker库1)安装必要的证书......
  • docker基础
    Docker原理和概念镜像:类似于c++中的类,创建出一种具有独特属性的类容器:类似于c++中的实例化的对象仓库:储存镜像的地方,可以订阅别人创好的镜像,也可以上传自己的对象使用Client-Server架构模式,DockerClient和DockerDaemon之间,通过Socket或者RESTfulAPI进行通信安装配置......
  • Docker容器的基本操作
    1容器操作添加容器的两种方法会自动添加生成一个随机名字#启动dockersystemctlstatusdockersystemctlstartdockersystemctldaemon-reload#重新加载docker配置systemctlrestartdocker#重启docker#1镜像操作 -dockersearch -dockerpull......
  • 构建自己的docker基础镜像
    构建自己的docker基础镜像构建一个完全定制的基础镜像意味着您需要从一个非常小的镜像(例如scratch镜像)开始,然后逐步添加您需要的所有内容。scratch镜像是一个空白的基础镜像,可以用来创建高度定制的容器环境。创建一个基础镜像构建debian基础镜像准备根文件系统:要构......