全网最详细haproxy配置

润信云 技术支持

Haproxy是法国人Willy Tarreau开发的一款高性能的TCP和HTTP负载均衡器,具有广泛的功能和特性,使其在负载均衡和反向代理领域备受推崇。以下是对Haproxy的详细介绍:


一、基本概述


定义:Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件,能够处理大量并发连接,提供高可用性和负载均衡功能。


功能:支持双机热备、虚拟主机、基于TCP和HTTP应用代理等功能,同时内置了监控和统计功能,可以实时获取服务器的状态和性能指标。


应用场景:特别适用于负载特大的web站点,这些站点通常又需要会话保持或七层处理。

二、核心特性


高性能:


使用异步事件驱动的架构,能够处理非常高的并发连接数,支持数以万计的并发连接。


较低的延迟和高吞吐量,使得Haproxy在处理大规模网络请求时表现优异。


高可靠性:


提供无单点故障的服务,确保服务的高可用性。


能够对后端服务器进行健康检查,及时发现并排除出故障的服务器。


负载均衡:


可以将流量均匀地分配到后端服务器上,提高系统的性能和可扩展性。


支持多种负载均衡算法,如轮询(roundrobin)、最少连接数(leastconn)等,可以根据实际需求选择合适的算法。


会话保持:


支持多种会话保持机制,如基于客户端IP的Hash计算、基于cookie的会话保持等,确保用户请求能够被转发到正确的后端服务器上。


SSL终结和加速:


可以在前端进行SSL终结,解密和加密SSL/TLS流量,从而减轻后端服务器的负担并提升性能。


可定制性:


提供了丰富的配置选项和灵活的扩展机制,使得用户可以根据实际需求进行定制化配置和扩展。


支持多种协议:


支持HTTP、https、TCP、SMTP等多种协议,可以满足不同场景下的需求。

三、工作模式


Haproxy的工作模式一般有两种:TCP模式和HTTP模式。


TCP模式:实例运行于TCP模式,在客户端和服务器端之间将建立一个全双工的连接,且不会对7层报文做任何类型的检查,只能以简单模式工作。通常为SSL、SSH、SMTP等应用使用。


HTTP模式:实例运行于HTTP模式,客户端请求在转发至后端服务器之前将被深度分析,所有不与RFC格式兼容的请求都会被拒绝。适用于需要HTTP层处理的场景。

haproxy实验环境的配置

haproxy的网络环境配置

image.png

webserver1和webserver2的网络环境的配置

image.png

image.png


将webserver1和webserver2的文件导入nginx的默认发布文件

image.png

image.png

在webserver1和webserver2上分别打开nginx的服务

image.png

image.png


最后在haproxy主机上进行测试,访问成功环境配置就搞定了

image.png

1.haproxy的基本部署方法以及负载均衡的实现

在haproxy主机上安装haproxy

image.png-

查看haproxy的配置文件并进行配置

image.png

image.png

2.haproxy的全局配置参数以及日志分离

查看haproxy的默认进程

image.png

现在进行多进程的设置

image.png

开启两个以后查看

image.png

image.png

image.png

    

同时设定多线程和多进程,会产生互斥

image.png

互斥后重启服务就会报错

image.png

现在将一个注释掉

image.png

然后重启服务后在进行查看

image.png

自定义haproxy的日志

image.png

image.png

进入配置文件进行配置,同时还需要开启udp协议

image.png

3.haproxy-proxies中的常用配置参数

check:对指定的real进行健康状态检查  inter:健康状态检查间隔时间 默认为2000ms  fall:后端服务器从线上转为线下的连续失败次数,默认为3 rise:后端服务器从下线恢复上线的检查的连续有效次数,默认为2 weight:默认为1,最大值为256,0(状态为蓝色)表示不参与负载均衡,但仍接受持久连接      

image.png

设置backup,设置为web_sorry还要把webserver1和webserver2的nginx下线

image.png

image.png

先在haproxy主机上安装httpd

image.png

进入httpd的配置文件将端口号改为8080

image.png

然后开启httpd服务

image.png

给index.html文件写入内容

image.png

然后进入haproxy配置文件写入

image.png

然后进行访问


image.png

要进行维护先将一台下线,使用disabled:将后端服务器标记为不可用状态,即维护状态

image.png

下线的为172.25.254.10,所以访问就没有10

image.png

然后进入配置文件将disabled删掉10又可以访问

image.png

image.png

redirect prefix http://www.baidu.com/ 表示将请求定向定向到一个指定网站

