四、Redis+Keepalived 主从热备部署方案

博客介绍了Redis的部署与备份方式,采用主从模式,通过keepalived提供虚IP并实现主从自动切换。还详细说明了keepalived和Redis的安装部署步骤,包括安装、配置、添加权限和启动等操作,以实现Redis的容灾功能。

目录

 

一、备份方式

二、安装部署keepalived

三、安装部署redis


一、备份方式

Redis部署方式采用主从的方式,通过keepalived来对外提供虚IP,并实现主从自动切换功能。
主实例A(master):188.102.2.96
备实例B(slave):188.102.2.97
虚IP(VIP):188.102.2.98

正常工作时:虚IP在主实例A上,数据同步备份:A→B
主实例A宕机:主实例B自动接管IP,并将redis转换为主模式,待原主实例A恢复后,A将自动转化为备模式,数据同步备份:A←B,主备角色互换,实现容灾。

二、安装部署keepalived

1、安装keepalived

# 安装依赖
yum install -y curl gcc openssl-devel popt-devel libnl3-devel net-snmp-devel
#下载包
wget https://www.keepalived.org/software/keepalived-2.0.17.tar.gz
# 解压并安装
tar zxvf keepalived-2.0.17.tar.gz
cd keepalived-2.0.17
./configure –prefix=/data/keepalived  #指定安装到/data/keepalived目录下
make
make install

2、配置keepalived
   (1)首先在master上创建如下配置:

#配置keepalived.conf
vim /data/keepalived/keepalived.conf

# 加入如下内容脚本
vrrp_script chk_redis {
    script "/data/keepalived/scripts/redis_check.sh"   ###监控脚本 
    interval 2                                         ###监控时间
}
vrrp_instance VI_1 {
        state MASTER                            ###设置为MASTER
        interface ens160                        ###监控网卡
        virtual_router_id 51
        priority 101                            ###权重值,比slave值高
        authentication {
            auth_type PASS         ###加密
            auth_pass redis        ###密码 与 slave 相同
			}
        track_script {
            chk_redis                  ###执行上面定义的chk_redis
        }
        virtual_ipaddress {
             188.102.2.98              ###VIP
        }
        notify_master /data/keepalived/scripts/redis_master.sh
        notify_backup /data/keepalived/scripts/redis_backup.sh
        notify_fault  /data/keepalived/scripts/redis_fault.sh
        notify_stop   /data/keepalived/scripts/redis_stop.sh
}
# 配置redis_master.sh
vim /data/keepalived/scripts/redis_master.sh

#!/bin/bash
 
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
 
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
 
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_MASTER -p $REDISPORT SLAVEOF $REDIS_SLAVE $REDISPORT >> $LOGFILE  2>&1
sleep 10 #10̬ͬ 
 
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_MASTER -p $REDISPORT SLAVEOF NO ONE >> $LOGFILE 2>&1
#配置redis_backup.sh
vim /data/keepalived/scripts/redis_backup.sh

#!/bin/bash
 
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
 
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
 
sleep 15 #15

             echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -p $REDISPORT SLAVEOF $REDIS_SLAVE $REDISPORT >> $LOGFILE  2>&1

 (2)在slave上创建如下配置:
 

#配置keepalived.conf
vim /data/keepalived/keepalived.conf

vrrp_script chk_redis {
                script "/data/keepalived/scripts/redis_check.sh"   ###监控脚本
                interval 2                                        ###监控时间
}
vrrp_instance VI_1 {
        state BACKUP                                ###设置为BACKUP
        interface ens160                            ###监控网卡
        virtual_router_id 51
        priority 100                                ###权重,比ASTRE值低
        authentication {
                     auth_type PASS                 ###加密
                     auth_pass redis                ###密码与MASTRE相同
        }
        track_script {
                chk_redis                          ###执行上边定义的 chk_redis
        }
        virtual_ipaddress {
             188.102.2.98                         ###VIP
        }
        notify_master /data/keepalived/scripts/redis_master.sh
        notify_backup /data/keepalived/scripts/redis_backup.sh
        notify_fault  /data/keepalived/scripts/redis_fault.sh
        notify_stop   /data/keepalived/scripts/redis_stop.sh
}

#配置redis_master.sh
vim /data/keepalived/scripts/redis_master.sh

#!/bin/bash
 
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
 
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
 
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_SLAVE -p $REDISPORT SLAVEOF $REDIS_MASTER $REDISPORT >> $LOGFILE  2>&1
sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态
 
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_SLAVE -p $REDISPORT SLAVEOF NO ONE >> $LOGFILE 2>&1
#配置redis_backup.sh 
vim /data/keepalived/scripts/redis_backup.sh

#!/bin/bash
 
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
 
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
 
sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -p $REDISPORT SLAVEOF $REDIS_MASTER $REDISPORT >> $LOGFILE  2>&1

(3)在master和slave创建如下配置:

#配置redis_check.sh
vim /data/keepalived/scripts/redis_check.sh
 
#!/bin/bash

REDISPORT=7001 
ALIVE=`/data/redis/bin/redis-cli -a redis -p $REDISPORT PING`
if [ "$ALIVE" == "PONG" ]; then
  echo $ALIVE
  exit 0
else
  echo $ALIVE
  exit 1
fi

3、添加执行权限

chmod +x /data/keepalived/scripts/*.sh

4、启动keepalived

Service keepalived start

 

三、安装部署redis

1、安装redis,下载地址:https://redis.io/download

# 解压并安装(主从一样安装)
tar zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
./configure
make
make install

注意:系统时间需设置正确

2、配置redis.config

#配置redis.conf 
vim /data/redis/etc/7001.conf 

daemonize no
pidfile /var/run/redis.pid
port 7001
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile "/data/redis/redis.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
requirepass redis
masterauth redis

3、启动redis

# 根据redis.conf启动redis服务
/data/redis-7001/bin/redis-server /data/redis-7001/etc/7001.conf


#写成start_redis.sh 方便执行
#!/bin/bash
/data/redis-7001/bin/redis-server /data/redis-7001/etc/7001.conf   2>&1 &

 

内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程中的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文中详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题中的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化中的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。
内容概要:本文围绕多旋翼无人机姿态估计算法的开发与性能评估展开系统性研究,重点对比了线性与非线性滤波算法在复杂飞行环境下的表现。通过构建基于扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)等先进算法的姿态估计器,融合IMU、磁力计、视觉传感器等多源数据,有效提升了姿态解算的精度与鲁棒性。研究涵盖了静态悬停、高速机动及磁干扰等多种典型飞行场景,利用MATLAB/Simulink平台完成仿真实验,并结合实测飞行数据与VICON高精度运动捕捉系统提供的真值进行定量分析。结果表明,非线性滤波器在动态工况下具有显著优势,尤其在抑制漂移和抵抗外部干扰方面优于传统线性方法。文章还提出了传感器融合、自适应建模、冗余配置等一系列降低偏差影响的技术路径,为高可靠性无人机导航系统的设计提供了理论依据与实践指导。; 适合人群:具控制理论、信号处理及状态估计基础知识,从事无人机导航、控制算法研发或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于开发高精度无人机姿态解算模块;②为多传感器融合算法的设计、实现与验证提供参考案例;③服务于复杂环境下无人系统状态估计的教学演示与科研攻关; 阅读建议:建议结合文中所述MATLAB/Simulink仿真模型与实测数据集进行复现与调试,重点关注EKF与UKF的数学推导、实现细节及关键参数调优过程,深入理解非线性系统建模、状态估计与工程实际之间的平衡与折衷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值