zoukankan      html  css  js  c++  java
  • Haproxy搭建Web群集

    一、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、安装

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

    2、配置haproxy

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

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

     1 global
     2 log 127.0.0.1 local0   #配置日志记录,local0为日志设备,默认存放到系统日志
     3 log 127.0.0.1 local1 notice    #notice为日志级别,通常有24个级别
     4 #log loghost       local0 info
     5 maxconn 4096    #最大连接数
     6 chroot /usr/share/haproxy
     7 uid 99         #用户uid
     8 gid 99         #用户gid
     9 #debug
    10 #quiet
    11 
    12 defaults   #配置选项默认参数,一般会被应用组件继承,如果再应用组件中没有特别声明,将安装默认配置参数设置
    13 log global  #定义日志为global配置中的日志定义
    14 mode http    #模式为http
    15 option httplog  #采用http日志格式记录日志
    16 option dontlognull
    17 retries 3  #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
    18 #redispatch
    19 maxconn 2000    #最大连接数
    20 contimeout 5000    #连接超时时间
    21 clitimeout 50000   #客户端超时时间
    22 srvtimeout 50000   #服务器超时时间
    23 
    24 listen webcluster 0.0.0.0:80   #定义一个监听web的应用名称
    25 option httpchk GET /index.html  #注意:检查服务器的index.html文件,可以删除
    26 balance roundrobin   #算法
    27 server inst1 192.168.10.61:80 check inter 2000 fall 3
    28 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

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

    4、验证

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

    三、日志管理

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

    (1)在全局配置中添加

    1 log /dev/log    local0 info
    2 log /dev/log    local0 notice

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

    1 ~]# touch /etc/rsyslog.d/haproxy.conf
    2 ~]# vi /etc/rsyslog.d/haproxy.conf
    3 if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
    4 & ~
    5 if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
    6 & ~
    7 ~]#/etc/init.d/rsyslog restart
    8 ~]#tail -f /var/log/haproxy/haproxy-info.log   #保存客户端访问信息
    9 tail -f /var/log/haproxy/haproxy-notice.log    #haproxy的启动停止记录
  • 相关阅读:
    IIS7开启目录浏览功能
    IIS7文件无法下载问题处理
    Dubbo端口占用错误信息
    PlSqlDev中执行INSERT SQL语句包含&符号导致数据异常
    VMWare版本兼容问题处理
    手动释放Linux内存
    ORA-00972_标识符过长
    通过API获取统计信息时报Access denied错误处理记录
    微信小程序中跳转另一个小程序
    css怎样去掉多个Img标签之间的间隙
  • 原文地址:https://www.cnblogs.com/mangood/p/6075484.html
Copyright © 2011-2022 走看看