企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

redis keepalive(redis实现每秒请求数限制)

wudianyun 2025-02-04 16:29:19 精选文章 22 ℃

redis keepalive

1.keepalived 配置

global_defs {

notification_email

{

shiye.meng@cnlaunch.com

}

notification_email_from shiye.meng@cnlaunch.com

smtp_server mail.cnlaunch.com

smtp_connect_timeout 30

router_id redis_ha # 设置lvs的id,在一个网络内应该是唯一的

} #end global

vrrp_sync_group redis_master { #设置vrrp组

group {

loadbalance

}

} #end vrr

vrrp_instance loadbalance {

state BACKUP #设置lvs的状态,报错MASTER和BACKUP两种,必须大写

interface eth0 #设置对外服务的接口

#lvs_sync_daemon_inteface eth0 #设置lvs监听的接口

virtual_router_id 51 #设置虚拟路由表示

priority 100 #设置优先级,数值越大,优先级越高

advert_int 1 #设置同步时间间隔

nopreempt #恢复时不抢占,主机上配置,备机不配置,#不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置

authentication { #设置验证类型和密码

auth_type PASS

auth_pass 1111

}

virtual_ipaddress { #设置lvs vip

192.168.146.150 dev eth0 label eth0:1 #绑定了本机

192.168.146.151 #不做本机启动时绑定

}

#设置监听脚本

notify_backup "/usr/local/keepalived/sbin/notify.sh backup"

notify_master "/usr/local/keepalived/sbin/notify.sh master"

notify_fault "/usr/local/keepalived/sbin/notify.sh fault"

notify_stop "/usr/local/keepalived/sbin/notify.sh stop"

} #end loadbalance

virtual_server 192.168.146.150 6379 {

delay_loop 6 #健康检查时间间隔

lb_algo rr #负载均衡调度算法

lb_kind DR #负载均衡转发规则

persistence_timeout 20 #设置会话保持时间,对bbs等很有用

protocol TCP #协议

#sorry_server 192.168.146.144 3306 #只有realserver出故障时才切换到sorry server,keepalived的sorry server天生具有这个特性

real_server 192.168.146.146 6379 {

weight 3 #设置权重

notify_down "/usr/local/keepalived/sbin/notify.sh stop_keepalived" #检测到服务down后执行的脚本

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 6379

} #end tcp_check

} #end real server

}#end virtual server

2.notify.sh

#!/bin/bash

#日志路径及文件

log_file="/var/log/keepalived.log"

#日志记录时间

log_time="`date +%Y%m%d_%H%M%S`"

function log_file()

{

echo "[$log_time] $* " >> $log_file

}

arg_type="$1"

#进入主环境

if [ "${arg_type}" == "master" ]

then

log_file "Starting master "

#判断进程是否存在

is_ok="`ps -ef|grep redis|grep 6379|grep -v grep|wc -l`"

if [ "$is_ok" -le 0 ]

then

#启动进程

/usr/local/bin/redis-server /usr/local/redis/redis.conf

fi

sleep 2

#停止slave复制,确保为主进程

/usr/local/bin/redis-cli SLAVEOF NO ONE

fi

#进入备环境

if [ "${arg_type}" == "backup" ]

then

log_file "Starting backup"

#判断进程是否存在

is_ok="`ps -ef|grep redis|grep 6379|grep -v grep|wc -l`"

if [ "$is_ok" -le 0 ]

then

#无进程时,启动进程

/usr/local/bin/redis-server /usr/local/redis/redis.conf

fi

sleep 5

#进入备机模式

/usr/local/bin/redis-cli SLAVEOF 192.168.146.144 6379

fi

#当出现错误

if [ "${arg_type}" == "fault" ]

then

log_file "fault "

log_file "Stoping keepalived "

#stop keepalive

cd /usr/local/keepalived/sbin

/bin/sh stop.sh

fi

#当keepalive 进程停止

if [ "${arg_type}" == "stop" ]

then

log_file "keepalived process not found "

log_file "Stoping keepalived "

#stop keepalive

cd /usr/local/keepalived/sbin

/bin/sh stop.sh

fi

#当redis服务停止时,停止keepalived 服务

if [ "${arg_type}" == "stop_keepalived" ]

then

log_file "redis server 6379 not found"

log_file "Stoping keepalived "

#stop keepalive

cd /usr/local/keepalived/sbin

/bin/sh stop.sh

fi

Tags:

最近发表
标签列表