本文主要讲解通过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. Teamviewer 再次涨价,太贵了,有没有平替软件?

    今天打开 Teamviewer 网站,吓一跳,商业版基础款价格直接翻倍. 作为行业龙头,又是德国产品,Teamviewer 一直保持着高价格的特色.这两年 Teamviewer 的价格还逐年上涨,从每 ...

  2. windows远程桌面和远程协助有什么区别

    一言以蔽之: windows远程桌面是被动式的,只要你开启了这个功能选项,对方有地址和密码就能使用这台计算机. windows远程协助是主动式的,需要向对方提出协助请求,对方答应后即可登录电脑,协助操 ...

  3. (图形界面)Dbever连接MySQL8 报错mysql8 安装The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.

    问题原因是没有设置时区,这个在Mysql8中会有 解决方式: 在这个位置加上UTC时区就可以了. IDEA添加方式 设置Advanced的allowPublicKeyRetrieval为true 同时 ...

  4. winform——windows 服务的安装 卸载 启动 停止

    安装服务和卸载服务采用process启动命令行的方式.启动服务和停止服务用到了 System.ServiceProcess.ServiceController这个类.   程序是这样运行的,首先启动服 ...

  5. Android 12(S) ALooper AHandler AMessage(二)

    来写个demo试试看到底是ALooper AHandler AMessage是怎么运行的,源文件以及Android.bp如下: // EvenHandler.h #ifndef __MESSAGE_T ...

  6. 互联网软件的安装包界面设计-Inno setup

    https://blog.csdn.net/oceanlucy/article/details/50033773 "安装界面太丑了,不堪入目!" "这界面应该属于20年代 ...

  7. 像阿里OSS一样的文件对像存储服务,容器实现 docker初探及minio测试

    像阿里OSS一样的文件对像存储服务,容器实现 docker run -p 8000:9000 --name oss-minio -d -e "MINIO_ACCESS_KEY=AKIAIOS ...

  8. 跨域问题服务端解决办法 Request header field Authorization is not allowed by Access-Control-Allow-Headers

    跨域问题服务端解决办法 一般在入口文件加 header('Access-Control-Allow-Origin:*');// 响应类型header('Access-Control-Allow-Met ...

  9. MR+meta分析的摘录

    第四篇公众号:来自微信 天桥下的卖艺者 零基础说科研,仅为个人学习用,如有侵权,可以删除 吸烟没什么创意,唯一的创意就是加入了MR和meta分析,作者显示介绍吸烟与多种疾病之间的因果关系扔不明确, 第 ...

  10. SwiftObject 杂记

    一.前言 看了一段时间的Swift,慢慢转变了一些对Swift的看法. Swift作为苹果新晋的开发语言.具有模板编程.函数编程.协议多继承.vTable静态绑定.值引用类型区分.Option类型等动 ...