Haproxy安装配置及日志输出问题

简介:
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。    
HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAproxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。

特点:
haproxy支持四七层,而LVS是四层应用,nginx是七层应用

支持双机热备,高可用,负载均衡、虚拟主机,应用代理、

基于TCP和HTTP的 图形界面查看信息

服务器节点健康检查功能

一般是lvs在前面做4层,haproxy在后面做七层。

HAproxy配置文件可以分为五部分:


1

2

3

global:    全局配置参数段,主要用来控制Haproxy启动前的进程及系统相关设置

defaults:  配置一些默认参数,如果frontend,backend,listen等段未设置则使用defaults段设置


1

listen: <br>frontend:  用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理 <br>backend:  定义后端服务器集群,以及对后端服务器的一些权重、队列、连接数等选项的设置  

1.安装


1

2

3

4

5

6

7

8

9

wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz

tar zcvf haproxy-1.3.20.tar.gz

cd haproxy-1.3.20

make TARGET=linux26 PREFIX=/usr/local/haproxy          

make install PREFIX=/usr/local/haproxy

(注意,TARGET后面根据本机操作系统内核版本来填写,PREFIX是要安装到的目录)

net.ipv4.ip_forward = 1 #基于NAT模式的负载均衡器都要打开系统转发功能。

sysctl -p  #使修改生效

2.配置
安装完毕后,进入安装目录配置文件,默认情况下目录里是没有.cfg配置文件的,可以回到安装文件目录下将examples下的haproxy.cfg拷贝到usr/local/haproxy下。

cd /usr/local/haproxy
vi 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

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

根据实际需求,更改配置文件,我的配置如下

        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                        #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK

       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 /stats                    #haproxy 监控页面的访问地址

                                         浏览器中输入haproxy监控地址:http://10.10.100.39/stats查看状态

       contimeout      5000                #连接超时时间

       clitimeout      50000               #客户端连接超时时间

       srvtimeout      50000               #服务器端连接超时时间

      stats auth  admin:admin              #设置监控页面的用户和密码:Frank

      stats hide-version                   #隐藏统计页面的HAproxy版本信息

frontend http-in                            #前台

       bind *:80

       mode    http

       option  httplog

       log     global

      

       acl web1 hdr(host) -i www.9888.cn 9888.cn

      #acl后面是规则名称,-i是要访问的域名,如果访问www.9888.cn 这个域名就分发到下面的webserver1 的作用域。

      

        use_backend webserver1 if web1

      

backend webserver1                                #后台

     mode http

     balance   roundrobin                         #负载均衡算法

     option  httpchk /index.html                  #健康检查

     server     web01 10.10.100.41:80  check cookie 1 inter 2000 fall 3 weight 30

     server     web02 10.10.100.18:80  check cookie 2 inter 2000 fall 3 weight 30

  #cookie 1表示serverid为1,check inter 1500 是检测心跳频率

  #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重.           

启动haproxy:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg  

实现haproxy301域名跳转:


1

redirect prefix http://oldboy.blog.51.com code 301 if www.9888.cn #当访问www.9888.cn时跳转至http://oldboy.blog.51.com

实现haproxy基于URL地址目录做7层跳转
比如根据目录进行过滤转发:


1

2

3

4

5

acl oldboy_java path_beg /java/

acl oldboy_php path_beg /php/

    

use_backend webserver if oldboy_java         #如果是java就找webserver这个池    

use_backend webserver if oldboy_php

实现haproxy基于扩展名做7层跳转:


1

2

acl oldboy_pic path_end .gif .png .jpg .css .js

use_backend nginxpools if olboy_static or oldboy_pic

实现haproxy基于user_agent做7层跳转


1

2

3

4

5

6

7

acl iphone_users hdr_sub(user-agent) -i iphone

redirect prefix http://www.51cto.com if iphone users  

acl android_users hdr_sub(user-agent) -i android

redirect prefix http://www.baidu.com if android_users

实现haproxy基于ip和端口过滤


1

2

3

acl valid_ip src 192.168.1.0/24

block if !valid_ip  #如果不符合valid_ip的规则就block拒绝掉

让haproxy错误页面优雅的显示


1

errorfile 403 /tec/haproxy/errorfiles/403forbild.html

基于HTTP的直接IP URL方式的健康检查:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

1.>第一种HEAD配置方法

    option httpchk HEAD /check.html HTTP/1.0

    这种检测方式就相当于通过curl -i http://127.0.0.1/check.html

    或者 wget http://127.0.0.1/check.html访问地址。

    **check.html文件必须在网站根目录下创建

    

    健康检查的频率、时间等参数:

    

    maxconn 控制节点的并发连接的

    weight 12 权重,权重越大,请求越多

    

2.>第二种GET配置方式

GET后端server的web页面

option httpchk GET /index.html HTTP/1.0

backup 和allbackups参数:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

server      web1 10.10.100.66:80  check inter 2000 fall 3 weight 30

server      web2 10.10.100.67:80  check inter 2000 fall 3 weight 30

server      web3 10.10.100.68:80  check inter 2000 fall 3 weight 30 backup 

当web1和web2服务停止后,web3再提供服务,这样可以达到高可用的目的

option allbackups