image.png

在浏览器上访问172.25.254.100 定向到了百度

image.png

maxconn:当前后端server的最大并发连接数

image.png

image.png

4.haproxy的热更新方法

给该文件提权进行查看

image.png

image.png

在haproxy上安装socat(动态调整haproxy中的参数)

image.png

查看haproxy的状态

image.png

查看服务器的状态

image.png

查看当前权重,更改权重为1,更改后查看

image.png

image.png

image.png

下线后端服务器下线后查看全为172.25.254.20

image.png

上线后端服务器,上线后查看恢复正常

image.png

haproxy多进程热处理

image.png

重启服务后查看

image.png

5.haproxy的算法

haproxy的静态算法,是不能修改权重

image.png

image.png

haproxy的动态算法

roundrobin算法,是谁空闲了就给谁

image.png

leastconn:加权最少连接的动态,并且支持慢启动

image.png

image.png

haproxy的其他算法

source:当后端服务器数据量发生变化时,会导致很多用户的请求转发至新的后端服务器

image.png

进行访问时全部掉到172.25.254.20

image.png

一致性hash:当服务器的总权重发生变化时,对调度结果影响时局部的,不会引起大的变动hash(0)mod n 该hash算法是动态的,支持使用socat等工具进行在线权重调整,支持慢启动

image.png

image.png

uri:基于用户请求的uri的左半部分或整个uri做hash,再将hash结果对总权重进行取模后根据最终结果将请求转发到后端指定服务器,适用于后端是缓存服务器场景

image.png

image.png

image.png

image.png

image.png

进行访问

image.png
image.png

image.png

hdr:针对每个http头部(header)请求中的指定信息做hash

image.png
image.png

6.haproxy的状态页面监控

image.png

image.png

image.png

7.haproxy-基于cookie的会话保持

把hash打开

image.png

进行基于cookie的会话保持,cookie value:为当前server指定cookie值,实现基于cookie的会话粘性,相对于基于source地址hash调度算法对客户端的粒度更精准,但同时也加大了haproxy负载

image.png

image.png

8.haproxy-ip透传

把该条注释掉,进行访问

image.png

image.png

在172.25.254.20主机上访问日志,看不到后台支持的服务,把该条打开,做透传,就能看到是100进行访问的


\image.png

image.png

image.png

在httpd上做透传,在webserver1主机上将nginx服务关闭掉,然后安装httpd

image.png

image.png

image.png

在haproxy主机中访问

image.png

在webserver1查看日志编辑httpd主配置文件在haproxy主机上进行访问

image.png

image.png

image.png

四层代理

image.png

image.png

image.png

在webserver2的nginx配置文件中进行配置

image.png

image.png

再次进行访问就可以访问到20

image.png

在webserver2的nginx配置文件中添加

image.png

image.png

9.haproxy的访问控制列表应用

添加ACL列表保存然后进行访问在计算机中查看文件然后进行访问即可

image.png

image.png

image.png

10.haproxy-自动筛选错误页面内容

先将webserver1的httpd服务和webserver2的nginx服务都暂停

image.png

image.png

然后使用浏览器进行访问

image.png

来到haproxy主机过滤一下配置文件,找到503的,首先在haproxy文件下建立一个文件,然后在新建文件底下再次新建一个503.http文件在此文件中写入内容把该文件加入haproxy主配置文件中,保持与退出并重启服务

image.png

image.png

image.png

image.png

image.png

然后在浏览器上再次访问172.25.254.100

image.png

11.haproxy的四层负载示例

首先在webserver1和webserver2上安装数据库

image.png

image.png

进入数据库配置文件修改id在webserver1和webserver2上都要修改

image.png

image.png

image.png

然后就可以实现远程登录

image.png

进入haproxy的主配置文件添加

image.png
image.png

image.png

image.png

12.haproxy-https的加密访问

证书制作

image.png

将文件导入,公钥和私钥都有了

image.png

image.png

image.png

进入haproxy主配置文件进行写入

image.png

image.png

查看443端口已打开

image.png

image.png

本文链接:https://blog.runxinyun.com/post/170.html 转载需授权!

分享到:
版权声明
网站名称: 润信云资讯网
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮件:7104314@qq.com
网站部分内容来源于网络,版权争议与本站无关。请在下载后的24小时内从您的设备中彻底删除上述内容。
如无特别声明本文即为原创文章仅代表个人观点,版权归《润信云资讯网》所有,欢迎转载,转载请保留原文链接。
0 58

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。