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

一.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

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

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


2.启动redis

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



三.安装redis

bind 全网段

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

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


进入redis,创建数据

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

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


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

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

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

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


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

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

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

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

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


五.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哨兵文件

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

server1为主,server2和server3为从

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


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

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

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


3.server1、server2、server3启动哨兵

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

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


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


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



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

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

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

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


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

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

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

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


六.Redis高可用

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

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

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

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

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


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

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

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

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



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

redis-cluster下新建30001-30006

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


配置30001的redis文件

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


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

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


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

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

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

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


查看进程和端口

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

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


5.创建集群

选择yes

三个mastar,三个slave

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

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


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

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

测试:

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

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


7.检测集群状态

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


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

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


恢复节点2,集群正常

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


但30005变为master,30002变为slave

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


9.添加新节点

新建30007和30008

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

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



(1)将30007添加为master

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

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


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

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


平均master槽位

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

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


(2)将30008添加为slave

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

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


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


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

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



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

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





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