Linux的企业-Redis数据库、缓存和哨兵Sentinal、Redis高可用

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

一.Redis简介

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。     它支持多种类型的数据结构,如        字符串(strings),    散列(hashes),    列表(lists),    集合(sets),    有序集合(sorted sets) 与范围查询,    bitmaps,    hyperloglogs 和    地理空间(geospatial) 索引半径查询。    Redis 内置了    复制(replication),LUA脚本(Lua scripting),    LRU驱动事件(LRU eviction),事务(transactions)    和不同级别的    磁盘持久化(persistence),    并通过    Redis哨兵(Sentinel)和自动    分区(Cluster)提供高可用性(high availability)


二.安装redis

066a9c742baab6ecd8930669b51fdaf5.png

04afe8aeb24129b4a9db914167cf91c6.png


2.启动redis

1cefc06f2a794c9758673e07b78ec7c9.png



三.安装redis

bind 全网段

af39ed6923296ea51ed3853f1653a29a.png

e9b48eb65e7ebf8f3abe2ef1333f124e.png


进入redis,创建数据

数据是内存快照,保存到/var/lib/redis,格式为rdb

e76d402e664f8223a1f8f7d75d1289eb.png


四.在server2和server3安装redis测试数据同步

9afe20fb0a1a3d16c48e7d9ee98d7cd4.png

fc8a694465cb641b97828a0966c27bc3.png

7d2b3b93b71c377241e9cc3766a13b57.png


可以查看到server2和server3数据同步

760eed070aa82c4532d49cd1e36264ce.png

459fca762d7d3e87eac7693a52dbcb69.png

96a0c4671db30d9ec7b5cd6cb7c37aa3.png

ddbce8363e7052790ac21e3f10462f1b.png


五.Redis的哨兵

Redis的哨兵(sentinel)系统用于管理多个 Redis服务器,该系统执行以下三个任务:

·        监控(Monitoring):哨兵(sentinel)会不断地检查你的Master和Slave是否运作正常。

·        提醒(Notification):当被监控的某个 Redis出现问题时,哨兵(sentinel)可以通过 API 向管理员或者其他应用程序发送通知。

·        自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel)会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master,并让失效Master的其他Slave改为复制新的Master;当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。


1.在server1配置sentinel哨兵文件

4408b75cf0fafa655eed77d2b8ad3ad2.png

server1为主,server2和server3为从

55de8a236048f4c083312ade200951a8.png


2.将sentinel.conf文件传给server2和server3

3d3c5d7e453fc9c80926dfe0a3c1067b.png

990a49998a60b20d146f47cf32dc37f9.png


3.server1、server2、server3启动哨兵

876b5922b689320bc8e0eb9471a8872c.png

cad7071c51393eebee9fd8a53e0ce920.png


40f407aeed6fd357864b8fdcd26789f0.png


12b9b54c9ac52c6e886cc775c7930e60.png



4.将server1 主节点shutdown,30s后,在server3上查看master切换到server2

fbb1c8728fc8fec73a267ba8225493e1.png

af5f606bfaaedad82b8ef1a642273af3.png

20fafaa79c1bfa260377b8c8e7d945ec.png


4.重新启动,将server1的sentinel.conf文件里的主修改为server2

e02c5fb860458147d4d78cae8f1468ea.png

df3ce058825c0a1035dc52e759bb3425.png

d06ae23eb10fd17e43dc29e62cf0a8d1.png


六.Redis高可用

在server1上开多个不同端口的redis

1.安装rubygems模块,使得gem模块可以调用redis

26dbfcfb67980f1968625fcc2caab75b.png

bf6a3a41951d25f4628c70b165ba1921.png

b5c7bf12dd6d02f6e9f6c85020c8bd4b.png


2.将redis-trib.rb命令拷到/usr/local/bin下,方便使用命令

c0b464a293770a62e98ab66b641706ec.png

cd3596fa0d1fa5352bddee8f90acdc77.png

ca49dc614c8cfcf4e8fe631c83a6baee.png



3.在/usr/local/新建redis-cluster

redis-cluster下新建30001-30006

