Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7389746
  • 博文数量: 1755
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16227
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1755)

文章存档

2024年(1)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2012-04-18 15:01:40

Haproxy安装

 

 

1、  安装

wget

tar -zxvf haproxy-1.4.20.tar.gz

cd haproxy-1.4.20

make TARGET=linux26

make install

cd ..

 

vi /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind=1

生效sysctl.conf配置

Sysctl –p

 

 

 

 

2、  启动脚本

#!/bin/bash

start(){

haproxy -f /etc/haproxy/haproxy.cfg

}

stop(){

echo "find pid:`cat /var/run/haproxy-private.pid`"

kill `cat /var/run/haproxy-private.pid`

}

test(){

haproxy -f /etc/haproxy/haproxy.cfg -c

}

case "$1" in

         start)

         start

         echo -e  "\033[40;31mHaproxy start...\033[0m\n"

         ;;

         stop)

         stop

         echo -e  "\033[40;31mHaproxy stop...\033[0m\n"

         ;;

         test)

         test

         ;;

         *)

         echo $"Usage:"$0" {start|stop|test}"

        ;;

Esac

 

 

 

 

3、  配置

mkdir -p /etc/haproxy

useradd haproxy

 

vim /etc/haproxy/haproxy.cfg

global

#        chroot /var/chroot/haproxy

        daemon

        log 127.0.0.1 local3

        nbproc  1

        pidfile /var/run/haproxy-private.pid

 

        ulimit-n        65535

        user    haproxy

             group        haproxy

        maxconn         32000                #最大连接数

        spread-checks           4

        tune.maxaccept          8

        tune.maxpollevents      100

 

 

defaults askwan

        log     global

        mode    http                   #默认的模式,还有tcp,http,health,tcp4层,http7

        option  httplog

        option  dontlognull

        log 127.0.0.1 local3

        retries 3

        option redispatch

        maxconn 32000

        contimeout      5000

        clitimeout      50000

        srvtimeout      50000

 

 

listen  appserver  0.0.0.0:80

        mode http

        stats enable                                 #开启监控界面

        stats hide-version

        stats uri /haproxy-stats

        stats realm Haproxy\ statistics

        stats auth admin:admin           #设置监控界面用户密码

        stats refresh 3s

         stats admin if TRUE

        monitor-uri /haproxy_test

        balance roundrobin                    #负载均衡的方式

        option httpclose

        option forwardfor

        #option httpchk HEAD /1.txt HTTP/1.0  #7层检测要开启这个,去掉为4层检测

 

        server server1 192.168.14.51:8080 check inter 2000 

        server server2 192.168.14.52:8080 check inter 2000

 

vim syslog.conf

...

local3.*         /var/log/haproxy.log

 

负载方式有:

轮询                   roundrobin

根据权重RR   static-rr

最少连接数     leastconn

根据源IP         source

根据URI           uri

根据URL里的参数         url_param

具体参考:

 

 

4、  测试

(一) session会话保持测试

有三种方法可以做到session会话保持,分别为:cookie识别、session识别、ip保持,配置如下:

Cookie识别

cookie JSESSIONID prefix

server tomcat1 192.168.14.51:8080 cookie JSESSIONID_SERVER_1 check inter 5000

server tomcat2 192.168.14.52:8080 cookie JSESSIONID_SERVER_2 check inter 5000

 

Session识别

appsession JSESSIONID len 52 timeout 3h

server tomcat1 192.168.14.51:8080 check

server tomcat2 192.168.14.52:8080 check

 

IP保持

balance source  #负载方法改为source

 

测试页代码为:

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ page import="java.util.*" %>

Cluster Test

<% //HttpSession session = request.getSession(true);

System.out.println(session.getId());

