Haproxy它是一个代理软件,提供基于TCP(第4层)和HTTP(第7层)的高可用性、负载平衡和应用程序。它支持虚拟主机。这是一个免费、快速、可靠的解决方案。Haproxy特别适用于负载较大的网站,这些网站通常需要会话持久性或七层处理。haproxy在当前的硬件上运行,它可以完全支持数以万计的并发连接。它的操作模式使其易于安全地集成到您当前的体系结构中,并保护您的安全网络服务器不接触互联网。Haproxy官方网站:https://www.haproxyorg/
负载平衡类型简介(1)无负载平衡:用户直接连接到网络服务器,在yourdomainCom网站中,没有负载平衡。如果单个web服务器出现故障,用户将无法再访问该网站。此外,如果大量用户同时访问网站,web服务器可能会遇到性能瓶颈,导致网站访问速度缓慢,甚至无法连接。
(2)四层负载平衡:以这种方式进行负载平衡将根据IP和端口转发用户流量,例如用户请求访问http://yourdomain.com/anything,对于所有请求,流量将转发到yourdomainCom。如果用户访问负载平衡器,负载平衡器会将用户的请求转发到后端服务器的web后端组。无论选择哪个后端服务器,它都会直接响应用户的请求。通常,web后端中的所有服务器都应该提供相同的内容,否则用户可能会收到不一致的内容。
(3)七楼负载平衡:使用第7层允许负载平衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载平衡模式允许您在同一个域和端口下运行多个web应用程序服务器。例如,如果用户请求yourdomainCOM/blog,它将被转发到博客JetLigroup后端,这是一组运行博客应用程序的服务器。其他请求被转发到webJetLigroup的后端,后者可能正在运行另一个应用程序。
NicholasTse特定配置操作实验环境:三台Linux主机
Haproxy:192.168.52.20
网络服务器1:192.168.52.121
Web服务器2:192.168.52.122
在Web服务器1和2上,配置Web服务。
Yum安装httpd-y#安装HTTP服务
echo“这是192.168.52.12x!!!”和gt;/var/www/html/index。HTML#配置两个web文件以测试显示效果
Systemctlstarthttpd#启动HTTP服务
通过浏览器输入IP地址,访问效果如下。
1.安装haproxy。
Yum-y安装haproxy
2.编辑haproxy配置文件。主要配置如下:
VIM/etc/ZhangZiyi/ZhangZiyicfg
全局#全局参数设置
日志127.0.0.1本地2#全局日志配置。使用log关键字指定在127.0.0.1上的syslog服务中使用local0日志设备来记录日志级别为info的日志
Chroot/var/lib/ZhangZiyi#更改当前工作目录
Pidfile/var/run/ZhangZiyiPID#当前进程ID文件
Maxconn4000#最大连接数
用户haproxy#属于
haproxy所属的团体
Daemon#以守护者的身份运行haproxy
Statssocket/var/lib/ZhangZiyi/Stats
默认值#配置默认参数
默认模式#HTTP模式#{tcp|Http|health},tcp是四级,Http是七级。健康只会恢复正常
日志全局#应用全局日志配置
选项httplog#允许记录HTTP请求。默认情况下,haproxy不会记录HTTP请求
选项dontlognull#如果启用此选项,则不会在日志中记录空连接。所谓空连接是指上游负载平衡器或监控系统检测到服务是否活动且可用,
常规连接或获取固定组件或页面,或检测扫描端口是否正在侦听或打开等操作称为空连接;官方文件指出,如果服务是上游的
如果没有其他负载平衡器,建议不要使用此参数,因为不会记录Internet上的恶意扫描或其他操作
选项HTTP服务器关闭#在每次请求后主动关闭HTTP通道
选项ForwardForwardfor127.0.0.0/8除外#如果服务器上的应用程序想要记录发起请求的客户端的IP地址,它需要在haproxy中
将此选项配置为on,以便haproxy将客户端的IP信息发送到服务器并添加";X-Forwarded-For";领域在请求中启用x-forward-for
将客户端IP插入头并发送到后端服务器,以便后端服务器可以获得客户端的真实IP。
选项redispatch#当使用cookie时,haproxy会将请求的后端服务器的serverid插入cookie,以确保会话的安全性一场坚持不懈此时,如果后端服务器出现故障
是的,但是客户端的cookie不会被刷新。如果设置了此参数,客户端的请求将被强制定向到另一个后端服务器,以确保服务的正常运行。重试次数3#定义重新连接到后端服务器失败的次数。如果失败的连接数超过此值,相应的后端服务器将被标记为不可用
HTTP请求超时10s#HTTP请求超时
超时队列1m#队列中请求的超时时间
连接超时10秒#连接超时
客户端超时1m#客户端超时
服务器超时1m#服务器超时
超时HTTP保留alive10s#设置HTTP保留alive的超时
超时检查10s#检测超时
Maxconn3000#每个进程可用的最大连接数
前端主*:80#监听地址为80
aclurl_uu静态路径_uuBeg-i/static/images/javascript/stylesheets
aclurl_uu静态路径_uuend-i。jpg。gif。巴布亚新几内亚。css。js
如果URL为静态,则使用backend静态
默认的ujetLi_uuwebserver#定义了一个命名的my_u应用程序前端。请求被转发到此处的后端
backend静态#使用静态-动态分离(如果url_路径匹配.Jpg.GIF.PNG.CSS.JS静态文件,则访问此后端)
Balanceroundrobin#负载平衡算法(#banlanceroundrobinpolling,Balancesourcesavingsessionvalue,支持静态RR、leastconn、first、URI等参数)
服务器静态127.0.0.1:80检查#静态文件可以在本地(或其他机器上)部署鱿鱼缓存服务器)
JetLi_u0;Webserver#定义了一个名为my_0;的Web服务器后端部分。PS:这里我的Web服务器只是一个
它只是一个自定义名称,但需要与frontend_ujetLi中的配置项默认值一致
平衡循环#负载平衡算法
服务器web1192.168.52.121:80检查2000年秋季3
服务器web2192.168.52.122:80检查2000年秋季3
#多个定义的后端检测健康端口80。心跳频率为2000毫秒。如果出现3次故障,则认为服务器不可用
Haproxy3。开始
系统CTL启动haproxy
Haproxy成功启动后,他终于访问了其他客户机http://192.168.52.20/,你可以看到结果。外部客户端的请求被均匀地分配到两个web服务器上,并出现不同的界面。同时,当后端web服务器出现故障时,您还可以顺利访问网页,以确保高可用性!
最新评论