redis主从,哨兵集群

准备工作:

本文用的linux为centos6.5,redis为5.0.9在两台服务器

redis安装请看https://www.cnblogs.com/fuanyu/p/14604919.html

redis版本:5.0.9

主:172.16.38.225:26379   ,sentinel:26380

主:172.16.38.226:26379   ,sentinel:26380

1. Redis主从同步

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。

2. 配置主从同步

Mater Slave的模式,从Slave向Master发起SYNC命令。

可以是1 Master 多Slave,可以分层,Slave下可以再接Slave,可扩展成树状结构。

2.1 配置Mater,Slave

配置非常简单,只需在slave的设定文件中指定master的ip和port

Master为225,slave为226

在slave的redis.conf修改以下

bind 0.0.0.0
protected-mode no
port 26379
masterauth "123456"
requirepass "123456"
slaveof 172.16.38.225 26379 2

也可以用命令行设定:

在226那台上机执行命令

redis 127.0.0.1:26379> slaveof 172.16.38.225  26379

2.2 同期情况确认

Master:

127.0.0.1:26379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.16.38.225,port=26379,state=online,offset=309,lag=1

  

Slave:

127.0.0.1:26379> INFO replication
# Replication
role:slave
master_host:172.16.38.225

master_port:26379 master_link_status:up master_last_io_seconds_ago:7 master_sync_in_progress:0 slave_repl_offset:365 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0

说明两边的redis是主从关系,在master里执行命令set mylove fu ;在slave里执行命令 get mylove;就会输出fu;

2.3 哨兵配置

因redis自己本来不能自己自动主从切换。此时需要sentinel哨兵来实现自动切换功能

在两台机的sentinel.conf配置如下

port 26380
daemonize yes
sentinel monitor mymaster 172.16.38.226 26379 1
sentinel auth-pass mymaster 123456

pidfile "/var/run/redis-sentinel.pid"
logfile ""
dir "/tmp"
sentinel myid b8f2d588b37248b6adcd063914b470d3d2777899
sentinel deny-scripts-reconfig yes

sentinel config-epoch mymaster 114
sentinel leader-epoch mymaster 114
protected-mode no
sentinel current-epoch 114

sentinel known-replica mymaster 172.16.38.225 6380
sentinel known-replica mymaster 172.16.38.225 26379
sentinel known-sentinel mymaster 172.16.38.225 26380 8a34a71fab3e4cf6ce69d6854df9e651911a1e9a

或者直接在复制/usr/local/redis/redis-5.0.9/sentinel.conf到/usr/local/redis/bin中主

主要修改以下几个地方即可

port 26380
daemonize yes
sentinel monitor mymaster 172.16.38.226 26379 2
sentinel auth-pass mymaster 123456
master和slave都配置好,分别启动sentinel
 ./redis-sentinel sentinel.conf 

启动之后,分别在主从服务器上登录sentinel服务器,执行命令: info sentinel .看到status=ok就是正常的.如下图

2.4。测试哨兵

在master主服务器关掉redis

命令:shutdown

然后在slave从服务器查看redis的角色

INFO replication

大功告成,花了不少时间在这配置及测试。越努力越幸运。。。

本文参考:

https://www.cnblogs.com/ee900222/p/redis_2.html

https://www.cnblogs.com/wiliamzhao/p/14201631.html

https://www.cnblogs.com/zhonglongbo/p/13128955.html



原文地址:https://www.cnblogs.com/fuanyu/p/14641014.html