1.ha proxy简介
ha proxy是一个开源的,高性能的,基于tcp第四层和http第七层应用的负载均衡软件
优点:可靠性和稳定性非常好
          最高可以同时维护40000-50000个并发连接。单位时间内处理最大的请求数为20000.最大数据处理能力可达10GBPS
          支持多于8种负载均衡算法,同时也支持session保持
          支持虚拟主机功能。
          支持连接拒绝,全透明代理等功能
          ha proxy拥有一个功能强大的服务器状态监控页面
          haproxy 拥有强大的ACL支持
在业务系统方面。haproxy非常实用于那些并发量特别大而且需要持久连接或四层和七层处理机制的web系统,例如电商,另外haproxy也可用于mysql数据库(读操作)的负载均衡

haproxy的安装:

tar zxxvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
make TARGET=linux26 PREFIX=/usr/local/haproxxy
make install PREFIX=/usr/local/haproxy
mkdir /usr/local/haproxy/conf #创建配置文件目录
cp examples/haproxy.cfg /usr/local/haproxy/conf/

haproxy详解:

haproxy基础配置文件详解
整体分为五部分:global(用来设定全局配置参数),defaults部分(默认参数的配置部分),frontend(用于设置用户请求的前端虚拟节点),backend(用于设置集群后端服务集群的配置,也就是用来添加一组真实服务器以处理前段请求),listen(frontend和backend的结合体)
global
        log 127.0.0.1   local1 notice 
        maxconn 4096
        chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
                nbproc 1
                pidfile /usr/local/haproxy/logs/haproxy.pid
local1是日志设备,notice是日志等级,
daemon设置haproxy进入后台运行
nbproc设置haproxy启动时可创建的进程数
maxconn设置haproxy进程接受的最大并发连接数,此选项等同于“ulimit -n”

defaults
        mode    http
        retries 3
                timeout connect 10s        #连接到一台服务器的最长等待时间
                timeout        client 20s                #连接客户端发送数据最长等待时间
                timeout        server 30s        #服务器回应客户端发送数据最长等待时间
                timeout         check 5s                #对后端服务器的检测超时时间
mode:设置haproxy实例默认的运行模式,有tcp,http,health是哪个模式
tcp模式:客户端和服务端之间将建立一个全双工连接,不对七层报文做任何检查,默认为tcp模式,经常用于ssl,ssh,smtp等应用
http模式:客户端请求在转发至后端服务器之前将会深度分析,所有与RFC格式不兼容的请求都会被拒绝
retries:设置连接后端服务器的失败重试次数

Haproxy配置文件详解_服务器应用_Linux公社-Linux系统门户网站
http://www.linuxidc.com/Linux/2012-07/65350.htm###

Ha proxy日志策略
vim /etc/rsyslog.d/haproxy.conf
$ModLoad        imudp
$UDPServerRun   514
local3.*        /usr/local/haproxy/logs/haproxy.log
local0.*        /usr/local/haproxy/logs/haproxy.log
vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-c 2 -r -m 0"   #-r表示接受远程日志
service rsyslog restart

通过haproxy acl规则实现智能负载均衡
功能:通过设置acl规则检查客户端请求是否合法,如果合法,放心。如果不合法,拒绝。
符合acl规则要求的请求将被提交到后端的backend服务器集群,进而实现基于acl规则的负载均衡
acl规则经常使用在frontend字段中
acl  名称 acl方法 -i 匹配的路径或者文件
acl方法:hdr_reg(host),hdr_dom(host),hdr_beg(host),url_sub,url_dir,path_beg,path_end等

基于虚拟主机的haproxy负载均衡系统配置实例
1.通过acl规则配置虚拟主机
环境:
haproxy(负载均衡调度器):192.168.32.130
电商服务器集群:192.168.32.129(www1)域名www.test.com
                                192.168.32.202 (www2)  域名www.test.com
client(客户端):192.168.32.133

haproxy配置示例:

