一、Haproxy与LVS

  LVS不支持正则处理,不能实现动静分离,对于大型网站,LVS的实施配置复杂,维护成本相对较高

  Harpoxy是一款可提供高可用性,负载均衡、及基于TCP和HTTP应用的代理的软件,特别适用于负载特别大的Web站点。运行在当前的硬件上可支持数以万计的并发连接请求。

  Haproxy支持多种调度算法,常用的有四种: rr、wrr、LC、SH

  SH即基于来源访问的调度算法,此算法用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、cookie等做集群调度;举例:使用源IP的集群调度算法,有三个节点A、B、C,第一个用户第一次访问被指派到了A,第二个用户第一次访问被指派到了B,当第一个用户第二次访问时会被继续指派到A,第二个用户第二次访问时依旧会被指派到B,只要负载均衡调度器不重启,第一个用户访问都会被指派到A,第二个用户访问都会被指派到B,实现集群的调度、此调度算法好处是实现会话保持,但某些IP访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用。

二、应用案例分析

1、安装

 [root@localhost ~]# yum -y install pcre-devel zlib-devel
[root@localhost ~]# tar -zxvf haproxy-1.4.24.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/haproxy-1.4.24/
[root@localhost ~]# make TARGET=linux26 #linux26是指linux的内核版本号。
[root@localhost ~]# make install

2、配置haproxy

 [root@localhost ~]# mkdir /etc/haproxy #创建配置文件目录
[root@localhost ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.cfg /etc/haproxy/
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg

修改:(配置文件里的内容很多,只写下列即可,其他的可以删除)

 global
log 127.0.0.1 local0 #配置日志记录,local0为日志设备,默认存放到系统日志
log 127.0.0.1 local1 notice #notice为日志级别,通常有24个级别
#log loghost local0 info
maxconn 4096 #最大连接数
chroot /usr/share/haproxy
uid 99 #用户uid
gid 99 #用户gid
#debug
#quiet defaults #配置选项默认参数,一般会被应用组件继承,如果再应用组件中没有特别声明,将安装默认配置参数设置
log global #定义日志为global配置中的日志定义
mode http #模式为http
option httplog #采用http日志格式记录日志
option dontlognull
retries 3 #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
#redispatch
maxconn 2000 #最大连接数
contimeout 5000 #连接超时时间
clitimeout 50000 #客户端超时时间
srvtimeout 50000 #服务器超时时间 listen webcluster 0.0.0.0:80 #定义一个监听web的应用名称
option httpchk GET /index.html #注意:检查服务器的index.html文件,可以删除
balance roundrobin #算法
server inst1 192.168.10.61:80 check inter 2000 fall 3
server inst2 192.168.10.62:80 check inter 2000 fall 3 #server inst2 192.168.10.62:80 check inter 2000 fall 3 backup的意思是定义备份节点,就是说这个服务器不在线

注意:
如果启动时出现报错:/haproxy.main()] Cannot chroot(/usr/share/haproxy)
则手动创建:
[root@localhost ~]# mkdir /usr/share/haproxy
如果启动时出现报错:Starting proxy cacti: cannot bind socket
则执行:
[root@localhost ~]# sysctl -e net.ipv4.ip_nonlocal_bind=1

3、启动haproxy

 [root@localhost ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
[root@localhost ~]# chmod +x /etc/init.d/haproxy
[root@localhost ~]# /etc/init.d/haproxy start
[root@localhost ~]# /etc/init.d/haproxy status
[root@localhost ~]# netstat -anp | grep haproxy #占用的是TCP的80端口
[root@localhost ~]# chkconfig --add haproxy
[root@localhost ~]# chkconfig haproxy on

4、验证

客户端输入
http://192.168.10.60/
断开其中一个节点,再访问

三、日志管理

  Haproxy的日志默认是输出到系统的syslog中,查看起来不是非常方便,为了更好地管理Haproxy的日志,在生产环境中一般单独定义出来

(1)在全局配置中添加

 log /dev/log    local0 info
log /dev/log local0 notice

(2)修改rsyslog配置,将Haproxy相关的配置独立定义到haproxy.conf中,并放到/etc/rsyslog.d/下

 ~]# touch /etc/rsyslog.d/haproxy.conf
~]# vi /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
& ~
~]#/etc/init.d/rsyslog restart
~]#tail -f /var/log/haproxy/haproxy-info.log #保存客户端访问信息
tail -f /var/log/haproxy/haproxy-notice.log #haproxy的启动停止记录

