HAProxy初步使用
简介
HAProxy提供负载均衡,以及基于tcp和http应用的代理.它是一种快速,免费,且可靠的解决方案
HAProxy的性能及稳定性虽不及lvs,不过在功能上却要优于lvs很多.HAProxy和lvs均可配合keepalived实现高可用
安装
在centos7上,HAProxy可以用yum安装和源码包安装两种方式
#yum安装方式
]# yum install haproxy
#源码包安装方式
]# wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.5.tar.gz
]# tar -zxvf haproxy-1.8.5.tar.gz
]# cd haproxy-1.8.5/
]# ./configure --prefix=/usr/share/haproxy
]# make && make install
配置
haproxy的主配置文件是/etc/haproxy/haproxy.cfg.其中包括global全局配置段和proxy相关配置段,如”defaults”,”listen”,”frontend”,”backend”
]# cat /etc/haproxy/haproxy.cfg
global//全局配置
log 127.0.0.1 local2 //日志存放方式,需调用日志软件如rsyslog
chroot /var/lib/haproxy //haproxy的工作目录,可以提升haproxy的安全级别,必须要求空目录且任何用户不能有写权限
pidfile /var/run/haproxy.pid //指定运行时pid文件
maxconn 4000 //最大连接数,默认4000,若不够可增大
user haproxy
group haproxy
daemon //以守护进程方式运行,若不指定则在前端显式运行
stats socket /var/lib/haproxy/stats //套接字文件
defaults //为所有其他配置段提供默认参数
mode http //设定实例的运行模式或协议,可选tcp
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 //设定一个前端的最大并发连接数
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets //定义acl,名称为url_static,规则为uri的首部,忽略大小写,匹配/static...
acl url_static path_end -i .jpg .gif .png .css .js //定义acl,名称为url_static,规则为ui的尾部,忽略大小写,匹配.jpg...
use_backend static if url_static //如果匹配url_static,则使用static后端服务器
default_backend app //默认使用app后端服务器
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin //定义调度方式为轮询
server static 127.0.0.1:4331 check //定义后端服务器,名称为static,启用健康状态检测
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
实验
现对haproxy进行最简单的使用,使用haproxy负载均衡后端的两台web服务器
环境
node1:192.168.10.201,调度器
node2:192.168.10.203,web服务器1
node3:192.168.10.204,web服务器2
在node1上安装haproxy,node2和node3上安装httpd配置
修改node1上haproxy的配置文件(只需修改frontend,backend,并删除listen即可)]# vim /etc/haproxy/haproxy.cfg frontend main *:80 default_backend webservers backend webservers balance roundrobin server web1 192.168.10.203:80 check server web2 192.168.10.204:80 check
现象
]# curl 192.168.10.201 welcome to web1 ]# curl 192.168.10.201 welcome to web2 ]# curl 192.168.10.201 welcome to web1 ]# curl 192.168.10.201 welcome to web2
话外
HAProxy的官网网站是http://www.haproxy.org/,不过国内似乎进不去?
若想查看HAProxy的详细配置介绍,可以访问官方文档http://cbonte.github.io/haproxy-dconv