global
log 127.0.0.1 local0
maxconn 32768
chroot /usr/local/haproxy
uid haproxy
gid haproxy
daemon
nbproc 8
pidfile /var/run/haproxy.pid
spread-checks 4 defaults
log global
mode http
retries 3
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
option abortonclose
log 127.0.0.1 local3
balance roundrobin
maxconn 20480
contimeout 5000
clitimeout 50000
srvtimeout 50000
timeout check 2000 stats enable
stats admin if TRUE
stats refresh 30s
stats uri /server_health_status
stats realm Haproxy\ statistics
stats hide-version
stats auth admin:admin2590159HAHA frontend MY_PROXY_SERVER
bind 0.0.0.0:80
appsession JSESSIONID len 52 timeout 3h
cookie SRV insert indirect nocache
mode http
log global capture request header Host len 40
capture request header Content-Length len 10
capture request header Referer len 200
capture response header Server len 40
capture response header Content-Length len 10
capture response header Cache-Control len 8 acl WEB_SERVER_POLICY1 hdr_dom(host) -i mytest.qq.com
use_backend BEHIND_APACHE_SERVER1 if WEB_SERVER_POLICY1 acl SITE_DEAD nbsrv(BEHIND_APACHE_SERVER1) lt 1
acl SITE_DEAD nbsrv(BEHIND_APACHE_SERVER2) lt 1
monitor fail if SITE_DEAD default_backend BEHIND_APACHE_SERVER1 backend BEHIND_APACHE_SERVER1
mode http
balance roundrobin
cookie SERVERID
option httpchk HEAD /index.html HTTP/1.0
server WEBSRV1 192.168.1.101:80 maxconn 1500 cookie SRV1 check inter 2000 rise 2 fall 3 weight 1
server WEBSRV2 192.168.1.102:80 maxconn 1500 cookie SRV2 check inter 2000 rise 2 fall 3 weight 1 backend BEHIND_APACHE_SERVER2
mode http
balance roundrobin
cookie SERVERID
option httpchk HEAD /index.html HTTP/1.0
server WEBSRV1 192.168.1.201:80 maxconn 1500 cookie SRV1 check inter 2000 rise 2 fall 3 weight 1
server WEBSRV2 192.168.1.202:80 maxconn 1500 cookie SRV2 check inter 2000 rise 2 fall 3 weight 1
server WEBSRV3 192.168.1.203:80 maxconn 1500 cookie SRV3 check inter 2000 rise 2 fall 3 weight 1

示例2

global           #全局设置
log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过local0输出
#log loghost local0 info
maxconn 4096 #最大连接数
chroot /usr/local/haproxy
uid 99 #所属运行的用户uid
gid 99 #所属运行的用户组
daemon #以后台形式运行haproxy
nbproc 2 #启动2个haproxy实例
pidfile /usr/local/haproxy/haproxy.pid #将所有进程写入pid文件
#debug
#quiet defaults #默认设置
#log global
log 127.0.0.1 local3 #日志文件的输出定向
mode http #所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
option httplog #日志类别,采用httplog
option dontlognull
option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
retries 3 #3次连接失败就认为服务器不可用,主要通过后面的check检查
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
maxconn 2000 #最大连接数
stats uri /haproxy-admin #haproxy 监控页面的访问地址
contimeout 5000 #连接超时时间
clitimeout 50000 #客户端连接超时时间
srvtimeout 50000 #服务器端连接超时时间
stats auth Frank:Frank #设置监控页面的用户和密码:Frank stats hide-version #隐藏统计页面的HAproxy版本信息 frontend http-in #前台
bind *:80
mode http
option httplog
log global
default_backend htmpool #静态服务器池 backend htmpool #后台
balance leastconn#负载均衡算法
option httpchk HEAD /index.htm HTTP/1.0 #健康检查
server web1 10.16.0.9:8085 cookie 1 weight 5 check inter 2000 rise 2 fall 3
server web2 10.16.0.10:8085 cookie 2 weight 3 check inter 2000 rise 2 fall 3

  测试haproxy的时候我并没有加上日志功能,不过为了完整一些,加上说明,有空测试:

  # vim /etc/syslog.conf

  在最下边增加
  local3.*         /var/log/haproxy.log
  local0.*         /var/log/haproxy.log

  这样安装完就可以用了,启动命令:

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf  

  如果启动时提示错误:[ALERT] 139/152130 (21163) : Starting proxy web_proxy: cannot bind socket

  则意为80端口被占用,关闭占用80端口的服务即可。

  访问目录根据配置的目录:

  我这里的访问目录是:192.168.162.2/haproxy-admin,没有账号密码,可以看到:

   参考文章:http://sofar.blog.51cto.com/353572/1291013/

        http://bbs.linuxtone.org/thread-27285-1-1.html

