本文主要讲解通过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
ports:
- "6380:6380" # 需要从容器内映射到宿主机的对象,这个地址是经过haproxy已经转发过的地址,不是初始地址, 这里的端口
restart: always
四、编写配置文件
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教程的更多相关文章

  1. Docker Compose 创建yml 简单试例

    Docker Compose 创建yml 简单试例 Docker Compose 文件使用格式版本需要与Docker版本对应可在官网内查找 查找地址:https://docs.docker.com/c ...

  2. Docker | Compose创建mysql容器

    本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...

  3. docker和docker compose常用操作命令

    首先区分一下docker中几个概念 Image:镜像,相当于一个root文件系统,不包含任何动态数据 Container:容器,镜像运行时的实体,实质是进程,容器进程运行于属于自己的独立的命名空间 d ...

  4. Docker编排工具Docker Compose的使用

    一.安装docker compose 官网推荐方式之一: sudo curl -L "https://github.com/docker/compose/releases/download/ ...

  5. Linux系统上安装docker + Compose并创建WordPress

    安装docker可参考我的另一篇文章 安装Compose Docker Compose 是 Docker 官方编排(Orchestration)项目之一, 负责快速在集群中部署分布式应用. 方法一 1 ...

  6. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  8. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

  9. Docker学习笔记 - Docker Compose 脚本命令

    Docker Compose 配置文件包含 version.services.networks 三大部分,最关键的是 services 和 networks 两个部分, version: '2' se ...

  10. Docker学习笔记 - Docker Compose

    一.概念 Docker Compose 用于定义运行使用多个容器的应用,可以一条命令启动应用(多个容器). 使用Docker Compose 的步骤: 定义容器 Dockerfile 定义应用的各个服 ...

随机推荐

  1. pageoffice6 版本在线打开word 文件,实现多用户同时编辑

    总体来说,各种Web系统中的Word文档在线处理大体可以分为以下四种流转处理方式: A用户编辑完,流转给B用户修改,再流转给C用户修改,直到最后.每个用户都是针对全文修改的,如果需要在这一篇文档中能区 ...

  2. 我发现了字节OpenApi接口的bug!

    本文记录我在对接字节旗下产品火山云旗下云游戏产品 OpenApi 接口文档时遇到的坑,希望能帮助大家(火山云旗下云游戏产品的文档坑很多,我算是从零到一都踩了一遍,特此记录,希望大家引以为鉴). 1. ...

  3. openstack 错误(报错)集合

    1. 执行nova命令报错: ERROR (CommandError): You must provide a username or user ID via --os-username, --os- ...

  4. Mono 支持LoongArch架构

    近期,著名的.NET开源社区Mono正式支持LoongArch(龙架构),目前LoongArch64架构已出现在.NET社区主干分支上. 详细内容可以跟踪 https://github.com/mon ...

  5. django多表关联实战

    定义模型类: from django.db import models from django.contrib.auth.models import User ''' ---------- Djang ...

  6. 深入理解Vue 3:计算属性与侦听器的艺术

    title: 深入理解Vue 3:计算属性与侦听器的艺术 date: 2024/5/30 下午3:53:47 updated: 2024/5/30 下午3:53:47 categories: 前端开发 ...

  7. Python 将Word/ Exce/ PDF/ PPT文档转为OFD文档

    OFD(Open Fixed-layout Document )是我国自主制定的一种开放版式文件格式标准.OFD文档具有不易被篡改.格式独立.版式固定等特点,目前常用于政府公文.金融.电子发票等领域. ...

  8. 带你了解磁盘驱动程序(xv6)

    磁盘驱动程序 本文来聊聊磁盘驱动程序,驱动程序是硬件的接口,操作系统通过这个接口来控制硬件工作,所以驱动程序就好比是硬件和系统之间的桥梁.这是百科上给出的解释,可能看起来还是云里雾里,我来做做注解. ...

  9. Linux使用docker搭建maven私有仓库

    引言 在实际开发工作中,通常需要搭建maven私有仓库,今天就教大家如何搭建一套maven的私有仓库 Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓 ...

  10. 笔记:Sublime Text3配置

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 笔记:Sublime Text3配置 日期:2017-12 ...