docker-compose创建haproxy教程

本文主要讲解通过docker-compose创建haproxy并进行代理
一、haproxy简介
- HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡,还能应用于数据库、邮件服务器、缓存服务器等多种场景,支持高达数百万级别的并发连接,并具有极低的延迟
- 主要特性
- 高性能负载均衡
- 健康检查与故障恢复
- 会话保持与亲和性
- 安全性与SSL卸载
- 高级路由与策略
- 日志记录与监控
- 优点
- 高性能:HAProxy是一个高性能的负载均衡器,可以处理大量的并发连接
- 灵活性:HAProxy支持多种负载均衡算法,如轮询、加权轮询、最少连接等,可以根据实际需求选择合适的算法
- 高可用性:HAProxy可以检测服务器的健康状态,如果某个服务器出现故障,它可以自动将流量转移到其他健康
- 安全性:HAProxy可以作为反向代理,隐藏后端服务器的真实IP地址,提高系统的安全性。
- 缺点
- 单点故障:如果HAProxy本身出现故障,可能会导致整个系统的服务不可用
- 配置复杂:HAProxy的配置相对复杂,需要一定的学习成本
- 性能瓶颈:虽然HAProxy的性能很高,但在处理大量并发连接时,可能会成为系统的性能瓶颈
- 功能单一:只支持做负载均衡的调度服务器,不支持正则处理,不能实现动静分离,也不能做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教程的更多相关文章
- Docker Compose 创建yml 简单试例
Docker Compose 创建yml 简单试例 Docker Compose 文件使用格式版本需要与Docker版本对应可在官网内查找 查找地址:https://docs.docker.com/c ...
- Docker | Compose创建mysql容器
本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...
- docker和docker compose常用操作命令
首先区分一下docker中几个概念 Image:镜像,相当于一个root文件系统,不包含任何动态数据 Container:容器,镜像运行时的实体,实质是进程,容器进程运行于属于自己的独立的命名空间 d ...
- Docker编排工具Docker Compose的使用
一.安装docker compose 官网推荐方式之一: sudo curl -L "https://github.com/docker/compose/releases/download/ ...
- Linux系统上安装docker + Compose并创建WordPress
安装docker可参考我的另一篇文章 安装Compose Docker Compose 是 Docker 官方编排(Orchestration)项目之一, 负责快速在集群中部署分布式应用. 方法一 1 ...
- Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...
- Docker学习笔记 - Docker Compose 脚本命令
Docker Compose 配置文件包含 version.services.networks 三大部分,最关键的是 services 和 networks 两个部分, version: '2' se ...
- Docker学习笔记 - Docker Compose
一.概念 Docker Compose 用于定义运行使用多个容器的应用,可以一条命令启动应用(多个容器). 使用Docker Compose 的步骤: 定义容器 Dockerfile 定义应用的各个服 ...
随机推荐
- postgresql 开启审计日志
1.审计清单说明 logging_collector --是否开启日志收集开关,默认off,推荐on log_destination --日志记录类型,默认是stderr,只记录错 ...
- cpu的各种信息查询
Linux查看物理CPU个数.核数.逻辑CPU个数 # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物 ...
- Yarp 让系统内调度更灵活 http、https、websocket 反向代理
简介 Yarp 是微软团队开发的一个反向代理组件, 除了常规的 http 和 https 转换通讯,它最大的特点是可定制化,很容易根据特定场景开发出需要的定制代理通道. 详细介绍:https://de ...
- .NET 中使用 OpenTelemetry Traces 追踪应用程序
上一次我们讲了 OpenTelemetry Logs.今天继续来说说 OpenTelemetry Traces. 在今天的微服务和云原生环境中,理解和监控系统的行为变得越来越重要.在当下我们实现一个功 ...
- 面向对象编程 es5和es6的构造函数
/* 面向对象编程 本质 创建一个对象 可以用 属性属性值的 方式 存储 数据参数 ...
- LidarView工程搭建指南
前言 笔者做过一段时间的车载LiDAR开发,对LidarView开源项目进行过深度定制,摸索了一套LidarView软件的开发和调试方法 1 软件安装 1.1 安装准备 以Windows10系统平台为 ...
- Easysearch Chart 0.2.0都有哪些变化
Easysearch Chart 包更新了,让我们来看看都有哪些变化: Docker 镜像升级 Service 名称调整,支持 NodePort 模式部署 现在让我们用 NodePort 模式部署一下 ...
- 使用 eBPF 在云中实现网络可观测性
可观测性是一种了解和解释应用当前状态的能力,也是一种知道何时出现问题的方法.随着在 Kubernetes 和 OpenShift 上以微服务形式进行云部署的应用程序越来越多,可观察性受到了广泛关注.许 ...
- Vue学习:8.v标签综合-强化版
通过前几节的认识和学习,我们掌握了常用v标签的用法,这一节再来巩固提高一下吧. 实例:成绩面板 实现功能: 主体由两大部分组成:表格+表单.这个表格可以显示多科成绩,并具有表头.删除以及底部统计功能. ...
- 记录一下第一次webSocket通信成功
webSocket前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...