当前位置: 首页 > news >正文

52.haproxy负载均衡

haproxy负载均衡

HAProxy 简介

HAProxy 是一个使用 C 语言编写的开源软件,提供高可用性负载均衡以及基于 TCPHTTP 的应用程序代理功能。

核心特点:

  • 高性能:适用于负载巨大的 Web 站点,支持会话保持和七层处理。
  • 高并发:采用事件驱动、单一进程模型,能高效支持数万并发连接。
  • 安全集成:可简单安全地整合进现有架构,保护后端 Web 服务器不直接暴露于网络。

知名用户:GitHub, Bitbucket, Stack Overflow, Reddit, Tumblr, Twitter, 亚马逊 AWS 等。

负载均衡类型

根据 OSI 模型,负载均衡可分为不同层次:

层次名称工作原理代表产品
二层数据链路层负载均衡基于虚拟 MAC 地址,分配至实际 MAC 地址响应。-
三层网络层负载均衡基于虚拟 IP 地址,分配至实际 IP 地址响应。-
四层传输层负载均衡基于 IP + Port 进行请求转发。F5, LVS, HAProxy, Nginx
七层应用层负载均衡基于 URL、HTTP 头、主机名等应用层信息进行转发。HAProxy, Nginx, Apache

说明:HAProxy 同时支持高效的四层(TCP)七层(HTTP) 负载均衡。

HAProxy 安装

可以使用yum直接进行安装

yum -y install haproxy

但是我们通常会使用源码安装,这样更灵活

首先安装依赖环境

[root@ha ~]# yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel gcc-c++ zlib-devel lua

跟mysql一样,我们要创建一个haproxy的用户

[root@ha ~]# useradd -r -M -s /sbin/nologin haproxy

使用源码安装需要源码包,解压源码包

[root@ha ~]# tar -xzf haproxy-2.1.3.tar.gz

安装

[root@ha ~]# cd haproxy-2.1.3/
[root@ha haproxy-2.1.3]# make clean
[root@ha haproxy-2.1.3]# make -j $(grep 'processor' /proc/cpuinfo |wc -l) \
> TARGET=linux-glibc  \
> USE_OPENSSL=1  \
> USE_ZLIB=1  \
> USE_PCRE=1  \
> USE_SYSTEMD=1
[root@ha haproxy-2.1.3]# make install PREFIX=/usr/local/haproxy
[root@ha haproxy-2.1.3]# cp haproxy  /usr/sbin/

设置内核参数

[root@ha haproxy-2.1.3]# vim /etc/sysctl.conf 
[root@ha haproxy-2.1.3]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1

配置haproxy服务

[root@ha ~]# mkdir /etc/haproxy
[root@ha ~]# vim /etc/haproxy/haproxy.cfg
global			#全局配置log 127.0.0.1 local0  info#log loghost local0 infomaxconn 20480
#chroot /usr/local/haproxypidfile /var/run/haproxy.pid#maxconn 4000user haproxygroup haproxydaemon
#---------------------------------------------------------------------
#common defaults that all the 'listen' and 'backend' sections will
#use if not designated in their block
#---------------------------------------------------------------------
defaults		#默认参数,可以被用到frontend,backend,Listen组件,本次使用listen组件mode httplog globaloption dontlognulloption httpcloseoption httplog#option forwardforoption redispatchbalance roundrobintimeout connect 10stimeout client 10stimeout server 10stimeout check 10smaxconn 60000retries 3
#--------------统计页面配置------------------
listen admin_stats	fronted和backend的组合体bind 0.0.0.0:8189stats enablemode httplog globalstats uri /haproxy_statsstats realm Haproxy\ Statisticsstats auth admin:admin#stats hide-versionstats admin if TRUEstats refresh 30s
#---------------web设置-----------------------
listen webclusterbind 0.0.0.0:80mode http#option httpchk GET /index.htmllog globalmaxconn 3000balance roundrobincookie SESSION_COOKIE insert indirect nocache
server rs1 192.168.100.10:80 check
server rs2 192.168.100.20:80 check

配置文件由五部分组成,逻辑关系如下:

  1. global:全局配置,与操作系统和进程相关的参数。
  2. defaults:为后续组件(frontend, backend, listen)提供默认参数。
  3. frontend:定义前端虚拟服务,用于接收客户端请求。
  4. backend:定义后端真实服务器集群。
  5. listenfrontendbackend 的组合体,常用于监控

