配置HAProxy实现负载均衡
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置HAProxy实现负载均衡相关的知识,希望对你有一定的参考价值。
一、haproxy介绍HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
haproxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen。
二、安装haproxy
去haproxy下载源码包上传到服务器或者wget
然后解压
[[email protected] yasuobao]# tar -zxvf haproxy-2.0.1.tar.gz
[[email protected] yasuobao]# cd haproxy-2.0.1
编译[[email protected] yasuobao]# make TARGET=linux31
这里TARGET参数视centos版本而定,uname -r查看系统版本centos6.X需要使用TARGET=linux26 centos7.x使用linux31
安装
[[email protected] yasuobao]# make install PREFIX=/usr/local/haproxy
创建conf目录[[email protected] yasuobao]# mkdir /usr/local/haproxy/conf
复制文件
[[email protected] yasuobao]# cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg
[[email protected] yasuobao]# cd /usr/local/haproxy/conf
编辑配置文件
[[email protected] conf]# vim haproxy.cfg
字段含义如下
global # 全局参数的设置
log 127.0.0.1 local0 info # log语法:log <address_1>[max_level_1] # 全局的日志配置,使用log关键字,指定使用127.0.0.1上的syslog服务中的local0日志设备,记录日志等级为info的日志
maxconn 4096 #最大连接数
user nobody #所属用户
group nobody #所属组
daemon #以守护进程方式运行haproxy
nbproc 1 #指定启动的haproxy进程的个数,只能用于守护进程模式的haproxy,默认为1
pidfile /usr/local/haproxy/logs/haproxy.pid #指定pid文件生成目录
defaults
mode http #默认的模式mode tcp|http|health ,tcp是4层,http是7层,health只会返回OK
retries 3 # 定义连接后端服务器的失败重连次数,连接失败次数超过此值后将会将对应后端
timeout connect 10s #连接超时
timeout client 20s #客户端超时
timeout server 30s #服务器端超时
timeout check 5s #检测超时
frontend www
bind *:80 #监听地址为80
mode http
option httplog #启用记录HTTP请求、会话状态和计时器的功能
option forwardfor #允许在发往服务器的请求首部中插入“X-Forwarded-For”首部。
option httpclose #每次请求完毕后主动关闭http通道
log global #启用事件和流量日志
default_backend htmpool #默认后端
backend htmpool
mode http
option redispatch # 当使用了cookie时,haproxy将会将其请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持久性;而此时,如果后端的服 务器宕掉了, 但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端server上,以保证服务的正常。
option abortonclose #丢弃由于客户端等待时间过长而关闭连接但仍在haproxy等待队列中的请求
balance static-rr #负载均衡算法(#banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数)
cookie SERVERID #允许插入serverid到cookie中,serverid后面可以定义
option httpchk GET /index.html
server myslave02 172.18.74.87:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3 #cookie 1表示serverid 为1,check inter 1500 是检测心跳频率,rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重
server myslave 172.18.74.119:80 cookie 1 weight 3 check inter 2000 rise 2 fall 3
listen admin_stats
bind 0.0.0.0:9188 #监听端口
mode http
log 127.0.0.1 local0 err #全局的日志配置,local0 是日志设备,err 表示日志级别。其中日志级别有err、 warning、info、debug 四种可选。这个配置表示使用 127.0.0.1 上的 rsyslog 服务中的local0 日志设备,记录日志等级为err。
stats refresh 30s #统计页面自动刷新时间
stats uri /haproxy-status #统计页面url
stats realm welcome login\ Haproxy #统计页面密码框上提示文本
stats auth admin:admin123 #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息
stats admin if TRUE #通过设置此选项,可以在监控页面上手工启用或禁用后端真实服务器,仅在haproxy1.4.9 以后版本有效
启动haproxy
[[email protected] conf]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
然后在后端服务器编辑index.html
[[email protected] html]# cat index.html
this is 119 html
[[email protected] html]# cat index.html
this is 87 html
curl检查haproxy是否正常工作
浏览器访问172.18.74.59:9188/haproxy-status,用户名admin,密码admin123,登陆。可以看到haproxy的工作状态
以上是关于配置HAProxy实现负载均衡的主要内容,如果未能解决你的问题,请参考以下文章
用 Keepalived+HAProxy 实现高可用负载均衡的配置方法 | 运维进阶