haproxy负载均衡

技术小牛人 2017-11-14

算法 监控 服务器 日志 LOG 配置 负载均衡 Server index WebServer cookie

安装haproxy:

ntpdate ntp1.aliyun.com #同步时间

tar zxvf haproxy-1.6.12.tar.gz -C /usr/src/ #解压

cd /usr/src/haproxy-1.6.12/

make TARGET=linux26 PREFIX=/usr/local/haproxy #安装,linux26内核版本2.6

make install PREFIX=/usr/local/haproxy #安装路径

环境配置:

mkdir /usr/local/haproxy/{etc,logs,run} #创建配置文件,日志文件,运行文件目录

cd examples/

cp haproxy.init /etc/init.d/haproxy #创建启动脚本

chmod 700 /etc/init.d/haproxy  #只有root用户对启动启动脚本有控制权限

cp -p /usr/local/haproxy/sbin/haproxy /usr/local/sbin/ #创建管理命令

chkconfig  --add haproxy #加入系统服务

chkconfig  haproxy on #开启运行级别

useradd -M -s /sbin/nologin haproxy #创建程序用户

cd /usr/local/haproxy/

touch etc/haproxy.cfg #创建配置文件


haproxy命令: 

-f 配置文件 #指定配置文件,不加子选项默认启动服务

-d #前台,debug模式

-D  #后台,daemon模式启动

-q  #安静模式,不输出信息

-V  #详细模式

-c #对配置文件进行语法检查

-s  #显示统计数据

-l  #显示详细统计数据

-de  #不使用epoll

-dp  #不使用poll

-db  #禁用后台模式,程序跑在前台

-st  #向pid文件发送TERMINATE信号,重启


haproxy -cf /usr/local/haproxy/etc/haproxy.cfg  #检查配置文件语法

haproxy -f /usr/local/haproxy/etc/haproxy.cfg #启动

haproxy -f /usr/local/haproxy/etc/haproxy.cfg -sf `cat /usr/local/haproxy/logs/haproxy.pid` #重启

killall -9 haproxy #停止服务

HAProxy的负载均衡算法:

1. roundrobin #轮询

2. static-rr #加权轮询

3. leastconn #最少连接数

4. source #相当于nginx的ip_hash

5. hdr(name) #根据HTTP请求头来锁定每一次HTTP请求

6. uri #根据请求的URI

7. url_param #根据请求的URl参数'balance url_param' requires an URL parameter name

8. rdp-cookie(name) #表示根据据cookie(name)锁定并哈希每一次TCP请求

haproxy的配置分为5个级别:

global:全局配置

Listen:Frontend和Backend的组合体

defaults:配置默认参数

frontend:前端响应配置

backend:后端服务器集群配置


配置文件详解(配置文件需要自己创建):

global #全局配置

log 127.0.0.1 local0  #日志输出配置,所有日志记录在本机,通过local0输出

log 127.0.0.1 local1 notice  #定义日志级别

daemon  #以后台形式运行

nbproc 4  #设置进程数量,更具cpu进行配置

maxconn 4096  #最大连接数,需考虑ulimit-n限制

user haproxy  #程序用户

group haproxy  #程序组

pidfile /usr/local/haproxy/run/haproxy.pid  #PID文件

ulimit-n 819200  #ulimit的数量限制,使用ulimit -n命令查看,centos默认为1024

#debug  #调试模式



defaults #默认配置

mode http  #默认的模式mode{tcp|http|health}

option httplog  #日志类别,采用httplog

option dontlognull  #不记录健康检查日志信息

retries 3 #3次连接失败就认为服务不可用,也可以通过后面进行配置 

option httpclose  #每次请求完毕后主动关闭http通道

option redispatch  #serverId对应的服务器挂掉后,强制定向到其他健康的服务器

option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接

option  forwardfor  #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得

maxconn 4096  #最大连接数

timeout connect 5000  #连接超时,默认单位毫秒

timeout client 300000   #客户端连接超时

timeout server 300000   #服务器连接超时

timeout check 2000  #心跳检测超时

timeout http-keep-alive 120s  #长连接超时时间

#timeout http-request 10s  #http请求超时时间

#timeout queue 1m  #默认队列超时时间

balance roundrobin  #负载均衡算法,轮询方式,算法同时只能起一个

#balance source  #类似于nginx的ip_hash

#balnace leastconn  #最小连接数



#listen  admin_status #监控组的名称,自定义名称

# bind 0.0.0.0:80      #监听端口   

# log 127.0.0.1 local0 err #日志级别

# stats refresh 30s           #监控页面刷新时间

# stats uri  /haproxy-stats   #监控页面url路径

# stats realm Haproxy-Linux #统计页面密码框上提示文本

# stats auth admin:admin      #设置监控页面的用户和密码,指令可以出现多次

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


#错误页面配置,安装目录中提供有模板文件

errorfile 403 /usr/src/haproxy-1.6.12/examples/errorfiles/403.http

errorfile 500 /usr/src/haproxy-1.6.12/examples/errorfiles/500.http

errorfile 502 /usr/src/haproxy-1.6.12/examples/errorfiles/502.http

errorfile 503 /usr/src/haproxy-1.6.12/examples/errorfiles/503.http

errorfile 504 /usr/src/haproxy-1.6.12/examples/errorfiles/504.http


frontend main #前端配置,自定义名称

mode http

log 127.0.0.1 local0 err #日志级别

bind *:80  #建议使用*:80的方式,否则做集群高可用的时候会有问题,vip切换到其他机器就不能访问了

acl web hdr(host) -i www.abc.com  #web是规则名称,-i为忽略大小写,后面是访问的域名,支持正则表达式

acl img hdr(host) -i img.abc.com  #如果访问img.abc.com这个域名,就触发img规则

use_backend webserver if web     #如果上面定义的web规则被触发,即访问www.abc.com,就将请求分发到webserver这个作用域

use_backend imgserver if img   

default_backend def   #如果没有匹配到


#backend后端配置

backend webserver  #webserver作用域

mode http

balance roundrobin  #使用轮询算法

option httpchk /index.html  #url健康检查, 如果不能访问index.html请求将不再分发给它

server web1 192.168.0.40:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3

server web2 192.168.0.60:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3

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

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


backend imgserver

mode http

option httpchk /index.html

balance roundrobin 

server img01 192.168.0.50:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3

server img02 192.168.0.70:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3


backend def

option httpchk /index.html

balance roundrobin 

server test 192.168.0.254:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3

定义日志:

vim /etc/sysconfig/rsyslog #编辑keepalived的环境配置文件

KEEPALIVED_OPTIONS="-D -d -S 0" #修改内容

#-d  导出配置数据

#-D  详细日志信息

#-S  设置本地的syslog设备,编号0-7

#-S 0  表示指定为local0设备

vim /etc/rsyslog.conf #修改系统日志配置

local0.* /usr/local/haproxy/logs/haproxy.log

#将haproxy产生的所有日志信息存到haproxy.log文件中

*.info;mail.none;authpriv.none;cron.none;local0.none       /var/log/messages

#haproxy产生的文件不记录到/var/log/messages文件中

service rsyslog restart #重启日志服务

本文转自  红尘世间  51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1920846

登录 后评论
下一篇
云栖号资讯小编
636人浏览
2020-03-31
相关推荐
HAProxy负载均衡代理
853人浏览
2017-11-27 15:12:00
入坑系列之HAProxy负载均衡
619人浏览
2017-03-13 08:41:00
0
0
0
705