Haproxy负载均衡动静分离

HAproxy 负载均衡

实现一种事件驱动,单一进程模型,此模型支持非常大的并发连接数.基于TCP和HTTP的应用程序代理.

>部署haprooxy服务器
yum -y install haproxy  //装包
vim /etc/haproxy/haproxy.cfg   //修改配置文件
global
 log 127.0.0.1 local2   ##[err warning info debug]
 chroot /usr/local/haproxy
 pidfile /var/run/haproxy.pid ##haproxy的pid存放路径
 maxconn 4000     ##最大连接数,默认4000
 user haproxy
 group haproxy
 daemon       ##创建1个进程进入deamon模式运行
defaults
 mode http    ##默认的模式mode { tcp|http|health } 
option dontlognull  ##不记录健康检查的日志信息
 option httpclose  ##每次请求完毕后主动关闭http通道
 option httplog   ##日志类别http日志格式
 option forwardfor  ##后端服务器可以从Http Header中获得客户端ip
 option redispatch  ##serverid服务器挂掉后强制定向到其他健康服务器
 timeout connect 10000 #如果backend没有指定,默认为10s
 timeout client 300000 ##客户端连接超时
 timeout server 300000 ##服务器连接超时
 maxconn  3000  ##最大连接数
 retries  3   ##3次连接失败就认为服务不可用,也可以通过后面设置
 #############################################
 >访问监控页面
listen stats 0.0.0.0:1080   #监听端口
    stats refresh 30s   #统计页面自动刷新时间
    stats uri /stats   #统计页面url
    stats realm Haproxy Manager #进入管理解面查看状态信息
    stats auth admin:admin  #统计页面用户名和密码设置
    #################################
    >动静分离解析
frontend web *:80   # *表示haproxy监听所有地址,监听的端口为80
   # 定义访问控制,表示以url以.css .js .html .php结尾的分别调度到哪台服务器上访问
    acl url_static       path_end       -i .css .js .html    
    acl url_dynamic      path_end       -i .php

    # usr_backend表示使用backend服务,if表示如果满足url_static这个条件就调度到这台服务器上
    use_backend        static          if url_static    
    default_backend    dynamic

backend static   # 定义调用后端的静态页面的服务器上
    server node1 192.168.27.18:80 check inter 3000 rise 2 fall 2 maxconn 5000
backend dynamic  # 定义调用后端的动态页面的服务器上
    server node2 192.168.27.19:80 check inter 3000 rise 2 fall 2 maxconn 5000   
   ######################################
   systemctl restart haproxy  //重启服务
   systemctl enable haproxy //开机自启

配置文件5个区域

  • global:配置全局参数
  • default:用于配置所有frontend和backend的默认属性
  • frontend:用于配置前端服务(Haproxy自身提供的服务)
  • backend:用于配置后端服务(实例组)
  • listen:fronten+backend的组合配置,简单的配置方法

global域的关键配置

  • daemon:指定Haproxy以后台模式运行,通常都使用该配置
  • user:指定Haproxy进程所属用户
  • group:指定Haproxy进程所属用户组
  • log [address] [device] [maxlevel] [minlevel]:日志输出配置,log 127.0.0.1 local0 info warning ,即向本机rsyslog或syslog的local0输出info到warning级别的日志.其中[minlevel]可省略.Haproxy日志有8个级别,从高到低依次为:emerg/alert/crit/err/warning/notice/info/debug
  • pidfile:指定记录Haproxy进程号的绝对路径.
  • maxconn:Haproxy进程同时处理的连接数,连接数达到顶值后,停止接受连接请求!

frontend域的关键配置

  • acl [name] [criterion] [flags] [operator] [value]:定义一条acl策略.如acl url_ms1 path_beg -i /ms1/ 定义名为url_ms1的ACL,该ACL请求以uri/ms1/开头(忽略大小写)时为TRUE
  • bind [ip]:[port]:frontend服务监听的端口
  • default_backend [name]:fronfend对应的默认backend

backend域的关键配置

  • balance []:负载均衡的算法
  • cookie:在backend server间启用基于cookie的会话保持策略,最常用的insert方式如:cookie HA_STICKY insert indirect nocache ,指Haproxy将在响应中插入名为HA_STICKY的cookie,其值对应server定义中的指定的值
  • server [name] [ip]:[iport] [params]:定义backend中一个后端的server,[params]用于指定这个server的参数,常用有: - 
     -
    • -check:指定此参数时,HAProxy将会对此server执行健康检查,检查方法在option httpchk中配置。同时还可以在check后指定inter, rise, fall三个参数,分别代表健康检查的周期、连续几次成功认为server UP,连续几次失败认为server DOWN,默认值是inter 2000ms rise 2 fall 3
    • cookie [value]:用于配合基于cookie的会话保持,如cookie ms1.srv1代表交由此server处理的请求会在响应中写入值为ms1.srv1的cookie(具体的cookie名则在backend域中的cookie设置中指定)
    • maxconn:指HAProxy最多同时向此server发起的连接数,当连接数到达maxconn后,向此server发起的新连接会进入等待队列。默认为0,即无限
    • maxqueue:等待队列的长度,当队列已满后,后续请求将会发至此backend下的其他server,默认为0,即无限
    • weight:server的权重,0-256,权重越大,分给这个server的请求就越多。weight为0的server将不会被分配任何新的连接。所有server默认weight为1

listen域

  • frontend和backend的组合,

官方配置文档

keepalived实现Haproxy高可用

原理:两台Haproxy的主机分别运行一个Keepalived的实例,一旦Master主服务器宕机,Back服务器立马接管请求.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值