Haproxy安装部署
Haproxy 简介
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第
三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就
是开源的并且基于第三应用实现的软负载。
HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主
要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),
和7层(HTTP)。在4层模式下,HAproxy仅在客户端和服务器之间转发双向流
量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或
者删除请求(request)或者回应(response)里指定内容来控制协议,这种操作要基于特定
规则。
详情可以在HAProxy官方网站(http://haproxy.1wt.eu)可以下载配置说明文
档(configuration.txt)和架构文件(architecture.txt)作为参考。
安装部署Haproxy
1、到官方下载HAProxy软件包解压并编译安装
wget
tar -xzf haproxy-1.4.20.tar.gz
cd haproxy-1.4.20
make TARGET=linux26 PREFIX=/usr/local/haproxy install
安装完成后会在安装目录下生成doc ,sbin ,share三个文件夹。解压的源码文件也可以删除掉。
[root@LNMP_Server haproxy-1.4.20]# cd /usr/local/haproxy/
[root@LNMP_Server haproxy]# ls
docsbinshare
2、创建配置文件
cd /usr/local/haproxy
mkdir conf
cd conf
vi haproxy.cfg
global
user haproxy
group haproxy
chroot /usr/local/haproxy
quiet
nbproc 1
daemon
maxconn 65535
pidfile /usr/local/haproxy/haproxy.pid
defaults
log global
mode http
option httplog
option dontlognull
log 127.0.0.1 local3 info
log 127.0.0.1 local3 err
retries 3
option redispatch
stats enable
maxconn 65535
stats hide-version
stats uri /haproxy-stats
stats realm Haproxy\ statistics
stats auth haproxy:123456
stats refresh 30s
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend http-in
bind *:80
mode http
acl 192.168.3.123 hdr_reg(host) -i 192.168.3.123
use_backend web_test if 192.168.3.123
default_backend web_test
backend web_test
balance source
stats refresh 30s
option httpclose
option forwardfor
option httpchk GET /noc.gif HTTP/1.0
server webapp1 192.168.3.123:8080 weight 1 check inter 2000 rise 2 fall 3
server webapp2 192.168.3.123:8081 weight 1 check inter 2000 rise 2 fall 3
server webapp3 192.168.3.123:8082 weight 1 check inter 2000 rise 2 fall 3
3、修改haproxy属主属组权限
useradd haproxy -s /sbin/nologin -M
chown -R haproxy.haproxy /usr/local/haproxy/
4、启动haproxy
[root@LNMP_Server conf]# /usr/local/haproxy/sbin/haproxy-f /usr/local/haproxy/conf/haproxy.cfg
[root@LNMP_Server conf]# ps -ef |grep haproxy
haproxy430610 18:12 ?00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
root430835060 18:12 pts/000:00:00 grep haproxy
[root@LNMP_Server conf]# lsof -i:80
COMMANDPIDUSERFDTYPE DEVICE SIZE/OFF NODE NAME
haproxy 4306 haproxy4uIPv4192960t0TCP *:http (LISTEN)
5、配置日志
创建日志目录
mkdir /usr/local/haproxy/logs -p
修改操作系统的日志配置
HAProxy可以收集本机及其他后端服务器日志,但是需要在HAProxy和操作系统上作一些配置。
使用root账户首先修改/etc/sysconfig/syslog文件,将SYSLOGD_OPTIONS="-m 0”
修改为SYSLOGD_OPTIONS="-m 0 -r -x",支持收集远程服务器日志。
sed -i 's#SYSLOGD_OPTIONS=\"-m 0\"#SYSLOGD_OPTIONS=\"-m 0 -r -x\"#g' /etc/sysconfig/syslog
然后修改/etc/syslog.conf,增加如下语句:
Local3.* /usr/local/haproxy/logs/haproxy.log // haproxy.log地址代表了需要存储
日志的地址,其中local0这个级别要和haproxy.cfg配置的log级别一样
echo "local3.* /usr/local/haproxy/logs/haproxy.log" >>/etc/syslog.conf
执行
service syslog restart
重新启动系统日志器
访问查看haproxy的状态页面
Haproxy的三种算法
balance source
appsession JSESSIONID len 64 timeout 5h request-learn
cookieSESSION_COOKIEinsert indirect nocache
注:你可能看到上面的这个页面里面有报红,是因为haproxy会实时监测站点目录下的noc.gif 这个文件,如果没有就创建一个,
haproxy相关配置行
option httpchk GET /noc.gif HTTP/1.0