out.println("
51 ESSION ID:" + session.getId()+"
");

%>

 

 

 

(二) 虚拟主机测试

Haproxy对虚拟机的支持有两种方法,一种是后端服务器的支持,一种是通过frontendbackend的方法来实现

第一种很简单,只要在后端的服务器中进行虚拟主机的设置就OKhaproxy反向的时候自然会转到各个虚拟主机里面!

第二种要修改配置文件,具体配置如下:

 

frontend web_in

     mode    http

     maxconn 65535

     bind    *:80

 

     acl is_web hdr_beg(host) -i

     acl is_pay hdr_beg(host) -i pay.51play.com

 

     use_backend web if is_web

     use_backend pay if is_pay

 

 

backend web

     mode    http

     fullconn 56000

     option  httpchk HEAD /1.txt HTTP/1.1\r\nHost:

 

     balance roundrobin

     #balance source

     #option allbackups

     #cookie  SERVERID       insert nocache indirect

     server server1         192.168.14.51:80 check inter 2s minconn 64 maxconn 1024 slowstart 10s weight 100

     server server2         192.168.14.52:80 check inter 2s minconn 64 maxconn 1024 slowstart 10s weight 100

 

backend pay

     mode    http

     fullconn 2048

     option  httpchk HEAD /2.txt HTTP/1.1\r\nHost:pay.51play.com

     balance roundrobin

     server server1         192.168.14.51:80 check inter 2s minconn 64 maxconn 1024 slowstart 10s weight 100

     server server2         192.168.14.52:80 check inter 2s minconn 64 maxconn 1024 slowstart 10s weight 100

 

(三) tcp长连接测试

配置如下:

vim /etc/haproxy/haproxy.cfg

 

global

        daemon

        log 127.0.0.1 local3

        nbproc  1

        pidfile /var/run/haproxy-private.pid

 

        ulimit-n        65535

        user    haproxy

         group        haproxy

        maxconn         32000

        spread-checks           4

        tune.maxaccept          8

        tune.maxpollevents      100

 

 

defaults

        mode    tcp

         retries 2                          #尝试2次失败则从集群摘除

         option redispatch              #如果失效则强制转换其他服务器

         option abortonclose           #连接数过大自动关闭

         maxconn 32000                  #最大连接数

         timeout connect 1d           #连接超时时间,重要,hive查询数据能返回结果的保证

         timeout client 1d               #同上

         timeout server 1d              #同上

         timeout check 2000           #健康检查时间

 

 

listen  admin_stats

         bind 0.0.0.0:80

        mode http

        stats enable

        stats hide-version

        stats uri /haproxy-stats

        stats realm Haproxy\ statistics

        stats auth admin:admin

        stats refresh 3s

         stats admin if TRUE

 

listen sshd

         bind 0.0.0.0:2022

         mode tcp

         balance leastconn   #最小连接数

         maxconn 32000

         server server1 192.168.14.51:22 check inter 50000 rise 1 fall 2 #释义:server 主机代名(你自己能看懂就行)IP:端口 180000毫秒检查一次。也就是三分钟

         server server2 192.168.14.52:22 check inter 50000 rise 1 fall 2

 

ssh –p 2022 //就会连接到后端,可以支持长连接!

 

 

()性能

根据官方测试可以达到千万级并发,可以跑满10G的网卡,详见:

 

 

() haproxyLVS比较

来源于互连网

LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability),感谢章文嵩博士为我们提供如此强大实用的开源软件。
LVS
的特点是:
1
、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;
2
、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
3
、工作稳定,自身有完整的双机热备方案,如LVS+KeepalivedLVS+Heartbeat,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived
4
、无流量,保证了均衡器IO的性能不会收到大流量的影响;
5
、应用范围比较广,可以对所有应用做负载均衡;

6、软件本身不支持正则处理,不能做动静分离,这个就比较遗憾了;其实现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
7
、如果是网站应用比较庞大的话,实施LVS/DR+Keepalived起来就比较复杂了,特别后面有Windows Server应用的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了

 

HAProxy的特点是:
1
HAProxy是支持虚拟主机的,以前有朋友说这个不支持虚拟主机,我这里特此更正一下。
2
、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3
、支持url 7层检测后端的服务器出问题的检测会有很好的帮助。
4
、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
5
HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS,所以我向大家推荐LVS+Keepalived
6
HAProxy的算法现在也越来越多了。

 

5、  监控

Haproxycactinagios下面的监控插件,可以方面监控haproxy的状态,而且自带的监控界面也非常人性化!

 

阅读(1309) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~