6bc23cff0bb8e8fb18f6d0c2b8ad4fe4.png


配置30001的redis文件

cc14503d889917be15df0b797b6a51b5.png


配置完成后,启动服务,在30001目录里redis-server 30001/redis.conf

e41e0a9b9aa95a3e4ff969594ce53fba.png


4.按照30001的方法配置30002-30006,修改里面的目录和端口,配置完启动

1bf5b43e631a7917b40db794cfc1f826.png

cc962c1d443177a9ea4828d3a3a3cce4.png

de5ffd9925d86693dd688f97627ba7f7.png


查看进程和端口

dcb1cd38231d644c7366877714cff5ca.png

2dbe5ac422b029b159cc6f1d1641ff8f.png


5.创建集群

选择yes

三个mastar,三个slave

master有槽位,一共16383,id一样的为一组主从,一对主从不能同时坏掉,一但一对主从都坏掉,集群失效

0d13bd00f079777060c649f7535ce119.png


6.查看集群信息,从30001接口进入,接口30001-30006都可以

214d61c2ba9668ed3910378c34448b5c.png

测试:

25cd8d6720cf39967180f9583b197973.png

f42618ff59797f3966143273cf6312b6.png


7.检测集群状态

f09819534ddba202df76b43a986ba581.png


8.从30002接口进入,关闭2节点,从从30003接口登陆,数据没有丢失,从 从机30005上将数据取出

041db786d26c940d93b700773a9cee4a.png


恢复节点2,集群正常

47a7dfe970b5e71ecd7ce51eea5639da.png


但30005变为master,30002变为slave

73cda8a35628bac72f0e39a76cbb31c5.png


9.添加新节点

新建30007和30008

6e311e271bfcbfc328ac7e7e6ab18553.png

717721edd018b2e57c30865ff9621ddf.png



(1)将30007添加为master

b81caee21ffb4e0e8e7798ea2ebd6d75.png

827c5a21df6fac5204ccec5c07f26550.png


查看集群状态,30007没有槽位

82272cfd9d920ebb5b6acad0067b64b3.png


平均master槽位

1a2e82ede4cffefaaab74915e43c7df3.png

3b50e324899e8d51990edc7c559aa408.png


(2)将30008添加为slave

c72f16469b12f3430b8b0f2ad6df2a47.png

1942e747398f8df11aa9412f1f14b781.png


0f3f3cc072bd86345789d3b590de810d.png


10.登陆测试取值,发现原来name的槽位平均到master30007上

30ba6efd9decad0ff586559e3aef37f8.png



03996adc6098e71d8bca21ce3c167316.png

0aea9466a541f7af246df9cb7a3ff99c.png





      本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1974247,如需转载请自行联系原作者






相关实践学习
基于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
相关文章
|
1月前
|
存储 缓存 数据库
解决缓存与数据库的数据一致性问题的终极指南
解决缓存与数据库的数据一致性问题的终极指南
136 63
|
2月前
|
消息中间件 canal 缓存
项目实战:一步步实现高效缓存与数据库的数据一致性方案
Hello,大家好!我是热爱分享技术的小米。今天探讨在个人项目中如何保证数据一致性,尤其是在缓存与数据库同步时面临的挑战。文中介绍了常见的CacheAside模式,以及结合消息队列和请求串行化的方法,确保数据一致性。通过不同方案的分析,希望能给大家带来启发。如果你对这些技术感兴趣,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
138 6
项目实战:一步步实现高效缓存与数据库的数据一致性方案
|
2月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
3月前
|
缓存 监控 Linux
在Linux中,如何进行数据库调优?
在Linux中,如何进行数据库调优?
|
2天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
10天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
57 3
|
21天前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
2月前
|
消息中间件 缓存 NoSQL
15)如何保证缓存和数据库之间的数据一致性
15)如何保证缓存和数据库之间的数据一致性
57 1
|
3月前
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
|
3月前
|
SQL 关系型数据库 MySQL
在Linux中,如何备份和恢复MySQL数据库?
在Linux中,如何备份和恢复MySQL数据库?

热门文章

最新文章