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 定义应用的各个服 ...
随机推荐
- pageoffice6 版本在线打开word 文件,实现多用户同时编辑
总体来说,各种Web系统中的Word文档在线处理大体可以分为以下四种流转处理方式: A用户编辑完,流转给B用户修改,再流转给C用户修改,直到最后.每个用户都是针对全文修改的,如果需要在这一篇文档中能区 ...
- 我发现了字节OpenApi接口的bug!
本文记录我在对接字节旗下产品火山云旗下云游戏产品 OpenApi 接口文档时遇到的坑,希望能帮助大家(火山云旗下云游戏产品的文档坑很多,我算是从零到一都踩了一遍,特此记录,希望大家引以为鉴). 1. ...
- openstack 错误(报错)集合
1. 执行nova命令报错: ERROR (CommandError): You must provide a username or user ID via --os-username, --os- ...
- Mono 支持LoongArch架构
近期,著名的.NET开源社区Mono正式支持LoongArch(龙架构),目前LoongArch64架构已出现在.NET社区主干分支上. 详细内容可以跟踪 https://github.com/mon ...
- django多表关联实战
定义模型类: from django.db import models from django.contrib.auth.models import User ''' ---------- Djang ...
- 深入理解Vue 3:计算属性与侦听器的艺术
title: 深入理解Vue 3:计算属性与侦听器的艺术 date: 2024/5/30 下午3:53:47 updated: 2024/5/30 下午3:53:47 categories: 前端开发 ...
- Python 将Word/ Exce/ PDF/ PPT文档转为OFD文档
OFD(Open Fixed-layout Document )是我国自主制定的一种开放版式文件格式标准.OFD文档具有不易被篡改.格式独立.版式固定等特点,目前常用于政府公文.金融.电子发票等领域. ...
- 带你了解磁盘驱动程序(xv6)
磁盘驱动程序 本文来聊聊磁盘驱动程序,驱动程序是硬件的接口,操作系统通过这个接口来控制硬件工作,所以驱动程序就好比是硬件和系统之间的桥梁.这是百科上给出的解释,可能看起来还是云里雾里,我来做做注解. ...
- Linux使用docker搭建maven私有仓库
引言 在实际开发工作中,通常需要搭建maven私有仓库,今天就教大家如何搭建一套maven的私有仓库 Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓 ...
- 笔记:Sublime Text3配置
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 笔记:Sublime Text3配置 日期:2017-12 ...