Haproxy的安装和配置示例的更多相关文章

  1. 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置

    本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...

  2. HAproxy的安装与配置讲解

    1,安装 官网下载 http://www.haproxy.org/#down cd /usr/local/src/ wget http://www.haproxy.org/download/1.4/s ...

  3. 烂泥:高负载均衡学习haproxy之安装与配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...

  4. Haproxy的安装与配置

    一.Haproxy概念 Haproxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.Haproxy特别适用于那些负载特大的web站点,这 ...

  5. Keepalived + HAProxy 搭建【第一篇】HAProxy 的安装和配置

    第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. 安装包 haproxy-1.7.2.tar.gz 第二步:安装 # tar zxvf haproxy ...

  6. Keepalived + HAProxy 搭建【第一篇】HAProxy 的安装与配置

    第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. 安装包 haproxy-1.7.2.tar.gz 第二步:安装 # tar zxvf haproxy ...

  7. haproxy笔记之五:一个配置示例

    #--------------------------------------------------------------------- # Global settings #---------- ...

  8. 高负载均衡学习haproxy之安装与配置

    https://www.cnblogs.com/ilanni/p/4750081.html

  9. Keepalived + HAProxy 搭建【第二篇】Keepalived 安装与配置

    第一步:准备 1. 简介 本文搭建的是利用 Keepalived 实现 HAProxy 的热备方案,即两台主机上的 HAProxy 实例同时运行,其中全总较高的实例为 MASTER,MASTER出现异 ...

随机推荐

  1. Ubuntu ctrl+alt+b快捷键冲突

    安装了搜狗拼音后,其快捷键ctrl+alt+b会启动软键盘,造成与其他编辑器快捷键的冲突. 为了禁止使用ctrl+alt+b启动软键盘,可以: 1. 在搜狗拼音输入法选择设置 2. 高级设置 3. 高 ...

  2. DD应用实例

    1.将本地的/dev/hdb整盘备份到/dev/hdd dd if=/dev/hdb of=/dev/hdd2.将/dev/hdb全盘数据备份到指定路径的image文件dd if=/dev/hdb o ...

  3. 禁止使用test类的就是禁止使用本来的$this对象.可以调用父类的对象

    public function __construct() { parent::__construct( ); parent::__construct( ); if(!APP_DEBUG ) die( ...

  4. ev=ev || window.event 与 ev = window.event || ev 区别

    event是事件对象(也是window的属性),但不是标准的,只有IE支持.在W3C标准支持的浏览器下事件对象是引发事件函数的第一个参数,参数名随意.var oEvent = ev || event; ...

  5. 大数据阶乘(The factorial of large data)

    题目描述 Description 阶乘是计算中的基础运算,虽然规则简单,但是位数太多了,也难免会出错.现在的问题是:给定任意位数(long long类型)的一个数,求它的阶乘,请给出正确结果.为提高速 ...

  6. Github 修正上传时“this exceeds GitHub’s file size limit of 100 MB”错误

    自己的项目的版本控制用的是Git,代码仓库在github托管.项目里用到了IJKMediaFramework 想把代码push到github上,结果出错了,被拒绝,具体信息是: Total 324 ( ...

  7. Hadoop作业优化

    mapper数量 reduce数量 combiner 中间值压缩 自定义序列 调整shuffle,减少溢出写 关闭推测执行 任务JVM重用 慢启动reduce

  8. Python基础(四)-集合

    补充: 数据类型分类: 1.按照数据可变不可变: 可变:列表.字典 不可变:数字.字符串.元组 x={':1} print(id(x)) x.update({':2}) print(x) print( ...

  9. HTTP基础知识

    HTTP是计算机通过网络进行通信的规则,是一种无状态的协议,不建立持久的连接(客户端向服务器发送请求,web服务器返回响应,接着连接就被关闭了): 一个完整的HTTP请求连接,通常有下面7个步骤: 1 ...

  10. windows禅道环境搭建

    zentao官网的几个网址 http://www.zentao.net/ http://www.zentao.net/article-view-79863.html   搭建环境需要下载两个文件 1) ...