当前位置: 首页 > news >正文

HAProxy负载均衡器后续篇

【51CTO.com 独家特稿】虽然我们看HAProxy的官方文档确实配置内容比较多,但其实我们用于线上环境,仅此几条就够用了,这也是大家说HAProxy简单的原因,HAProxy的对应配置文件如下所示: 


 
  1. global 
  2.         log 127.0.0.1   local0 
  3.         maxconn 4096 
  4.         chroot /usr/local/haproxy 
  5.         uid 99   
  6.         gid 99 
  7.         daemon 
  8.         nbproc 1 
  9.         pidfile /usr/local/haproxy/logs/haproxy.pid 
  10.         debug 
  11.  
  12. defaults 
  13.         log     127.0.0.1       local3 
  14.         mode    http 
  15.         option httplog 
  16.         option httpclose 
  17.         option dontlognull 
  18.         option forwardfor 
  19.         option redispatch 
  20.         retries 2 
  21.         maxconn 2000 
  22.         balance source 
  23.         stats   uri     /haproxy-stats 
  24.         contimeout      5000 
  25.         clitimeout      50000 
  26.         srvtimeout      50000 
  27.  
  28.     listen 1paituan_proxy 203.93.236.149:80 
  29.         option httpchk HEAD /index.jsp HTTP/1.0 
  30.         server web1  203.93.236.147:80 cookie app1inst1 check inter 2000 rise 2 fall 1 
  31.      server web2  203.93.236.146:80 cookie app1inst2 check inter 2000 rise 2 fall 1 

加上日志支持,如下所示:


 
  1. #vim /etc/syslog.conf 
  2. 添加: 
  3. local3.*        /var/log/haproxy.log 
  4. local0.*        /var/log/haproxy.log 
  5. #vim /etc/sysconfig/syslog 
  6. 修改: 
  7. SYSLOGD_OPTIONS="-r -m 0" 
  8. service syslog restart 

这里要注意的几个地方是:

一、HAProyx采用的是balance source机制,它跟LVSpersistentNginxip_hash一样,是让客户机访问时始终访问后端的某一台真实的web服务器;

二、203.93.236.149是我的网站通过Keepalived生成的VIP地址;

三、 option httpchk HEAD /index.jsp HTTP/1.0 是网页临近,如果HAProxy检测不到Web的根目录下没有index.jsp,就会产生503报错。

HAProxy+keepalived/Heartbeat是我网站的第二套方案,因为刚开始网站上的LVS+Keepalived高可用架构,后来几个朋友说用手机测试时,转发很慢,有时打不开,甚有的电脑也是这样,我尝试了以下确实如此;所以用了HAProxy+Keepalived以后发现转发速度确实快多了,手机上一拍网也没有这个问题了,由于HAProxy+Keepalived在东莞的客户那里已经部署得很成功了,所以后期我也考虑将此网站设计成HAProyx+Keepalived这种架构的。

HAProxy的算法有如下8种:

一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;

二、static-rr,表示根据权重,建议关注;

三、leastconn,表示最少连接者先处理,建议关注;

四、source,表示根据请求源IP,建议关注;

五、uri,表示根据请求的URI

六、url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name

七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;

八、rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

其实这些算法各有各的用法,我们平时应用得比较多的应该是roundrobinsourcelestconn,大家可以重点关注下。这里我用HAProxy+Keepalived时没有考虑HAProxy进程级别的高HA,一来是因为淘宝也在用它作为负载均衡器,稳定性肯定不需要怀疑;二来在测试时发现确实相当的稳定,杀掉HAProxy进程还必须用kill -9,所以没有在这上面浪费时间了;在测试时也确实考虑过用HAProxy+Keepalived做双主架构,后来发现不是太好维护就算了。

有一点要提醒大家,HAProxy是支持虚拟主机的,我以前看过有些朋友说它是不支持的,这个其实很好验证,我们做个1+1的架构,后面随便放台NginxAapcehweb服务器就可能验证这种说法了;另外,经过与Nginx的正则对比,我们也确实发现HAProxy的正则处理能力上不如Nginx的强大和灵活的,我们这里也可以采取一个折衷的方案,后面的web服务器我们都用Nginx来作,如果是jsp应用,可以用Nginx+tomat,如果是跑PHP的,可以用Nginx+FastCGIPHP5)。

相关文章:

  • 舆情监控服务模式
  • 使用drbd同步磁盘
  • 宏定义#define 完全用法
  • Oracle SQL*Loader 使用指南(第一部分)
  • 艾伟_转载:ASP.NET底层的初步认识与理解
  • 一起谈.NET技术,ASP.NET MVC 2扩展点之Model Binder
  • 2011百度实习生笔试题目
  • 从零开始学习OpenGL ES之五补遗 – setupView重写
  • .NET大文件上传知识整理
  • HDU 1075 What Are You Talking About
  • iPhone公用代码库开源代码网址(cc_team贡献,陈曦,陈旭)
  • 利用autobench测试web服务器极限并发数(带使用说明)
  • 在centos 5.6 64位配置puppet 服务端和客户端(二)
  • wmware启动进行BIOS方法
  • 一份不错的学习c networking programming的教程
  • SegmentFault for Android 3.0 发布
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CSS 三角实现
  • github指令
  • httpie使用详解
  • If…else
  • Linux下的乱码问题
  • MySQL的数据类型
  • springMvc学习笔记(2)
  • Vue学习第二天
  • Web设计流程优化:网页效果图设计新思路
  • 高度不固定时垂直居中
  • 记一次删除Git记录中的大文件的过程
  • 手写一个CommonJS打包工具(一)
  • 微信小程序填坑清单
  • 进程与线程(三)——进程/线程间通信
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​第20课 在Android Native开发中加入新的C++类
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (Git) gitignore基础使用
  • (二)JAVA使用POI操作excel
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (生成器)yield与(迭代器)generator
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (数据结构)顺序表的定义
  • (算法)Travel Information Center
  • (一一四)第九章编程练习
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • ****Linux下Mysql的安装和配置
  • *1 计算机基础和操作系统基础及几大协议
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Framework .NET Core与 .NET 的区别
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...