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/

配置

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

启动

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

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

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

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

 

http层负载均衡之haproxy的更多相关文章

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

    方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个haproxy服务,两个web服务 haproxy:192 ...

  2. http层负载均衡之 haproxy实践篇

    方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个haproxy服务,两个web服务 haproxy:192 ...

  3. 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

    一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和 ...

  4. [转帖]HAProxy 7层 负载均衡

    HAProxy 7层 负载均衡 https://www.cnblogs.com/jicki/p/5546902.html HAProxy 系统 CentOS 5.8 x64 wget http://h ...

  5. 千万级高并发负载均衡软件HAproxy

    1负载均衡产品介绍 基于硬件的负载均衡设备例如F5,Big-IP,基于软件的负载均衡产品HAproxy,LVS,nginx在这些软件产品中,又分为基于操作系统的软负载实现和基于第三方应用的软负载实现. ...

  6. Windows Azure支持七层负载均衡--Application Gateway

    一直以来Windows Azure的负载均衡(Loadbalancer)功能一直被客户诟病,无法其竞争对手(特别是国内的云厂商)匹敌. Windows Azure的负载均衡器是四层的,前期的版本不支持 ...

  7. Web负载均衡学习笔记之四层和七层负载均衡的区别

    0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...

  8. 四层and七层负载均衡

    四层负载/七层负载 在常规运维工作中,经常会运用到负载均衡服务.负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 废话不多说,详解如下: 1.    什么是负载均衡 1)负载均衡(Load ...

  9. nginx 七层负载均衡

    [tcp] nginx 七层负载均衡 nginx负载均衡概述 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡, ...

随机推荐

  1. 文件搜索神器everything 你不知道的技巧总结

    everything这个软件用了很久,总结了一些大家可能没注意到的技巧,分享给大家 1.指定文件目录搜索示例: TDDOWNLOAD\ abc        在所有TDDOWNLOAD文件夹下搜索包含 ...

  2. HDU更多的学校比赛9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学技巧】

    困难,.,真,,,不是太困难 的问题是,有一个矩阵运算优化 您有权发言权N*K矩阵A给K*N矩阵B(1<=N<=1000 && 1=<K<=6).他们拿起了第一 ...

  3. IOS 多于UIImageView 当加载较大的高清闪存管理

    当我们是一家人View  多于UIImageView,和UIImageView表明一个更大的HD,可能存在的存储器的警告的问题.假设第一次走进这个view,无记忆出现预警.当重新进入view,在那曾经 ...

  4. HDU 1541 Stars (树状数组)

    Problem Description Astronomers often examine star maps where stars are represented by points on a p ...

  5. C、C++用指针引用的差异

    1:并引述之间的区别在概念的指针 参考是可变的别名.例如 int m; int &n=m; 引用作为一个别名.它在逻辑上不是独立的.它的存在具有依附性.所以引用必须在一開始就被初始化.并且其引 ...

  6. java它们的定义jar套餐读Excel(这包括2003和2007)数据,和实例

    使用java它们的定义jar套餐读excel数据支持excel2007和excel2003 在http://download.csdn.net/detail/u010792467/8079355下载所 ...

  7. kendoui仪表板和直方图 演示样本

    到那个时刻kendeodui我相信大家一定不陌生.该js在绘画方面的好成绩. 现在来看看 它的仪表盘和直方图效果: html和js代码例如以下: <!DOCTYPE html> <h ...

  8. 章节2:SQL之多表连接

    原文:章节2:SQL之多表连接 Sql的多表连接关系有:内连接.外连接和交叉连接. 先建立两个用于演示的表: TB_Characters: Id Character 1 内向 2 外向 3 中性性格 ...

  9. avalon组件

    如何做一个avalon组件 在avalon1.5中改用更直观的自定义标签来声明组件,废掉ms-widget,引入更强大的生命周期管理,可以让组件任意套嵌. 组件是由JS,HTML,CSS构成 JS 以 ...

  10. 求N!末尾的0的个数(找规律+递归)

    0\'s Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代 ...