Redis 3.0.7基于Sentinel的高可用安装及配置

简介:

在生产场景下都必须做到高可用,否则出现问题就会造成服务停止。这里介绍下Redis的Sentinel功能实现的高可用,当然也有Redis提供的cluster功能。

wKioL1bWWbSz9bo5AAA2GOYNda8314.jpg


1.Redis的安装

1
2
3
4
5
6
7
8
9
10
wget http: //download .redis.io /releases/redis-3 .0.7. tar .gz
tar  zxf redis-3.0.7. tar .gz
cd  redis-3.0.7
make
cd  src
mkdir  -p  /usr/local/redis3 .0.7/{sbin,data,conf}
scp  -r mkreleasehdr.sh  redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server localhost: /usr/local/redis3 .0.7 /sbin
cp  .. /redis .conf  /usr/local/redis3 .0.7 /conf/
echo  'PATH=$PATH:/usr/local/redis3.0.7/sbin'  >> /etc/profile
source  /etc/profile

2.Redis的配置

1
vim  /usr/local/redis3 .0.7 /conf/redis .conf

(以下为db1的配置,db2的配置只需要增加一行slaveof 192.168.2.241 6379)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#是否以服务方式开启
daemonize no
pidfile  /var/run/redis .pid
#端口
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
#日志提醒级别
loglevel notice
#日志文件路径
logfile  ""
#数据库数量
databases 16
#日志刷新策略(Master禁用)
save 900 1
#说明900秒内1次改动,自动保存一次数据集
save 300 10
save 60 10000
stop-writes-on-bgsave-error  yes
#以rdb方式存储时是否压缩
rdbcompression  yes
#rdb是否校验
rdbchecksum  yes
#数据文件名
dbfilename dump.rdb
#数据文件路径
dir  /usr/local/redis3 .0.7 /data
slave-serve-stale-data  yes
#从服务器只读
slave- read -only  yes
#指定与主数据库连接时需要的密码验证,主库无需设置
#masterauth
#masterauth
repl-diskless- sync  no
repl-diskless- sync -delay 5
repl-disable-tcp-nodelay no
slave-priority 100
##启用增量(Master禁用)
appendonly no
#增量日志文件名,默认值为appendonly.aof
appendfilename  "appendonly.aof"
#设置对 appendonly.aof 文件进行同步的频率
#always 表示每次有写操作都进行同步,everysec 表示对写操作进行累积,每秒同步一次。
#no表示等操作系统进行数据缓存同步到磁盘,都进行同步,everysec 表示对写操作进行累#积,每秒同步一次
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
#最大可用内存
#maxmemory 2mb
#配置成从服务器
#slaveof 192.168.2.250 6379
#客户端连接访问口令
# requirepass foobared
#限制同时连接的客户数量,防止过多的client导致内存耗尽。如果有足够内存可以不进行#设置
#maxclients 10000

3.Sentinel的配置

1
vim  /usr/local/redis3 .0.7 /conf/sentinel .conf
1
2
3
4
5
6
7
8
9
port 26379
sentinel monitor master 192.168.2.241 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 900000
#sentinel can-failover master yes
sentinel parallel-syncs master 2
# Generated by CONFIG REWRITE
dir  "/usr/local/redis3.0.7/conf"
#sentinel client-reconfig-script master /usr/local/redis3.0.7/sbin/vip.sh

4.启动redis-server及redis-sentinel

在db1,db2,db3上分别启动redis-server及redis-sentinel

1
2
/usr/local/redis3 .0.7 /sbin/redis-server  /usr/local/redis3 .0.7 /conf/redis .conf
/usr/local/redis3 .0.7 /sbin/redis-sentinel  /usr/local/redis3 .0.7 /conf/sentinel .conf

这个时候就已经做好了Redis的主从复制及故障转移,我们客户端的连接就需要修改,因此就涉及到VIP的问题,客户端只要连接VIP的问题,目前VIP的解决方法有

  1. 利用redis-sentinel的sentinel client-reconfig-script参数进行设置

  2. 利用keepalived进行VIP的转移

  3. 利用consul进行服务注册


a.利用redis-sentinel自带的参数进行VIP的配置

在db1,db2的sentinel.conf中加入

sentinel client-reconfig-script master1 /usr/local/redis3.0.7/sbin/vip.sh