Haproxy搭建Web群集的更多相关文章

  1. 24.Haproxy搭建Web群集

    Haproxy搭建Web群集 目录 Haproxy搭建Web群集 Haproxy简介 常见的Web集群调度器 软件类 硬件类 Haproxy应用分析 HAProxy的主要特性 HAProxy常见的8种 ...

  2. Haproxy搭建web集群

    目录: 一.常见的web集群调度器 二.Haproxy应用分析 三.Haproxy调度算法原理 四.Haproxy特性 五.Haproxy搭建 Web 群集 一.常见的web集群调度器 目前常见的we ...

  3. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  4. Apache Nifi在Windows环境下搭建伪群集及证书登录

    代码地址如下:http://www.demodashi.com/demo/11986.html 前些时间做了关于Apache Nifi分布式集群的搭建分享,但很多时候要搭建分布式集群机器资源是个问题, ...

  5. 用grunt搭建web前端开发环境

    1.前言 本文章旨在讲解grunt入门,以及讲解grunt最常用的几个插件的使用. 2.安装node.js Grunt和所有grunt插件都是基于nodejs来运行的,如果你的电脑上没有nodejs, ...

  6. 阿里云产品搭建web应用梳理

    阿里云搭建web应用梳理         要搭建web应用,主要需要准备两部分内容,一部分是域名,另一部分就是服务器.下面分别对在阿里如何准备这两部分内容做一个简要说明. 一.域名       提供域 ...

  7. 【maven】 在 MyEcplise上使用maven搭建Web项目

    二.在My Ecplise上使用Maven搭建Web项目 1.新建一个maven项目   2.create一个简单的骨架 3.就像在ecplise中一样设置项目的以下配置   4.新创建的项目结构如下 ...

  8. 在Win7系统中搭建Web服务器

    局 域网Web服务器的主要功能是实现资源共享,同时借助于局域网服务器访问页面可有效的实现信息的同步.利用Web服务器,我们随时随地都可以将自己的信息 上传到服务器端,让其它关注你的用户能在第一时间内了 ...

  9. 快速搭建Web环境 Angularjs + Express3 + Bootstrap3

    快速搭建Web环境 Angularjs + Express3 + Bootstrap3 AngularJS体验式编程系列文章, 将介绍如何用angularjs构建一个强大的web前端系统.angula ...

随机推荐

  1. Shder中实现TintColor

    [Shder中实现TintColor] TintColor实现上相当于一个滤镜,若TintColor的R为0,则原图的R通道颜色应该为0.基于此,实现TintColor很容易,原图颜色直接乘以Tint ...

  2. SimpleReflection

    [SimpleReflection] 取法线的x.y作为reflection-map的uv. Shader "Custom/SimpleReflection" { Properti ...

  3. 图解Java常用数据结构(一)

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...

  4. MVC知识记录

    1.完整深入分析 MVC请求机制:http://blog.jobbole.com/85033/ 2.MVC入门:http://www.aizhengli.com/givecase-aspnet-5-m ...

  5. C语言中的undefined behavior

    参考: http://www.cnblogs.com/aoaoblogs/archive/2010/08/31/1813982.html

  6. ubuntu登陆无限循环

    现象:在Ubuntu登陆界面输入密码之后,黑屏一闪并且出现了check battery state之类的文字之后,又跳转到登录界面. 原因:主目录下的.Xauthority文件拥有者变成了root,从 ...

  7. Web Api 中返回JSON的正确做法(转)

    出处:http://www.cnblogs.com/acles/archive/2013/06/21/3147667.html 在使用Web Api的时候,有时候只想返回JSON:实现这一功能有多种方 ...

  8. jar包制作一个可执行文件

    1.在桌面新建一个txt文件,然后修改为.bat后缀的文件,例如: 文件命名为:Editfact.bat 2.对文件内容进行编写,如下: %此处为bat文件盘符% c: %此处为jar包位置% cd ...

  9. require的路径问题(比较重要)

    dojo.baseUrl baseUrl用来存储dojo.js存放 的跟目录,例如dojo.js的路径是“/web/scripts/dojo-1.3/dojo/dojo.js”则baseUrl为“/w ...

  10. (转)SQL Server内存遭遇操作系统进程压榨案例

    原文地址:http://www.cnblogs.com/zc_0101/p/3592259.html 场景: 最近一台DB服务器偶尔出现CPU报警,我的邮件报警阈(请读yù)值设置的是15%,开始时没 ...