server      web1 10.10.100.66:80  check inter 2000 fall 3 weight 30

server      web2 10.10.100.67:80  check inter 2000 fall 3 weight 30

server      web3 10.10.100.68:80  check inter 2000 fall 3 weight 30 backup

server      web4 10.10.100.69:80  check inter 2000 fall 3 weight 30 backup

加上 option allbackups后,当web1和web2挂掉后,web3和web4都启动起来提供服务,不加allbackups则只有一台提供服务.

haproxy下的RS无法记录客户端真实ip的问题


1

2

3

4

5

6

7

在haproxy配置文件里加入如下参数:

listen www

        option forwardfor 

        提示:参数最好放在listen www里面

        然后在nginx日志格式中加"$http_x_forwarded_for" 

###################################################################################

关于haproxy日志输出的问题:
CentoS6.5下HAProxy日志配置详解:


1

2

3

4

5

6

7

8

9

10

11

syslog这个服务,在Centos5.x中的目录为:/etc/init.d/syslog

而到了Centos6.x中变成了:/etc/init.d/rsyslog

在配置前,我们先来了解下日志的level: local0~local7 1623保留为本地使用

emerg 0       系统不可用

alert 1       必须马上采取行动的事件

crit 2        关键的事件

err 3        错误事件

warning 4      警告事件

notice 5      普通但重要的事件

info 6       有用的信息

debug 7      调试信息

vim haproxy.conf(在default处添加如下信息)


1

2

3

4

5

6

########################################

defaults

log global

option httplog

log 127.0.0.1 local3

########################################

vim /etc/rsyslog.conf(添加如下内容)


1

local3.*    /var/log/haproxy.log

vim /etc/sysconfig/rsyslog


1

2

把SYSLOGD_OPTIONS="-m 0"

改成 SYSLOGD_OPTIONS="-r -m 0"

相关解释说明:
-r:   打开接受外来日志消息的功能,其监控514 UDP端口;
-x:   关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m:  修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息;
-h:   默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去.  

配置完毕后关闭sellinux然后重启rsyslog和haproxy 即可.


1

/etc/init.d/rsyslog restart

  

haproxy实现负载均衡的方式:

haproxy + heartbeat

haproxy + keepalive

原文地址:https://www.cnblogs.com/liqing1009/p/10246337.html

时间: 2024-11-08 18:29:12

Haproxy安装配置及日志输出问题的相关文章

负载均衡-haproxy安装配置

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

haproxy 安装配置

yum install -y haproxy 生成配置文件位置 /etc/haproxy/haproxy.cfg ########################启用日志###################### vim /etc/rsyslog.conf #由于haproxy的日志是用udp传输的,所以要启用rsyslog的udp监听 # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 #启用级别为local2的设

haproxy安装配置

1.安装 wget http://download.chinaunix.net/download.php?id=25784&ResourceID=12508 tar -zxvf haproxy-1.3.15.10.tar.gz cd haproxy-1.3.15.10 make TARGET=linux26 PREFIX=/usr/local/haproxy  (#将haproxy安装到/usr/local/haproxy) make install PREFIX=/usr/local/hapr

haproxy 安装配置及说明

一.haproxy 说明 二.haproxy 连接模式说明 三.haproxy 调度方法说明 四.hash-type 说明 五.架构说明 六.基本安装及配置说明(roundrobin调度) 七.URI调度测试 八.HDR调度测试 九.基于cookie的session绑定测试 十.状态页面测试 (参数说明来自官网,如有出入,以官网为主) 一.HAProxy说明 (1)HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费.快速并

nginx awstats 安装配置和日志分析

1.Nginx安装目录:/usr/local/nginx Nginx配置文件存放目录:/usr/local/nginx/conf/nginx.conf Nginx日志目录:/usr/local/nginx/logs Awstats安装目录:/usr/local/awstats Awstats配置文件存放目录:/etc/awstats 日志切割脚本存放目录:/usr/local/nginx/nginx_log.sh 2.Nginx日志切割 修改nginx.conf配置文件,使AWSTATS支持分析

Haproxy 安装配置详解-端口映射

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

Haproxy安装配置(二)

1.yum安装yum install net-tools vim tree screen lsof tcpdump nc mtr nmap gcc glibc gcc-c++ make haproxy keepalived nginx 2.haproxy.cfg配置文件globalmaxconn 100000chroot /var/lib/haproxyuser haproxygroup haproxydaemonnbproc 1pidfile /var/run/haproxy.pidlog 1

monkey 安装 - 使用 - 回归 - 日志输出 -排查

monkey的简单介绍 Monkey测试是Android app自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入等,看设备是否出异常. 当Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机事件,所以可以用Monkey用随机重复的方法去测试app. 一:前提:电脑已经安装AndroidSDK 1.设安装包: xxx.apk ,包名为:com.xxx_xxx 2.把安装包放在:C:\monkey

haproxy 安装与配置以及遇到的问题

1,安装配置过程:两台haproxy安装配置过程一样 #cd /usr/local/src #wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz #tar xf haproxy-1.4.24.tar.gz #cd haproxy-1.4.24 #make TARGET=linux26 ARCH=x86_64 #TARGET是指定内核版本,ARCH指定CPU架构,我使用的是64bit系统 #make install 2