然后创建脚本/usr/local/redis3.0.7/sbin/vip.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
MASTER_IP=$6
LOCAL_IP= '192.168.2.241'  #从库修改为192.168.2.242
VIP= '192.168.2.250'
NETMASK= '24'
INTERFACE= 'eth0'
if  [ ${MASTER_IP} = ${LOCAL_IP} ];  then
          /sbin/ip  addr add ${VIP}/${NETMASK} dev ${INTERFACE}
          /sbin/arping  -q -c 3 -A ${VIP} -I ${INTERFACE}
         exit  0
else
          /sbin/ip  addr del ${VIP}/${NETMASK} dev ${INTERFACE}
         exit  0
fi
exit  1

在集群启动的时候需要手动添加VIP

1
/sbin/ip  addr add 192.168.2.250 /24  dev eth0

使用上面脚本的时候需要注意你的网卡是eth0,否则可能出现VIP无法使用的情况


b.利用keepalived进行VIP的切换

1
2
3
4
5
6
7
8
9
wget http: //www .keepalived.org /software/keepalived-1 .2.19. tar .gz
tar  zxf keepalived-1.2.19. tar .gz
cd  keepalived-1.2.19
. /configure  --prefix= /usr/local/keepalived1 .2.19 --disable-fwmark
make  &&  make  install
ln  -s  /usr/local/keepalived1 .2.19 /sbin/keepalived  /usr/sbin/
ln  -s  /usr/local/keepalived1 .2.19 /etc/sysconfig/keepalived  /etc/sysconfig/
ln  -s  /usr/local/keepalived1 .2.19 /etc/keepalived/  /etc/keepalived
ln  -s  /usr/local/keepalived1 .2.19 /etc/rc .d /init .d /keepalived  /etc/init .d/

db1的keepalived配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
! Configuration File  for  keepalived     
global_defs {     
    notification_email {     
      root@localhost     
    }     
    notification_email_from keepalived@localhost     
    smtp_server 127.0.0.1     
    smtp_connect_timeout 10     
    router_id keepalivedha_1     
}     
vrrp_script chk_redis_role {     
     script  "/usr/local/redis3.0.7/sbin/redis-cli info | grep role:master >/dev/null 2>&1"     
     interval 1     
     timeout 2     
     fall 2     
     rise 1     
}     
vrrp_sync_group VG_1 {     
     group {     
         VI_1     
     }     
}     
vrrp_instance VI_1 {     
     state BACKUP     
     interface eth0     
     #use_vmac keepalived     
     #vmac_xmit_base     
     smtp_alert     
     virtual_router_id 20    
     priority 100     
     advert_int 1     
     authentication {     
         auth_type PASS     
         auth_pass password     
     }     
     virtual_ipaddress {     
         192.168.2.250
     }     
     track_script {     
         chk_redis_role     
     }     
}

db2的配置文件,只需要将以上文件复制过来并修改下面参数

1
priority 98

#注意一下interface eth0看下你机器的网卡接口


c.利用consul服务注册

参考:http://dgd2010.blog.51cto.com/1539422/1745314


从上面可以看出以上三种方法:

脚本跟keepalived的形式一样,但是脚本相对轻量,首次启动麻烦,配置简单,依赖于redis-sentinel

keepalived启动简单,排错简便

consul适合大型场景,及云环境没有多余的IP这种情况


以上也适用于2台服务器的场景,也可以不用3台服务器。只需要更改

1
sentinel monitor master 192.168.2.241 6379 1

后面值更改为1即可


本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1746731


相关文章
|
10月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
7月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
757 25
|
NoSQL 数据可视化 关系型数据库
安装 Redis
本文主要介绍了Linux系统下Redis的安装步骤,包括卸载旧版本、下载新版本、编译安装以及配置启动等详细操作,并解释了Redis默认端口6379的由来。同时,文章还简要说明了Windows环境下Redis的下载与服务安装方法。最后,推荐了几款Redis可视化管理工具,如RedisView、QuickRedis、AnotherRedisDesktopManager和RedisPlus,提供了它们的功能特点及下载链接,方便用户根据需求选择合适的工具进行数据库管理。
876 1
|
7月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
793 6
|
8月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
10月前
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
732 9
|
12月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
1052 16
|
JSON NoSQL Redis
在Rocky9系统上安装并使用redis-dump和redis-load命令的指南
以上步骤是在Rocky9上使用redis-dump和redis-load命令顺利出行的秘籍。如果在实行的过程中,发现了新的冒险和挑战,那么就像一个勇敢的航海家,本着探索未知的决心,解决问题并前进。
415 14
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
640 1
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。同时,定期监控和维护Redis实例,及时调整配置,能够确保系统的稳定运行。希望本文对您在Redis的配置与优化方面有所帮助。
252 23

热门文章

最新文章