标签:haproxy
安装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 #重启日志服务
本文出自 “自动化运维” 博客,请务必保留此出处http://hongchen99.blog.51cto.com/12534281/1920846
标签:haproxy
原文地址:http://hongchen99.blog.51cto.com/12534281/1920846