Redis 主从集群搭建+哨兵模式监控

redis分为单机、主从集群、redis cluster集群。

主从集群+哨兵:适合机器少的情况下进行部署。分为三个哨兵、一个主节点、多个从节点。

可以做到:

                Redis主从复制【主节点负责写操作,从节点进行读操作】:

         1.当从库和主库建立MS关系后,会向主数据库发送SYNC命令

     2.主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来

          3.当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis

         4.从Redis接收到后,会载入快照文件并且执行收到的缓存的命令

         5.之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致

                 Redis Sentinel (哨兵)部署:

          1. 监控:监控主从是否正常
   2. 通知:出现问题时,可以通知相关人员
   3. 自动故障迁移:自动主从切换
   4. 统一的配置管理:连接者询问sentinel取得主从的地址

搭建Redis Master(主节点)+slave(从节点):

主节点:

进入redis安装目录,创建redis_master文件夹,并且拷贝redis的可执行文件:redis-cli    redis-server    redis.conf

修改redis.conf配置文件:

# 守护进程模式
daemonize yes 

# pid file 修改pidfile指向路径
pidfile /usr/local/redis-4.0.8/redis_master/redis_master.pid

# 监听端口
port 9001

# 指明日志文件名
logfile "./redis9001.log"

#更改启动ip

bind "启动的ip“

 校验:1.启动master : ./redis-server 全目录路径/redis.conf

            2.查看下redis进程有没有 9001的:ps el|grep redis

            3.   ./redis-cli -h 启动的ip -p 9001

            4.set wu yifan     -> get wu  如果得到”yifan“ 则正确

退出:quit或者exit  。至此主节点启动成功。

从节点:

进入redis安装目录,创建redis_slave文件夹,并且拷贝redis的可执行文件:redis-cli    redis-server    redis.conf

修改redis.conf配置文件  slave的配置和master基本一致,只需要修改相应的pidfile,端口,日志文件名,并配上master的地址和认证密码。

修改redis.conf配置文件:

# pid file

    pidfile  /usr/local/redis-4.0.8/redis_slave/redis_slave.pid

    # 监听端口  

    port 9002

    # 指明日志文件名

    logfile "./redis7002.log"

     # 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

    slaveof 主节点ip 主节点端口 或者 replicaof 主节点ip 主节点端口

     # 当master服务设置了密码保护时,slav服务连接master的密码

    masterauth testmaster123

   #(默认情况下redis数据库充当slave角色时是只读的不能进行写操作 可以在配置文件中开启非只读:slave-read-only no)

 

 校验:1.启动master : ./redis-server 全目录路径/redis.conf

            2.查看下redis进程有没有 9002的:ps el|grep redis

            3.   ./redis-cli -h 启动的ip -p 9002

            4.在主节点set wu yifang     

            5. 在从节点 get wu  如果得到”yifan“ 则正确

退出:quit或者exit  。至此从节点启动成功。

如果失败 检查一下服务器之前的通信 telnet一下看是否可通 还可以通过在redis用info看连接状态

结果演示:

主                                                           从                                                                           从

redis 大key监控 redis 集群监控_服务器

redis 大key监控 redis 集群监控_服务器_02

redis 大key监控 redis 集群监控_Redis_03

 Redis Sentinel (哨兵)部署

 

Sentinel运作机制介绍:Sentinel是Redis的高可用性(HA)解决方案,由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进行下线状态时,

自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。Redis提供的sentinel(哨兵)机制,通过sentinel模式启动redis后,

自动监控master/slave的运行状态,基本原理是:心跳机制+投票裁决(每个sentinel只有一次选举的机会,当主库出现故障,哨兵会投票从库中选出一个承担主库的任务,剩下的还是从库)。

哨兵配置:

进入redis的安装目录 创建sentinel文件夹 拷贝可执行文件 配置哨兵: redis-cli     redis-server    sentinel.conf

修改redis.conf配置文件(三个哨兵相同配置):

port 8002

daemonize yes

pidfile "/var/run/redis-sentinel.pid"

logfile "选择日志输出的位置"

sentinel monitor mymaster 主节点ip 主节点端口 2

sentinel announce-ip 当前哨兵ip

 

sentinel auth-pass mymaster 主节点密码

 

启动哨兵:  redis.server ./sentinel.conf  --sentinel

链接哨兵:redis-cli -h 哨兵ip -p 8001

校验:查看master:  SENTINEL masters 

           查看当前mastrer :SENTINEL get-master-addr-by-name TestMaster

           info sentinel  查看状态及当前主节点

哨兵属性介绍:

# Example sentinel.conf

# port <sentinel-port>
port 8001

# 守护进程模式
daemonize yes

# 指明日志文件名
logfile "./sentinel1.log"

# 工作路径,sentinel一般指定/tmp比较简单
dir ./

# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。
# slaves是自动发现,所以你没必要明确指定slaves。
sentinel monitor MyMaster 127.0.0.1 7001 1

# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds MyMaster 1500

# 若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout TestMaster 10000

# 设置master和slaves验证密码
sentinel auth-pass TestMaster testmaster123

sentinel config-epoch TestMaster 15
#除了当前哨兵, 还有哪些在监控这个master的哨兵
sentinel known-sentinel TestMaster 127.0.0.1 8002 0aca3a57038e2907c8a07be2b3c0d15171e44da5
sentinel known-sentinel TestMaster 127.0.0.1 8003 ac1ef015411583d4b9f3d81cee830060b2f29862