haproxy由浅入深
1. Haproxy介绍
1. 开源的,高性能的基于TCP和HTTP应用代理的高可用的,负载均衡服务器软件,它支持双机热备,高可用,负载均衡,虚拟主机。
2. 有图形界面可以观看状态信息。
3. 配置简单,方便,拥有很好的服务器节点的健康检查功能。
4. 适用于高负载,访问量很大的业务应用。
5. 官网:https://www.haproxy.org/
2. Haproxy4层应用架构
1. 四层tcp应用程序代理比lvs和nginx简单
2. 与商业的NS,FS,A10等负载均衡硬件的使用方法一样
3. Haproxy7层应用架构
1. 前面用一个LVS或者F5做四层代理,后面用haproxy做7层代理。
4. Haproxy生产环境实战模拟准备
1. 准备两台服务器,分别有两块网卡,一个用来外网传数据,一个是内网传数据。
5. Haproxy实际安装过程
1. 官方下载: https://www.haproxy.org/download/1.9/src/haproxy-1.9.4.tar.gz
wget --no-check-certificate https://www.haproxy.org/download/1.9/src/haproxy-1.9.4.tar.gz
2. 解压 tar -zxvf haproxy-1.9.4.tar.gz
3. cd haproxy-1.9.4
4. make TARGET=linux2628 ARCH=x86_64 配置一些编译参数 64位
make TARGET=linux2628 ARCH=i386 32位
5. make PREFIX=/usr/local/haproxy-1.9.4 install 安装
6. ln -s /usr/local/haproxy-1.9.4/ /usr/local/haproxy 创建一个软链接
6. 配置Haproxy内核参数
1, 修改/etc/sysctl.conf文件
net.ipv4.ip_forward = 1,默认为0,修改为1。
7. 调整haproxy目录规范及讲解配置文件框架
1. 创建一些目录
mkdir -p logs conf bin var/run var/chroot
2. haproxy配置文件
分为五个部分
global:全局配置参数段,主要控制haproxy启动前的进程及系统相关设置
defaults:配置一些默认参数,如果下面三个参数没有设置,则使用defaults段配置
listen:
frontend:用来匹配客户端所请求的域名,url等,并针对不同的匹配,做不同的请求处理。
backend:定义后端服务器集群,以及对后端服务器的一些权重,队列,连接数等选项的设置。
8. haproxy的常用配置参数详解
1. global
chroot
daemon
group haproxy
user haproxy
log
pidfile
maxconn 定义每个haproxy进程的最大连接数
nbproc 设置haproxy启动的进程数
2. default
log
mode
contimeout 连接超时
clitimeout
3. listen www 10.0.0.7:80
mode http
balance roundrobin
option forwardfor
server www01 ip:port check
server www02 ip:port check
9. 实战配置haproxy tcp模式负载均衡并测试
1. 配置文件内容
global
daemon
maxconn 20000
group haproxy
user haproxy
log 127.0.0.1:514 local0 info
defaults
log global
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
option dontlognull
listen oldboytest
bind 172.168.1.209:88
#stats enable
#stats uri /admin
#stats auth admin:1234
server test1 172.168.1.208:22 check port 22 inter 1500 rise 3 fall 3 weight 2
server test2 172.168.1.207:28 check port 28 inter 1500 rise 3 fall 3 weight 2
listen admin_stats
bind 172.168.1.209:89
mode http
stats enable
stats uri /admin
stats auth admin:1234
2. 启动haproxy
sbin/haproxy -f 配置文件路径 -c 检查语法
sbin/haproxy -f 配置文件路径
3. 创建haproxy用户
useradd haproxy -s /sbin/nologin
10. 开发启动haproxy脚本
1.
11. Haproxy日志配置
1. 修改/etc/rsyslog.conf配置文件
cat >>/etc/rsyslog.conf<<EOF #Haproxy local0.* /usr/local/haproxy/logs/haproxy.log #end /etc/rsyslog.conf EOF
2. 修改/etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-c 2 -m 0 -r -x"
3. 重启rsyslog
/etc/init.d/rsyslog restart
4. rsyslog默认启动没有端口
5. 修改配置文件/etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
默认是屏蔽的,要放开.
6. 重启一下rsyslog服务。
/etc/init.d/rsyslog restart
12. 实战配置haproxy http模式负载均衡
global
daemon
maxconn 20000
group haproxy
user haproxy
log 127.0.0.1:514 local0 info
defaults
log global
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
option dontlognull
listen oldboytest
bind 172.168.1.209:88
#stats enable
#stats uri /admin
#stats auth admin:1234
server test1 172.168.1.208:22 check port 22 inter 1500 rise 3 fall 3 weight 2
server test2 172.168.1.207:28 check port 28 inter 1500 rise 3 fall 3 weight 2
listen admin_stats
bind 172.168.1.209:89
mode http
stats enable
stats uri /admin
stats auth admin:1234
listen chandao
bind 172.168.1.209:90
balance roundrobin
mode http
server test1 172.168.1.208:80 check port 80 inter 1500 rise 3 fall 3 weight 2
server test2 172.168.1.207:80 check port 80 inter 1500 rise 3 fall 3 weight 2
查看监控地址: http://172.168.1.209:89/admin 账号admin 密码1234
13. 基于TCP端口的健康检查
1. check port 80 对80端口进行检查
2. inter 1500 fall 5 表示每5秒检查一次,一共检查5次。如果有问题就摘除这台服务器。
如果不加inter 1500 fall 5 默认每2秒检查一次,一共检查3次。
3. rise 恢复之前,检查2次,认为没问题了,就加入到集群中。
14. 基于HTTP的URL方式检查
1. 第一种HEAD配置方法
写法:option httpchk HEAD /check.html HTTP/1.0
这种检测方式相当于curl -I http://10.0.0.8/check.html。或者wget http://10.0.0.8/check.html。
在haproxy的配置文件中,添加一行内容:option httpchk HEAD /check.html HTTP/1.0
结论:haproxy检查check.html文件是否能够访问,如果访问不了,即使80端口,能通,后端服务器还是报警。
2. 另外还有两个参数
maxconn 2048 服务器承受的最大连接数
weight 20 服务器权重
3. 第二种GET配置方法
写法:option httpchk GET /check.txt
4. 第三种配置方法
写法:option httpchk /
5. httpchk的文档
/usr/local/haproxy/doc/haproxy/configuration.txt
15. 基于域名的URL健康检查
1.

浙公网安备 33010602011771号