cszer

HAProxy简介及实例

分类: 技术, Linux 运维   标签:    评论: 0   阅读:3,837 views

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

环境:
Haproxy:192.168.1.106
Web1: 192.168.1.107
Web2: 192.168.1.108

安装:

tar zxvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
uname -a
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

编辑配置文件:

cp /soft/haproxy-1.4.22/examples/haproxy.cfg /usr/local/haproxy/
vim /usr/local/haproxy/haproxy.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
global
        log 127.0.0.1   local0    #全局日志
        maxconn 4096    #最大连接数
        chroot /usr/local/haproxy
        uid 99    #用户ID
        gid 99    #组ID
        daemon    #后台运行
        nbproc 1    #创建进程数
        pidfile /usr/local/haproxy/haproxy.pid    #pid文件
 
defaults
        log     127.0.0.1 local3
        mode    http    #支持的模式
        option  httplog    #日志格式
        option  httpclose    #请求完成后关闭http通道
        option  dontlognull
        option  forwardfor    #apache日志转发
        option redispatch
        retries 3    #重连次数
        maxconn 2000
        balance roundrobin    #算法类型
        stats uri /haproxy-stats    #状态统计页面
 
        #stats auth admin:admin    #状态页面用户密码,可选
        contimeout      5000    #连接超时
        clitimeout      50000    #客户端超时
        srvtimeout      50000    #服务器超时
 
listen  proxy 172.16.19.103:8080    #访问地址及端口
  option httpchk HEAD /index.html HTTP/1.0    #健康检查页面
  server web1 192.168.1.107:80 cookie app1inst1 check inter 2000 rise 2 fall 5
  server web2 192.168.1.108:80 cookie app1inst2 check inter 2000 rise 2 fall 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
global
    log         127.0.0.1 local2
    chroot      /usr/local/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
 
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
    stats uri /admin
 
frontend  main *:80
    default_backend             app
 
backend app
    balance     roundrobin
    server  app1 192.168.1.107:80 check
    server  app2 192.168.1.108:80 check

测试:
haproxy-test1
haproxy-test2

[email protected]:~# while true;do curl 192.168.1.106;sleep 1;done
I'am web2
I'am web1
I'am web2
I'am web1
I'am web2
I'am web1
I'am web2
I'am web1
I'am web2

加上日志支持:

#vim /etc/syslog.conf 
local3.*        /var/log/haproxy.log 
local0.*        /var/log/haproxy.log 
#vim /etc/sysconfig/syslog 
SYSLOGD_OPTIONS="-r -m 0"
service syslog restart 

HAProxy的算法有如下8种:

  • 一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
  • 二、static-rr,表示根据权重,建议关注;
  • 三、leastconn,表示最少连接者先处理,建议关注;
  • 四、source,表示根据请求源IP,建议关注;跟LVS的persistent和Nginx的ip_hash一样,是让客户机访问时始终访问后端的某一台真实的web服务器;
  • 五、uri,表示根据请求的URI;
  • 六、url_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name
  • 七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
  • 八、rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

其实这些算法各有各的用法,我们平时应用得比较多的应该是roundrobin、source和lestconn,大家可以重点关注下。

参考:
http://addict.blog.51cto.com/1183172/1179270
http://sfzhang88.blog.51cto.com/4995876/1229620
http://johnsz.blog.51cto.com/525379/715922
http://dngood.blog.51cto.com/446195/1120487
http://pesen.blog.51cto.com/4575807/1137200

除非注明,文章皆由( csz )原创,转载请标明本文地址
本文地址: http://www.cszhi.com/20130716/haproxy.html

07-16
2013

发表评论