HAProxy进阶之路:负载均衡与高级配置


HAProxy进阶之路:负载均衡与高级配置



一、什么是Haproxy

​ 在服务器集群中,如果后端服务器有设备宕机或停止工作。调度器VS 还是会根据策略将流量调度到不工作的后端服务器上,为了解决这个问题就出现了后端检测的技术。

​ 当前的企业中已经不适用lvs进行后端检测,haproxy主要的功能是作为负载均衡器,而不是专门用于后端检测。但是它具备一些与后端检测相关的特性和功能,如果后端服务器出现故障或不可用,HAProxy 可以自动将流量切换到其他健康的服务器上。

1.1 负载均衡

  • 四层负载均衡

主要根据三层的IP加上四层的端口判断流量递送到哪台后端服务器上,并记录该服务器的地址,后续该连接的所有流量都在该服务器上处理。

  • 七层负载均衡

七层的负载均衡是在四层的基础上 实现的,不同的是七层的负载均衡可以根据请求报文中的URL或者IP实现负载均衡,将流量递送到相应的后端服务器上。

1.2 代理

  • 正向代理

**原理:**客户端将请求发送给正向代理服务器,然后由正向代理服务器代表客户端向目标服务器发送请求。正向代理服务器隐藏了客户端的真实IP地址和身份,目标服务器只能看到正向代理服务器的IP地址。

**优点:**①隐藏用户信息②访问被墙的网站③可以做缓存,加速访问资源④对客户端访问授权,上网进行认证。

**缺点:**①可能会引入额外的延迟;②如果正向代理服务器出现故障,可能会导致客户端无法访问目标服务器。

  • 反向代理

**原理:**代表服务器接收请求并将其转发到后端服务器的代理服务器。客户端发送请求到反向代理服务器,然后反向代理服务器根据一定的规则将请求转发到后端服务器。反向代理服务器隐藏了后端服务器的真实IP地址和身份,客户端只能看到反向代理服务器的IP地址。

**优点:**①隐藏后端服务器的真实IP地址,提高了服务器的安全性;

​ ②可以实现负载均衡,提高系统的性能和可靠性;

​ ③缓存静态内容,减轻后端服务器的负载,提高响应速度;

​ ⑤可以对请求进行过滤和修改,实现内容过滤、重定向和URL重写等功能。

缺点:如果反向代理服务器出现故障,可能会导致整个系统无法正常工作。

1.3 haproxy基本信息

  • 配置文件路径:/etc/haproxy/haproxy.cfg

global 全局配置段

chroot						   #锁定运行目录
deamon					   	   #以守护进程运行
user, group, uid, gid		   #运行haproxy的用户身份
stats socket				   #套接字文件
nbproc N					   #开启的haproxy worker 进程数,默认进程数是一个
nbthread 1 (和nbproc互斥)		#指定每个haproxy进程开启的线程数,默认为每个进程一个线程
cpu-map 1 0					   #绑定haproxy worker 进程至指定CPU,将第1个work进程绑定至0号CPU
cpu-map 2 1					   #绑定haproxy worker 进程至指定CPU,将第2个work进程绑定至1号CPU
maxconn N					   #每个haproxy进程的最大并发连接数
maxsslconn N				   #每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下
maxconnrate N				   #每个进程每秒创建的最大连接数量
spread-checks N				   #后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间,默认值0
pidfile						   #指定pid文件路径
log 127.0.0.1 local2 info      #定义全局的syslog服务器;日志服务器需要开启UDP协议,最多可以定义两个

proxies 代理配置

  • default:默认配置项,针对以下的frontend、backend和listen生效,可以多个name也可以没有name
