大型网站系统架构实践(四)http层负载均衡之haproxy实践篇(一)

方案

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

方案: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

配置

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 502daemon  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 local3retries 3  maxconn 32000  balance roundrobin  stats   uri     /haproxy-stats  contimeout      5000  clitimeout      50000  srvtimeout      50000  listen web_proxy *:80appsession JSESSIONID len 52 timeout 3h#插入cookie的方式cookie SRV insert indirect nocache#模式有http tcp healthmode httpstats enablestats hide-version#查看状态stats uri /haproxy-statsstats refresh 10smonitor-uri /haproxy_test#负载均衡方案:轮调balance roundrobinoption httpclose#后端可以获取客户端的真实ipoption 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服务器未启动,或者健康检查链接不可访问

image

测试

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

http://192.168.1.227/login/

会看到

image

 

image

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

查看cookie

image

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

下一篇文章将讨论如何解决以上2个缺点

 

上篇文章 大型网站系统架构的演进(三)如何提高网站的高可用和高性能

目录 大型网站系统架构的演进目录

下篇文章 大型网站系统架构的演进(五)深入探讨web应用高可用方案

转载于:https://www.cnblogs.com/tangyanbo/p/4409841.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Python]使用 lambda 函数

From:http://woodpecker.org.cn/diveintopython/power_of_introspection/lambda_functions.html 4.7. 使用 lambda 函数 4.7.1. 真实世界中的 lambda 函数 Python 支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做 lambda 的函数,是从 Li…

日志处理(二) 日志组件logback的介绍及配置使用方法(转)

本文转自:http://www.cnblogs.com/yuanermen/archive/2012/02/13/2348942.html http://www.cnblogs.com/yuanermen/archive/2012/02/13/2349609.html 一、logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logba…

python package安装包_安装Python包(第三方库)

检查python版本如果“提示 python 不是内部或外部命令,也不是可运行的程序或批处理文件。”,可能有2种原因1、进入的目录不对 (切换目录后再查看)C:\Users\zhangXXXX>pythonpython 不是内部或外部命令,也不是可运行的程序或批处理文件。C:…

Windows2003+SQL2000的集群安装手册

1 集群服务器安装及配置 步骤节点1节点2存储注释安装配置系统上电上电断电检查所有共享总线上的存储设备是否都已经断电,给各节点上电。1.1 安装Windows Server 2003操作系统 在服务器1和服务器2分别独立安装Windows Server 2003操作系统。安装要开始安装过程&#…

Bash中执行存储过程或普通的SQL命令

演示: 在bash中执行一个存储过程和一个普通的SQL语句 0. 前提条件: 数据库:Oracle10g 表:oracle自带的emp表,默认有数据如下: 1. 在bash中执行oracle存储过程 首先,在oracle中建立一个存储过…

“AS3.0高级动画编程”学习:第二章转向行为(下)

在上一篇里,我们学习了“自主角色”的一些基本行为:寻找(seek)、避开(flee)、到达(arrive)、追捕(pursue)、躲避(evade)、漫游(wander)。这一篇将继续学习其它更复杂,更高级的行为。 一、对象回避(object avoidance) 对象回避的正式解释为&am…

solor mysql_solr 同步 mysql

一、首先创建一个数据库和表这里创建了一个表,加上了测试数据,注意这里有一个字段来记录更新时间 update_date二、修改配置文件我们首先介绍全量同步,再介绍增量同步我的 solr 版本是 7.5 的,new_core是我创建的 core&#xff0c…

java canvas 缩放图片_详解如何用HTML5 Canvas API控制图片的缩放变换

摘要:这篇HTML5栏目下的“详解如何用HTML5 Canvas API控制图片的缩放变换”,介绍的技术点是“html5_canvas、canvas、Html5、控制图片、api、图片”,希望对大家开发技术学习和问题解决有帮助。缩放变换scale(sx,sy)传入两个参数,分…

向周鸿祎的360安全浏览器学互联网产品运营和推广

做互联网产品运营就要像周鸿祎一样,老周一直是运营流的大力倡导者,而360安全浏览器则是老周给我们上的产品运营又一课,醍醐灌顶,如梦初醒。 下图是截止到今年6月中国网民的浏览器使用情况图: 根据CNZZ的数据&#xff0…

java中的locksupport_java中线程的停止以及LockSupport工具类

看jstack输出的时候,可以发现很多状态都是TIMED_WAITING(parking),如下所示:"http-bio-8080-exec-16" #70 daemon prio5 os_prio0 tid0x00007f6088027800 nid0x3a1f waiting on condition [0x00007f60fcd03000]java.lang.Thread.St…

深入react技术栈(8):事件系统

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号搜索前端小歌谣获取前端知识 1合成事件的绑定方式 2合成事件的实现机制 3在React中使用原生事件 4合成事件和原生事件混用 5对比react与原生事件 文章参考深入React技术栈

java mac jconsole_解决java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包问题

今天遇到了这样一种情况,自己的maven项目中并没有引用的jar包出现在了Maven Dependencies的依赖包中。而我在pom.xml自己没有没有引入啊.图示怀疑是自己的alibaba 的druid所依赖的包:com.alibabadruid1.0.14然后查看了它的相关依赖,果然找到了…