rgw_keepalive +haproxy部署

架构

2个节点,每个节点上按照keepalive和haproxy.

1. 2keepalive使用一个vip对外提供服务,使用备备不抢占模式

2. keepalive的作用是保证所在节点的haproxy服务处于启动状态,若haproxy启动失败则kill掉自身keepalive,由另一个keepalive节点提供服务

3. 2haproxy的作用是使用最小连接数模式把http(s)请求发送给2gateway,同一个时间只有一个haproxy提供服务

haproxy部署

haproxy.cfg

 

vim /app/haproxy/conf/haproxy.cfg

global
  log  127.0.0.1 local2 info
  maxconn  32768
  pidfile  /app/haproxy/run/haproxy.pid
  stats  socket /app/haproxy/lib/haproxy/stats
  user mwop
  group mwop
  daemon                              #守护进程运行
  nbproc 1                            #指定启动的haproxy进程个数,只能用于守护进程模式的haproxy
  tune.ssl.default-dh-param 2048

defaults
  log  global                  #使用global里的log
  mode  http
  option  forwardfor           #允许在request 中加入X-Forwarded-For header 发往server
  option  dontlognull          #haproxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包
  option  httplog              #定制日志格式
  option log-separate-errors   #对非完全成功的连接改变日志记录等级
  #option tcplog                #允许记录tcp 连接的状态和时间,可在测试过程中开启;
  option  httpclose            #HAProxy在完成一次请教请求连接后,将主动关闭该连接
  option  redispatch           #serverId对应的服务器挂掉后,强制定向到其他健康的服务器
  option  http-no-delay
  retries  3
  timeout  connect 60s         #成功连接后端服务器的最大等待时长
  timeout  client 10m           #客户端最长空闲连接超时时长 默认单位是毫秒
  timeout  server 30m          #后端服务器最长空闲连接超时时长
  timeout  check 10s

listen Stats
  #mode http 
  bind 0.0.0.0:10000
  stats  enable                #在web页面启动统计页
  stats uri /                  #统计页的url地址
  stats refresh 5s             #设定自动刷新时间间隔
  stats show-node
  stats show-legends
  stats hide-version

frontend gw_80_frontend
  bind 0.0.0.0:80
  #redirect scheme https if !{ ssl_fc }
  default_backend gw_server


frontend gw_443_frontend
  #mode http
  bind 0.0.0.0:443 ssl crt /app/haproxy/cert/cmft.com.pem ciphers AES:ALL:!aNULL:!eNULL:!RC4:-EXPORT:-DES no-sslv3 no-tlsv10
  default_backend gw_server


backend gw_server
  balance  leastconn
  server gw1 100.75.0.21:7480 check inter 2s rise 3 fall 5  #2000mscheck一次server,连续3次成功才算可用,连续5次失败算不可用
  server gw2 100.75.0.27:7480 check inter 2s rise 3 fall 5

haproxy安装

1.从已安装haproxy的机器上把/app/haproxy目录打包拷贝到新机器/app/目录下

2.需要安装gcc, yum -y install gcc automake autoconf libtool  yum -y install gcc gcc-c++

3.根据haproxy.cfg里的log  127.0.0.1 local2  info 配置,需要在/etc/rsyslog.conf里添加信息并重启日志记录服务systemctl  restart rsyslog

$ModLoad imudp
$UDPServerRun 514

local2.*                                               /var/log/haproxy/haproxy.log

4.创建mwop用户: groupadd mwop

5. useradd -s /bin/bash -d /home/mwop -g mwop -G user01 mwop         

6.需要查看系统配置的最大文件打开数是否符合haproxy.cfgmaxconn要求

7. mkdir /var/log/haproxy

8. chown mwop mwop /var/log/haproxy

配置参数说明

  timeout  connect 60s         #成功连接后端服务器的最大等待时长

  timeout  client 10m           #客户端最长空闲连接超时时长 默认单位是毫秒

  timeout  server 30m          #后端服务器最长空闲连接超时时长

  mode  http                  #使用7层网络协议

  redirect scheme https if !{ ssl_fc }  #80端口的请求重向定443

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

  balance  leastconn     #最小连接数负载均衡算法

  maxconn  32768      #haproxy单个进程最大连接数

keepalive部署

keepalive.conf

3秒钟运行一次check_haproxy.sh脚本检查haproxy是否运行中,若已停止则尝试拉起haproxy服务,启动失败则kill掉自己。

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

vrrp_script chk_haproxy {
    script "/app/haproxy/bin/check_haproxy.sh"
    interval 3
    weight 2
}

global_defs {
   notification_email {
        huangaj001@cmft.com
   }
   notification_email_from huangaj001@cmft.com
   smtp_server mail.cmrh.com
   smtp_connect_timeout 30
   router_id gw
}

vrrp_instance VI_1 {
    state  BACKUP
    interface br-ex
    virtual_router_id 18
    priority 100  #另一个节点=90
    advert_int 3
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
}
    virtual_ipaddress {
        100.75.1.18/24
    }
    track_script {
        chk_haproxy
    }
}

check_haproxy.sh

vim /app/haproxy/bin/check_haproxy.sh

#! /bin/bash
num=`ps -C haproxy --no-header |wc -l`
if [ $num -eq 0 ]; then
       /app/haproxy/sbin/haproxy  -f  /app/haproxy/conf/haproxy.cfg
        sleep 3
        if [ `ps -C haproxy --no-header |wc -l` -eq 0 ]; then
             killall keepalived
        fi
fi

测试

haproxy参数测试

测试项

说明

check inter 10s rise 3 fall 5

2000mscheck一次server,连续3次成功才算可用,连续5次失败算不可用

timeout  client

客户端最长空闲连接超时时长

功能测试

测试项

说明

keepalive高可用测试

能及时拉起未启动的haproxy服务

haproxy启动失败能转移VIP

keepalive再次启动不会抢占原VIP

 

 

haproxy https http测试

 

haproxy 负载均衡测试

压力测试观察2gateway处理连接数是否达到负载均衡要求

down一个gateway观察是否出现http请求超时

压力测试

测试项

说明

大量客户端并发访问集群,多个桶,多个客户端同时访问

观察负载均衡情况

观察是否有请求超时

多种类型测试:小文件读/写,大文件读写

观察负载均衡情况

观察是否有请求超时

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值