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

HAProxy 负载均衡器

HAProxy 负载均衡器

一、HAProxy 简介

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

特性概述:
  • 适用于高负载Web站点,支持会话保持与七层处理
  • 单进程事件驱动模型,支持数万并发连接
  • 可轻松集成至现有架构,保护后端服务器不直接暴露于网络
  • 被GitHub、Bitbucket、Stack Overflow、Reddit、Twitter等知名网站及AWS广泛使用

二、负载均衡类型

层级类型说明常见产品
二层MAC层负载均衡基于虚拟MAC地址分配至实际MAC地址
三层IP层负载均衡基于虚拟IP地址分配至实际IP地址
四层TCP层负载均衡基于IP+端口进行转发F5、LVS、Nginx、HAProxy
七层HTTP层负载均衡基于URL、IP或主机名进行转发HAProxy、Nginx、Apache、MySQL Proxy

三、HAProxy 安装

1.1、YUM 安装
[root@yyh1 ~]# yum -y install haproxy
1.2、源码安装
1.安装编译环境
[root@yyh1 ~]# yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel gcc-c++ zlib-devel lua
2.创建用户
[root@yyh1 ~]# useradd -r -M -s /sbin/nologin haproxy
3.编译安装
[root@yyh1 ~]# tar -xzvf haproxy-2.1.3.tar.gz
[root@yyh1 ~]# cd haproxy-2.1.3/
[root@yyh1 haproxy-2.1.3]# make clean
[root@yyh1 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@yyh1 haproxy-2.1.3]# make install PREFIX=/usr/local/haproxy
[root@yyh1 haproxy-2.1.3]# cp haproxy /usr/sbin/
2、设置 Linux 内核参数
[root@yyh1 haproxy-2.1.3]# vim /etc/sysctl.conf 
[root@yyh1 haproxy-2.1.3]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
3、配置 haproxy 服务
[root@yyh1 haproxy-2.1.3]# mkdir /etc/haproxy
[root@yyh1 haproxy-2.1.3]# vim /etc/haproxy/haproxy.cfg

内容如下

globallog 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
#---------------------------------------------------------------------
defaultsmode httplog globaloption dontlognulloption httpcloseoption httplog#option forwardforoption redispatchbalance roundrobintimeout connect 10stimeout client 10stimeout server 10stimeout check 10smaxconn 60000retries 3
#--------------统计页面配置------------------
listen admin_statsbind 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 nocacheserver rs1 192.168.100.20:80 checkserver rs2 192.168.100.30:80 check
4、启动 haproxy,配置 haproxy.service 服务单元文件
[root@yyh1 ~]# 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@yyh1 ~]# systemctl daemon-reload
5、配置日志信息
[root@yyh1 ~]# vim /etc/rsyslog.conf

在这里插入图片描述

打开UDP和TCP服务

在这里插入图片描述

6、重启服务
[root@yyh1 ~]# systemctl restart rsyslog
[root@yyh1 ~]# systemctl enable rsyslog
[root@yyh1 ~]# systemctl restart haproxy
[root@yyh1 ~]# systemctl enable haproxy
7、测试访问并查看日志

发现负载均衡轮询

在这里插入图片描述

在这里插入图片描述

查看日志

[root@yyh1 ~]# tail -f /var/log/haproxy.log

在这里插入图片描述

8、登录 haproxy 监控页面

在这里插入图片描述

在这里插入图片描述

四、 haproxy.cfg 配置文件详解

haproxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen

1、配置文件结构
  • global:全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关
  • defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件
  • frontend:接收请求的前端虚拟节点,frontend可以指定具体使用后端的backend
  • backend:后端服务集群的配置,真实服务器,一个backend对应一个或者多个实体服务器
  • listen:fronted和backend的组合体,比如haproxy实例状态监控部分配置。Haproxy1.3之前的唯一配置方式
2、时间单位
  • us:微秒,即1/1000000秒
  • ms:毫秒,即1/1000秒
  • s:秒
  • m:分钟
  • h:小时
  • d:天
3、日志级别对照表
级别代码说明
emerg0系统不可用
alert1需立即处理的事件
crit2关键事件
err3错误事件
warning4警告事件
notice5普通重要事件
info6信息事件
debug7调试信息
4、全局配置(global)
globallog 127.0.0.1 local0  info		# 定义haproxy日志输出设置#log loghost local0 info		# 定义haproxy日志级别maxconn 20480					# 定义最大连接数
#chroot /usr/local/haproxy			# chroot运行路径pidfile /var/run/haproxy.pid	# haproxy进程PID文件#maxconn 4000       user haproxy					# 运行haproxy用户,可用uid代替group haproxy					# 运行haproxy用户组,可用gid代替daemon							# 以后台形式运行haproxy
5、默认配置(defaults)
defaultsmode http				# 所处理的类别(7层代理http,4层代理tcp)log global				# 引入global定义的日志格式option dontlognull		# 不记录健康检查日志信息option httpclose		# 每次请求完毕后主动关闭http通道,haproxy不支持keep-alive模式option httplog			# 日志类别为http日志格式#option forwardfor		# 如果后端服务器需要获取客户端的真实ip,需要配置的参数,可以从http header中获取客户端的ipoption redispatchbalance roundrobin		# 设置默认负载均衡方式,轮询方式timeout connect 10s		# 默认连接超时时间timeout client 10s		# 默认客户端超时时间timeout server 10s		# 默认服务器超时时间timeout check 10s		# 设置超时检查超时时间 maxconn 60000			# 最大连接数retries 3				# 3次连接失败就认为服务器不可用,也可以通过后面设置
6、前端虚拟节点配置(frontend)
frontend http_80_in bind 0.0.0.0:80				# 设置侦听端口,即haproxy提供的web服务端口,和lvs的vip类似mode http	log  global   option httpclose  option httplog  option forwardfordefault_backend  wwwpool	# 设置请求默认转发的后端服务池
7、定义后端服务集群配置(backend)
backend  wwwpool			# 定义wwwpool服务器组mode  httpoption  redispathoption  abortonclosebalancer  source		# 负载均衡的方式,源哈希算法cookie  SERVERID		# 允许插入serverid到cookie中,serverid后面可以定义option  httpdchk  GET  /test.html		#心跳测试server  web1  10.1.1.2:80  cookie  2 weight  3  check  inter 2000  rise 2 fall 3 maconn 8
8、页面监控(listen)
listen admin_stats					# frontend和backend的组合体,监控组的名称,按需自定义名称bind 0.0.0.0:8189				# 侦听端口stats enable					# 开启监控mode httplog globalstats uri /haproxy_stats		# 监控页面的url访问路径stats realm Haproxy\ Statistics	# 监控页面的提示信息stats auth admin:admin			# 监控页面的用户和密码#stats hide-version				# 隐藏统计页面上的haproxy版本信息stats admin if TRUE				# 手工启用/禁用,后端服务器haproxystats refresh 30s				# 每个30秒自动刷新监控页面

五、常用命令与验证

  • 检查配置文件语法:haproxy -f /etc/haproxy/haproxy.cfg -c
  • 重新加载配置:systemctl reload haproxy
  • 查看监控页面:http://<IP>:8189/haproxy_stats
http://www.dtcms.com/a/399538.html

相关文章:

  • 使用C#代码自定义密码加密Word
  • 报修网站模板网络营销是什么时候兴起的
  • 【Java开发:Lambda表达式】
  • tomcat启动卡在Initializing Spring root WebApplicationContext
  • 合肥建设工程交易网站石家庄学生
  • docker底层的隔离机制和资源控制机制
  • 网站建设公司源码 asp网站建设电脑和手机有区别吗
  • flash attention2 计算过程的探索和学习
  • 领域驱动设计的vo、do、dto
  • 画图软件在线纵横seo
  • 求解四阶泛函 u‘‘‘‘ - u‘‘ + f = 0 的驻点及周期性边界条件
  • VC维(Vapnik-Chervonenkis Dimension)的故事:模型复杂度的衡量
  • FM收音机RDS功能深度解析
  • 做网站运营还是翻译郑州市房产信息网官方网站
  • SM2商用密码算法轻量化技术:原理、实践与未来展望
  • 双目视觉的传统立体匹配算法有哪些?
  • 电子商务网站版面布局更改wordpress链接
  • Day28_【深度学习(7)—卷积神经网络CNN】
  • 手机百度网盘登录入口织梦做的网站好优化
  • Al驱动下的智能网联汽车创新与应用专题培训
  • 【Stream API学习】
  • 怎样下载建设银行信用卡网站蓝色科技企业网站模板免费下载
  • ubuntu16安装python3.12
  • 编辑网站教程阜宁县城乡建设局新的官方网站
  • 禅城区做网站策划企业公示信息填报
  • LSTM:长短期记忆网络的原理、演进与应用
  • OpenHarmony 4.0 Release横屏配置
  • 网站开发前端与后端铁汉生态建设有限公司网站
  • 服务器安全基线配置
  • 随机森林算法详解:从原理到实战