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 #重启日志服务

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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6月前
|
负载均衡 算法 应用服务中间件
百度搜索:蓝易云【Linux系统如何使用 HAProxy、Nginx 和 Keepalived 进行负载均衡?】
通过上述步骤,你可以在Linux系统中使用HAProxy、Nginx和Keepalived来实现负载均衡。这些工具可以帮助你将流量分配到多个后端服务器上,提高系统的性能、可靠性和可扩展性。
87 0
|
消息中间件 存储 负载均衡
RabbitMQ使用docker搭建集群并使用Haproxy实现负载均衡(多机镜像模式)
RabbitMQ使用docker搭建集群并使用Haproxy实现负载均衡(多机镜像模式)
457 0
RabbitMQ使用docker搭建集群并使用Haproxy实现负载均衡(多机镜像模式)
|
5月前
|
负载均衡 前端开发 网络协议
Keepalived+HAProxy 搭建高可用负载均衡(二)
Keepalived+HAProxy 搭建高可用负载均衡
|
5月前
|
负载均衡 算法 调度
Keepalived+HAProxy 搭建高可用负载均衡
Keepalived+HAProxy 搭建高可用负载均衡
215 0
|
5月前
|
负载均衡 算法 应用服务中间件
Haproxy负载均衡
Haproxy负载均衡
|
6月前
|
负载均衡 前端开发 应用服务中间件
企业实战(22)基于Haproxy负载均衡+Keepalived高可用集群实战详解
企业实战(22)基于Haproxy负载均衡+Keepalived高可用集群实战详解
|
缓存 负载均衡 算法
Haproxy负载均衡集群(上)
一、常见的Web集群调度器 目前常见的Web集群调度器分为软件和硬件: 软件通常使用开源的LVS、Haproxy、 Nginx
149 0
|
11月前
|
运维 负载均衡 监控
在 Linux 中如何使用 HAProxy、Nginx 和 Keepalived 进行负载均衡?
在 Linux 中如何使用 HAProxy、Nginx 和 Keepalived 进行负载均衡?
670 0
在 Linux 中如何使用 HAProxy、Nginx 和 Keepalived 进行负载均衡?
|
负载均衡 网络协议 算法
配置 haproxy 负载均衡群集(二)
本文将要介绍一款比较流行的群集调度工具。首先介绍负载均衡常用调度算法,然后介绍Haproxy搭建web群集的方法。
配置 haproxy 负载均衡群集(二)
|
负载均衡 算法 网络协议
配置 haproxy 负载均衡群集(一)
本文将要介绍一款比较流行的群集调度工具。首先介绍负载均衡常用调度算法,然后介绍Haproxy搭建web群集的方法。
配置 haproxy 负载均衡群集(一)