全局配置详细解析
globallog 127.0.0.1 local0 info    # 定义日志输出和级别maxconn 20480                # 全局最大连接数user haproxy                 # 运行用户group haproxy                # 运行用户组daemon                       # 以后台守护进程方式运行pidfile /var/run/haproxy.pid # PID 文件位置
defaultsmode http                    # 默认模式(http/tcp)log global                   # 继承全局日志设置option dontlognull          # 不记录健康检查空日志option httpclose            # 关闭 HTTP 连接(不支持 keep-alive)option httplog              # 启用 HTTP 请求日志option redispatch           # 连接失败时重定向到其他服务器balance roundrobin          # 默认负载均衡算法:轮询timeout connect 10s         # 连接后端服务器超时时间timeout client 10s          # 客户端响应超时时间timeout server 10s          # 服务器端响应超时时间maxconn 60000               # 默认最大连接数retries 3                   # 3次失败判定服务器不可用
frontend http_80_in		#前端配置bind 0.0.0.0:80             # 监听所有 IP 的 80 端口mode httpoption forwardfor           # 向后端传递客户端真实 IP(X-Forwarded-For)default_backend wwwpool     # 指定默认后端服务器组
backend wwwpool		后端配置mode httpbalance source              # 负载均衡算法:源 IP 哈希option httpchk GET /index.html # 定义健康检查方法server web1 192.168.100.10:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3server web2 192.168.100.20:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3
listen admin_stats		监听配置bind 0.0.0.0:8189           # 监控页面访问端口stats enable                # 启用统计报告stats uri /haproxy_stats    # 统计页面的 URL 路径stats realm "Haproxy Statistics" # 认证提示信息stats auth admin:admin      # 登录用户名和密码stats refresh 30s           # 页面自动刷新间隔

配置haproxy的服务单元,然后启动

[root@ha ~]# vim /usr/lib/systemd/system/haproxy.service[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target[Service]
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg   -c -q
ExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg  -p /var/run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID[Install]
WantedBy=multi-user.target[root@ha ~]# systemctl daemon-reload
[root@ha ~]# systemctl restart haproxy

查看

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/398395.html

相关文章:

  • 什么是“智能体”?
  • 负载均衡式在线OJ项目复盘
  • 【Golang】数据设计模式
  • 新建免费网站软件关键词排名
  • 小迪安全v2023学习笔记(八十六讲)—— FridaHOOK证书提取SSL双向校验绕过
  • 律师事务所网站方案网站 建设 初期规划
  • 舒适化诊疗的关键支持:伟荣局部麻醉器械使用体验
  • Kanass入门到实战(1) - 安装教程
  • 【Linux系统】深入理解线程同步,实现生产消费模型
  • 【2025-系统规划与管理师】第六章:云资源规划
  • JDK17 新特性梳理
  • ZooKeeper源码分析与实战-模块一:基础篇
  • 网站建设 优势网站开发需求报告
  • jikuaiarc项目构建,参考arc,把arc一直到antlr4,生成g4文件
  • 白话讲讲GenAI、LLM、Agent、RAG、LangChain
  • (25.09)使用Livox-mid-360录制数据并运行Fast-lio2命令
  • 【图文】Codex接入Kimi K2/GLM-4.5 环境配置指南 (Windows/macOS/Ubuntu)
  • 异步 vs 同步:JavaScript中的速度与激情
  • Django模型与数据表的映射方式详解:不止Code First与Database First
  • LangChain4J-(7)-Function Calling
  • C程序设计-01程序设计和C语言
  • 为何上不了建设银行网站网络营销工程师前景
  • 设计模式的几个准则
  • python+nodejs+springboot在线车辆租赁信息管理信息可视化系统
  • 计算机毕业设计 基于Python的音乐推荐系统 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 《人机分工重塑开发:遗留系统重构的AI实践指南》
  • 从0死磕全栈第十天:nest.js集成prisma完成CRUD
  • 网站开发做什么科目网页设计与网站建设连接数据库
  • 如何看网站是html几代做的加拿大pc网站搭建
  • C#的MVVM架构中的几种数据绑定方式