centos7下haproxy1.7的使用与配置
centos7下haproxy1.7的使用与配置
haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
一、haproxy下载
http://www.haproxy.org/#down
如:haproxy-1.7.2.tar.gz
二、安装haproxy
查看内核版本
> uname -r
解压haproxy,并安装
> tar xf haproxy-1.7.2.tar.gz
> cd haproxy-1.7.2
> make TARGET=linux2628 PREFIX=/data/haproxy
> make install PREFIX=/data/haproxy
安装成功后,查看版本
> /data/haproxy/sbin/haproxy -v
复制haproxy文件到/usr/sbin下
因为下面的haproxy.init启动脚本默认会去/usr/sbin下找,当然你也可以修改,不过比较麻烦。
> cp /data/haproxy/sbin/haproxy /usr/sbin/
复制haproxy脚本,到/etc/init.d下
> cp ./examples/haproxy.init /etc/init.d/haproxy
> chmod 755 /etc/init.d/haproxy
我们可以查看一下这个haproxy.init文件
#$BASENAME默认就是haproxy
BASENAME=`basename $0`
if [ -L $0 ]; then
BASENAME=`find $0 -name $BASENAME -printf %l`
BASENAME=`basename $BASENAME`
fi #执行文件路径
BIN=/usr/sbin/$BASENAME
#配置文件路径
CFG=/etc/$BASENAME/$BASENAME.cfg
#pid文件路径
PIDFILE=/var/run/$BASENAME.pid
#锁文件路径
LOCKFILE=/var/lock/subsys/$BASENAME
创建系统账号
> useradd -r haproxy
创建配置文件
> mkdir /etc/haproxy
> vi /etc/haproxy/haproxy.cfg
#全局配置
global
#设置日志
log 127.0.0.1 local3 info
chroot /data/haproxy
#用户与用户组
user haproxy
group haproxy
#守护进程启动
daemon
#最大连接数
maxconn 4000 #默认配置
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000 #前端配置,http_front名称可自定义
frontend http_front
bind *:80
#haproxy的状态管理页面,通过/haproxy?stats来访问
stats uri /haproxy?stats
default_backend http_back #后端配置,http_back名称可自定义
backend http_back
#负载均衡方式
#source 根据请求源IP
#static-rr 根据权重
#leastconn 最少连接者先处理
#uri 根据请求的uri
#url_param 根据请求的url参数
#rdp-cookie 据据cookie(name)来锁定并哈希每一次请求
#hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
#roundrobin 轮询方式
balance roundrobin
#设置健康检查页面
option httpchk GET /index.html
#传递客户端真实IP
option forwardfor header X-Forwarded-For
# inter 2000 健康检查时间间隔2秒
# rise 3 检测多少次才认为是正常的
# fall 3 失败多少次才认为是不可用的
# weight 30 权重
server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30
打开rsyslog配置
> vi /etc/rsyslog.conf
去掉下面两行前面的#号
$ModLoad imudp
$UDPServerRun 514
并添加下面一行
local3.* /var/log/haproxy.log
重启rsyslog
> systemctl restart rsyslog
启动haproxy
> service haproxy start
三、haproxy的acl规则
frontend http_front
bind *:80
stats uri /haproxy?stats #创建一个acl,is_http_back2是acl的名称,可自定义,用于判断主机名是否为www.back2.com
acl is_http_back2 hdr_end(host) www.back2.com
#通过正则判断主机名中是否为bbs.back.com或forum.back.com
acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)
#判断ua是否为android
acl is_ua_android hdr_reg(User-Agent) -i android
#判断主机名开头是否为img.或css.或js.
acl is_host_static hdr_beg(host) -i img. css. js.
#判断url路径中是否有/bbs
acl is_path_bbs path_beg -i /bbs
#判断url文件结尾
acl is_php path_end -i .php
#通过正则判断url中结尾以
acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$
#效果同上
acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif #如果主机名是www.back2.com那么就使用后端http_back2
use_backend http_back2 if is_http_back2 #默认使用的后端
default_backend http_back backend http_back
balance roundrobin
option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30 backend http_back2
balance roundrobin
option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30
四、haproxy的动态管理
在/etc/haproxy/haproxy.cfg的global配置中添加如下项:
stats socket /data/haproxy/haproxy.sock mode 600 level admin
stats timeout 2m
安装socat工具
> yum install socat
查看帮助
> echo "help" | socat stdio /data/haproxy/haproxy.sock
查看信息
> echo "info" | socat stdio /data/haproxy/haproxy.sock
关闭后台主机
> echo "disable server http_back/node1" | socat stdio /data/haproxy/haproxy.sock
打开后台主机
> echo "enable server http_back/node1" | socat stdio /data/haproxy/haproxy.sock
五、可调优的参数
配置端口可用范围
> cat /proc/sys/net/ipv4/ip_local_port_range
配置端口复用
> cat /proc/sys/net/ipv4/tcp_tw_reuse
修改timeout的时间(不建议修改)
> cat /proc/sys/net/ipv4/tcp_fin_timeout
centos7下haproxy1.7的使用与配置的更多相关文章
- centos7下mysql5.7的安装与配置
centos7下MySQL5.7的安装与配置 下载 下载地址 根据系统和版本选择红框中的四个RPM包下载即可,然后放到centos7系统中的/opt目录下,等待稍后安装. 安装前的准备 1. 检查系统 ...
- CentOS7下安装MySQL5.7安装与配置(转)
原文地址:http://www.centoscn.com/mysql/2016/0626/7537.html 安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在M ...
- centos7下/etc/rc.local文件里配置的开机启动项不执行的解决办法
习惯于在/etc/rc.local文件里配置我们需要开机启动的服务,这个在centos6系统下是正常生效的.但是到了centos7系统下,发现/etc/rc.local文件里的开机启动项不执行了!仔细 ...
- CentOS7下搭建Nginx+PHP7的安装配置
一.安装编译工具及库文件: yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 环境要求 nginx是C ...
- CentOS7下安装MySQL5.7安装与配置(YUM)
http://blog.csdn.net/xyang81/article/details/51759200 安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在My ...
- CentOS7下SVN server的安装与配置
CentOS7通过yum install命令进行安装SVN(参考:http://subversion.apache.org/packages.html#centos) $ yum install su ...
- CentOS7下安装Nexus私服及基础配置
环境准备 VMware上安装CentOS7 XShell/Xftp NexusOSS-3.10 jdk1.8 安装 使用root用户登录,将安装包均放置在/usr/local文件夹下 使用Xshell ...
- CentOS7下MySQL8的二进制基本安装配置
前言 基于本地Centos7.6虚拟机Mysql8的配置(亲测有效) 一.安装前的准备 1.到官网下载mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 2.通过Xs ...
- CentOS7下安装MySQL的安装与配置(yum) (转)
原文链接:http://www.centoscn.com/mysql/2016/0626/7537.html 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mys ...
随机推荐
- SQL Server 数据库中的几个常见的临界值
本文出处:http://www.cnblogs.com/wy123/p/6709520.html 1,SQL语句或者存储过程的最大长度(SQL字符串容量)是多少? 经常有人问,我的SQL语句是拼凑出来 ...
- angularjs 请求数据转换为Form Data传参
在angularjs中配置好服务,有时传参会导致后台借不到值或者后台直接报错: 这就与后台框架有关,如果后台是以public ModelAndView接收接口传过来的参数,这种情况,前台传参的形式比较 ...
- semver 版本号命名法
https://semver.org/lang/zh-CN/ 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性 ...
- python java scala 单例模式
Python class Single2(object): """ 同一个对象 """ __instance = None def __ne ...
- 关于jsp基本语法:第一章节
今天我学习了关于JSP基本语法的一些知识点. JSP全名是 Java server pages,其根本是一个简化的Servlet设计,实现了在java当中使用HTML标签.JSP是一种动态网页技术,标 ...
- DNS泛解析配置
多个域名走同一个nginx代理服务器,多个域名如果有相同的后缀,就可以使用泛解析了,配置如下 编辑文件:/etc/dnsmasq.conf address=/aa.com/172.16.10.10 a ...
- java.io.Closeable 接口
package java.io; import java.io.IOException; /** * 关闭数据资源*/public interface Closeable extends AutoCl ...
- 通过日志恢复SQL Server的历史数据
通过日志恢复SQL Server的历史数据 Posted on 2008-11-14 21:47 代码乱了 阅读(4658) 评论(10) 编辑 收藏 园子里前段时间发过一篇通过日志恢复MSSQL数 ...
- C# 反射赋值
tb_Projects model = new tb_Projects(); model.OwnerId = ; string FieldName = "OwnerId";//字段 ...
- mysql-5.5.20预编译安装
1.MYSQL数据库概念 1)MYSQL是一款关系型数据库系统,数据之间有互相联系,互相的关联和调用的. 2)MYSQL数据用于存储:WEB网站用户名和密码等 3)MYSQL存储数据库是通过二维表格形 ...