分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

http层负载均衡之 haproxy实践篇

发布时间:2023-09-06 01:43责任编辑:赖小花关键词:httphaproxy

方案

上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题

方案:haproxy http层负载均衡

安装一个haproxy服务,两个web服务

haproxy:192.168.1.227:80

web1 http://192.168.1.226:8081/login

web2 http://192.168.1.246:8888/login

web服务自行准备,文章中就不说了

负载均衡算法为轮询调度

会话保持实现方式为cookie识别,插入cookie

优点:

1 配置简单

2 提供会话保持功能

3 性能不错

安装与配置

安装

tar -zxvf haproxy-1.49.tar.gz ??
cd haproxy-1.4.9 ?
make TARGET=linux26 PREFIX=/haproxy ?
make install PREFIX=/haproxy创建日志目录mkdir /home/haproxy/logs/创建配置文件目录mkdir /etc/haproxy/

PREFIX=/haproxy : 安装目录前缀

启动程序将安装在 /haproxy/sbin/haproxy

配置

vim /etc/haproxy/haproxy.cfg

global ????????log 127.0.0.1 ??local3 ????????#log 127.0.0.1 ?local1 notice ????????#log loghost ???local0 info ????????maxconn 4096 ??????#chroot /usr/local/haproxy ??????#chroot /home/haproxy ????????uid 502 ???????gid 502 ??????daemon ????????nbproc 1 ????????pidfile /home/haproxy/logs/haproxy.pid ????????#debug ????????#quiet ?????defaults ????????log ????global ???????mode ???http ????????option ?httplog ????????option ?dontlognull ????????option ?forwardfor ????????option ?redispatch ???????log ????127.0.0.1 local3 ??????retries 3 ????????maxconn 32000 ????????balance roundrobin ????????stats ??uri ????/haproxy-stats ????????contimeout ?????5000 ????????clitimeout ?????50000 ????????srvtimeout ?????50000 ???????listen web_proxy *:80 ??????appsession JSESSIONID len 52 timeout 3h ??????#插入cookie的方式 ??????cookie SRV insert indirect nocache ??????#模式有http tcp health ??????mode http ??????stats enable ??????stats hide-version ??????#查看状态 ???????stats uri /haproxy-stats ??????stats refresh 10s ??????monitor-uri /haproxy_test ??????#负载均衡方案:轮调 ???????balance roundrobin ??????option httpclose ??????#后端可以获取客户端的真实ip ??????option forwardfor ??????#健康检查 ???????option httpchk HEAD /login HTTP/1.0 ??????#option ?httpchk GET /ping.jsp ???????#后端真实服务 ???????server ?webA 192.168.1.226:8081 cookie A check ????????server ?webB 192.168.1.246:8888 cookie B check

这里注意配置检查地址

option httpchk HEAD /login HTTP/1.0

启动

/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg

查看进程

ps -ef|grep haproxy

关闭进程

kill –9 pid

查看监控页面

http://192.168.1.227/haproxy-stats

如下图:注意状态一栏显示200,如果不是则表示web服务器未启动,或者健康检查链接不可访问

测试

然后打开不同的浏览器,模拟用户访问

http://192.168.1.227/login/

会看到

证明请求被分发到不同的web服务器了

查看cookie

cookie被加入了SRV=A

会话保持的流程

1.客户端首次请求,经过haproxy到web服务端时,web服务端set-cookie并响应到haproxy

2.haproxy在cookie后插入SRV=A,并响应客户端

3.客户端第二次请求,经过haproxy时,haproxy将srv后缀去掉,然后请求服务端

总结

该方案解决的问题

1.负载均衡,并解决web服务的单点故障

2.会话保持

存在的缺点

1.web服务器的session保存存在单点故障,即其中一台web服务器宕机之后,存储在上面的session也会丢失

2.负载均衡服务器存在单点故障

http层负载均衡之 haproxy实践篇

原文地址:https://www.cnblogs.com/weifeng1463/p/8478121.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved