Redis+Keepalived内存数据库集群配置

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

前言:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

    Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。

    Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个usr/localend only file(aof)里面(这称为“全持久化模式”)。


为了提升redis高可用性,我们除了备份redis dump数据之外,还需要创建redis主从架构,可以利用从将数据库持久化(数据持久化通俗讲就是把数据保存到磁盘上,保证不会因为断电等因素丢失数据。

    redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。)

什么是redis的主从复制呢?

Redis主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致;且实现Redis的主从复制非常简单。同时slave上还可以开启二级slave,三级slave从库,跟MySQL的主从类似。

    安装redis可以参考上一次课程哦,这里直接安装slave,只需要在slave redis.conf配置文件中加入如下语句即可:

1
slaveof 192.168.33.10 6379   # slaveofmaster的ip master的端口。

一、安装Keepalived:

1
2
3
4
5
tar  zxf keepalived-1.2.1. tar .gz 
cd  keepalived-1.2.1&&. /configure  --with-kernel- dir = /usr/src/kernels/2 .6.18* && make &&  make  install 
DIR= /usr/local/  ; cp  $DIR /etc/rc .d /init .d /keepalived   /etc/rc .d /init .d/
cp  $DIR /etc/sysconfig/keepalived  /etc/sysconfig/  && mkdir  -p  /etc/keepalived
cp  $DIR /sbin/keepalived  /usr/sbin/

二、配置Keepalived:

vi /etc/keepalived/keepalied.conf

! Configuration File for 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
43
global_defs { 
    notification_email{ 
       wgkgood@139.com 
   
    notification_email_fromwgkgood@139.com 
    smtp_server127.0.0.1 
    smtp_connect_timeout30 
    router_idLVS_DEVEL 
# VIP1 
vrrp_instance VI_1 { 
     state BACKUP   
     interface eth0 
    lvs_sync_daemon_inteface eth0 
     virtual_router_id151 
     priority 100 
     advert_int 5 
     nopreempt 
     authentication { 
         auth_typePASS 
         auth_pass2222 
    
     virtual_ipaddress{ 
         192.168.33.100 
    
virtual_server 192.168.33.100 6379 { 
     delay_loop 6    
     lb_algo wrr    
     lb_kind DR   
     persistence_timeout60    
     protocol TCP         
     real_server 192.168.33.10 6379 { 
         weight 100        
         notify_down /data/sh/redis .sh 
         TCP_CHECK { 
         connect_timeout10 
         nb_get_retry3 
         delay_before_retry3 
         connect_port6379 
        
    
}

三、从Keepalived配置:

Redis从服务器配置keepalived.conf跟master一样,只需要把Realserver IP修改成:

1
  real_server 192.168.33.11 ;优先级从100改成90即可。

vi /etc/keepalived/keepalied.conf

! Configuration File for 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
43
global_defs { 
    notification_email{ 
       wgkgood@139.com 
   
    notification_email_fromwgkgood@139.com 
    smtp_server127.0.0.1 
    smtp_connect_timeout30 
    router_idLVS_DEVEL 
# VIP1 
vrrp_instance VI_1 { 
     state BACKUP   
     interface eth0 
    lvs_sync_daemon_inteface eth0 
     virtual_router_id151 
     priority 90 
     advert_int 5 
     nopreempt 
     authentication { 
         auth_typePASS 
         auth_pass2222 
    
     virtual_ipaddress{ 
         192.168.33.100 
    
virtual_server 192.168.33.100 6379 { 
     delay_loop 6    
     lb_algo wrr    
     lb_kind DR   
     persistence_timeout60    
     protocol TCP         
     real_server 192.168.33.11 6379 { 
         weight 100        
         notify_down /data/sh/redis .sh 
         TCP_CHECK { 
         connect_timeout10 
         nb_get_retry3 
         delay_before_retry3 
         connect_port6379 
        
    
}

四、创建切换脚本:

在master、slave数据库上创建/data/sh/redis.sh脚本,内容为:

1
   /etc/init .d /keepalived  stop

然后分别重启两台Redis数据库上keepalived服务即可。

最后测试停止master Mysql服务,是否会自动切换到Backup上即可。


本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1690864


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
9天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
18 0
|
18天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
17 2
|
1月前
|
存储 NoSQL Redis
【Redis】利用Redis List实现数据库分页快速查询
【Redis】利用Redis List实现数据库分页快速查询
84 0
|
23天前
|
NoSQL Redis
Redis集群(六):集群常用命令及说明
Redis集群(六):集群常用命令及说明
15 0
|
10天前
|
NoSQL 安全 Redis
redis内存限制与淘汰策略
Redis内存管理包括限制和淘汰策略。`maxmemory`配置参数决定内存上限,无设置时64位系统默认不限制,可能导致系统资源耗尽,生产环境建议设定合理值。当内存满时,未设置淘汰策略会导致写入错误。Redis提供8种淘汰策略,如LRU(最近最少使用)和LFU(最不经常使用),以及随机或基于过期时间的删除。需根据数据重要性、访问频率和一致性选择合适策略。
13 0
|
16天前
|
存储 缓存 NoSQL
Redis 服务器指南:高性能内存数据库的完整使用指南
Redis 服务器指南:高性能内存数据库的完整使用指南
|
17天前
|
NoSQL Java 测试技术
面试官:如何搭建Redis集群?
**Redis Cluster** 是从 Redis 3.0 开始引入的集群解决方案,它分散数据以减少对单个主节点的依赖,提升读写性能。16384 个槽位分配给节点,客户端通过槽位信息直接路由请求。集群是无代理、去中心化的,多数命令直接由节点处理,保持高性能。通过 `create-cluster` 工具快速搭建集群,但适用于测试环境。在生产环境,需手动配置文件,启动节点,然后使用 `redis-cli --cluster create` 分配槽位和从节点。集群动态添加删除节点、数据重新分片及故障转移涉及复杂操作,包括主从切换和槽位迁移。
30 0
面试官:如何搭建Redis集群?
|
18天前
|
存储 缓存 NoSQL
Redis的内存淘汰策略是什么?
【4月更文挑战第2天】Redis内存淘汰策略在内存满时,通过删除旧数据为新数据腾空间。策略包括:volatile-lru/LFU(基于LRU/LFU算法淘汰有过期时间的键),volatile-random/ttl(随机/按TTL淘汰),allkeys-lru/LFU(所有键的LRU/LFU),allkeys-random(随机淘汰所有键),以及noeviction(不淘汰,返回错误)。选择策略要考虑访问模式、数据重要性和性能需求。
|
21天前
|
存储 缓存 NoSQL
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)(一)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)
42 0
|
30天前
|
NoSQL 应用服务中间件 Linux
Redis的内存回收机制
Redis的内存回收机制
24 2