方案

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

方案: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.负载均衡服务器存在单点故障

最新文章

  1. [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
  2. 第七篇 SQL Server代理作业活动监视器
  3. 2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)
  4. 基于swift语言iOS8的蓝牙连接(初步)
  5. 【转】Struts2中的MethodFilterInterceptor(转)
  6. Fedora上配置一个安全FTP
  7. 实验一:C语言实现DES加解密算法
  8. (转)WCF中调用WebService出错,大家帮忙看看,回答就有分
  9. Selenium webdriver 常见问题
  10. 常用的opengl函数(三)
  11. C# set get 函数 属性访问器
  12. 04 jsp,EL,JSTL
  13. UMD编码规范
  14. Xamarin iOS教程之视图显示图像
  15. openwrt undefined reference to ‘getpwent_r’
  16. 解决spring 事务管理默认不支持SQLException等运行时异常
  17. 福州三中基训day2
  18. create-react-app脚手架中配置sass
  19. border与透明边框
  20. MHA安装配置

热门文章

  1. wordpress的固定链接问题
  2. php晚了8小时 PHP5中的时间相差8小时的解决办法
  3. dns服务的基本配置
  4. BZOJ3745 / SP22343 NORMA2 - Norma 分治,CDQ分治
  5. React 错误处理(componentDidCatch)
  6. mysql慢查询分析
  7. c语言数组那些骚事儿
  8. 【NOIP2017提高组模拟6.27】C
  9. Javascript高级程序设计第三版-笔记
  10. 目标检测Object Detection概述(Tensorflow&Pytorch实现)