mode                     http				 # HAProxy实例使用的连接协议
log                      global			     #指定日志地址和记录日志条目的syslog/rsyslog日志设备;此处的 global											  #表示使用 global配置段中设定的log值。
option                   httplog			 #日志记录选项,httplog表示记录与 HTTP会话相关的各种属性值,#包括 												 #HTTP请求、会话状态、连接数、源地址以及连接时间等
option                   dontlognull		 #dontlognull表示不记录空会话连接日志
option http-server-close					 #等待客户端完整HTTP请求的时间
option forwardfor        except 127.0.0.0/8  #透传客户端真实IP至后端web服务器,在webserer中看日志即可看到地址透传											   #信息
option                   redispatch		 	 #当server Id对应的服务器挂掉后,强制定向到其他健康的服务器,重新派发
option 					 http-keep-alive 	 #开启与客户端的会话保持
retries                  3					 #连接后端服务器失败次数
timeout http-request     10s				 #等待客户端请求完全被接收和处理的最长时间
timeout queue            1m					 #设置删除连接和客户端收到503或服务不可用等提示信息前的等待时间
timeout connect          10s				 #设置等待服务器连接成功的时间
timeout client           1m					 #设置允许客户端处于非活动状态,即既不发送数据也不接收数据的时间
timeout server           1m					 #设置服务器超时时间,即允许服务器处于既不接收也不发送数据的非活动时间
timeout http-keep-alive  10s				 #session 会话保持超时时间,此时间段内会转发到相同的后端服务器
timeout check            10s				 #指定后端服务器健康检查的超时时间
maxconn                  3000				 #最大能承受的连接并发量
default-server inter 1000 weight 3			 #对后端检测的默认参数
  • frontend :前端servername
bind	#制定haproxy监听的端口
mode	指定负载协议类型
  • backend:后端服务器组
balance #用于指定后端服务器的负载均衡算法。
option	#配置选项
server	#定义后端real server,必须指定IP和端口(详解见下小节)
  • listen:相当于frontend + backend
将frontend和backend的内容写在一起就是listen的内容

​ global里设定的内容在default中也可以设定。在Haproxy程序运行中,程序先读取global中的内容然后再读取default部分的内容,而default会将global中的内容覆盖。

server 配置

check 			#对指定real进行健康状态检查,如果不加此设置,默认不开启检查
				#只有check后面没有其它配置也可以启用检查功能
				#默认对相应的后端服务器IP和端口,利用TCP连接进行周期性健康性检查
				#注意必须指定端口才能实现健康性检查
addr <IP> 		#可指定的健康状态监测IP,可以是专门的数据网段,减少业务网络的流量
port <num> 		#指定的健康状态监测端口
inter <num> 	#健康状态检查间隔时间,默认2000 ms
fall <num> 		#后端服务器从线上转为线下的检查的连续失效次数,默认为3
rise <num> 		#后端服务器从下线恢复上线的检查的连续有效次数,默认为2
weight <weight> #默认为1,最大值为256,0(状态为蓝色)表示不参与负载均衡,但仍接受持久连接
backup 			#将后端服务器标记为备份状态,只在所有非备份主机down机时提供服务
				#类似SorryServer
disabled 		#将后端服务器标记为不可用状态,即维护状态,除了持久模式
				#将不再接受连接,状态为深黄色,优雅下线,不再接受新用户的请求
redirect prefix http://www.baidu.com/ 	#将请求临时(302)重定向至其它URL
										#只适用于http模式
maxconn <maxconn> 		#当前后端server的最大并发连接数

1.4 基础环境搭建

  • 虚拟机环境配置
主机名 IP 下载服务
Haproxy 172.25.254.100 Haproxy
Server01.com 172.25.254.10 Apache
Server02.com 172.25.254.20 Nginx
Client 处于同一个网段即可
  • Server服务器配置
################ 软件包下载 ################
### Server01
[root@Server01 ~]# yum install httpd -y  
[root@Server01 ~]# systemctl enable httpd --now  ####启动服务

### Server02
[root@Server02 ~]# yum install nginx -y
[root@Server02 ~]# systemctl enable nginx --now  ####启动服务

################ 网页内容 ################
### Server01
[root@Server01 ~]# echo  "Server01.com-172.25.254.10" > /var/www/html/index.html 
[root@Server01 ~]# curl 172.25.254.10
Server01.com-172.25.254.10

### Server02
[root@Server02 ~]# echo "Server02.com-172.25.254.20" > /usr/share/nginx/html/index.html
[root@Server02 ~]# curl 172.25.254.20
Server02.com-172.25.254.20
  • haproxy主机配置
#下载haproxy软件包
[root@Haproxy ~]# yum install haproxy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值