场景

redis作为当前炙手可热的NOSQL系统,本身就支持主从集群,基于虚拟机动手搭建一个1主1从的redis集群(哨兵模式)。
redis集群(redis cluster)主要是解决单机数据存储问题,redis集群将数据分布式存储与多台机器上。但是很多情况下,在小用户公司机器不允许的情况下,我们多采用redis主从-哨兵模式。

搭建

1、环境准备

这里使用2台服务器,每台服务器上开启一个redis-server和redis-sentinel服务,redis-server端口为7001,redis-sentinel的端口为6001。

redis-server说明

  • 192.168.1.110:7001 主
  • 192.168.1.111:7001 从

redis-sentinel说明

  • 192.168.1.110:6001
  • 192.168.1.111:6001

2、搭建redis系统

先在三台机器上安装redis,具体步骤可参考虚拟机-搭建3主3从redis集群

安装完成后复制redis提供的默认配置文件

cp /usr/src/redis-4.0.1/redis.conf /usr/local/redis

修改配置文件

cd /usr/local/redis  
vim redis.conf  

主节点192.168.1.110上的配置

bind 192.168.1.100 //(注意:bind的意思不是绑定外部服务器的IP,而是绑定本机可以接受访问的IP)
port 7001 
daemonize yes  //后台进程
requirepass 123456
pidfile redis_7001.pid 
loglevel notice
logfile "/usr/local/redis/redis_7001.log" //日志文件存放目录  
dir /usr/local/redis/    //节点主目录存放位置    

appendonly yes
dbfilename dump.rdb
appendfilename "appendonly.aof"
appendfsync everysec

从节点192.168.1.111上的配置

bind 192.168.1.111 //(注意:bind的意思不是绑定外部服务器的IP,而是绑定本机可以接受访问的IP)
port 7001 
daemonize yes  //后台进程
requirepass 123456
pidfile redis_7001.pid 
loglevel notice
logfile "/usr/local/redis/redis_7001.log" //日志文件存放目录  
dir /usr/local/redis/    //节点主目录存放位置    

#额外补充
masterauth 123456
slaveof  192.168.1.110 7001

appendonly yes
dbfilename dump.rdb
appendfilename "appendonly.aof"
appendfsync everysec

启动2台机器:

./bin/redis-server ./redis.conf

redis服务启动完毕后,进入命令行,执行info replication查看当前主从配置
image.png

如果如上图所示没有发现从节点,很有可能是防火墙没有开放7001端口导致主从节点之间没法通信.

执行以下命令:

firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --zone=public --add-port=6800/tcp --permanent
firewall-cmd --reload

重新查看主从信息:

image.png

3、搭建redis-sentinel系统

首先复制默认的配置文件并修改

cp /usr/src/redis-4.0.1/redis.conf /usr/local/redis  
vim /usr/local/redis/sentinel.conf

内容如下:

protected-mode no
daemonize yes
port  6001
sentinel monitor mymaster 192.168.1.110 7001 1
sentinel auth-pass mymaster 123456
#5秒内master6800没有响应,就认为SDOWN
sentinel down-after-milliseconds mymaster 5000 
sentinel failover-timeout mymaster 15000
logfile  /var/log/redis/sentinel.log
pidfile  /var/run/sentinel.pid

启动redis-sentinel

./bin/redis-sentinel ./sentinel.conf

二、测试

1、主从复制测试

主节点添加数据:

image.png

从节点获取数据
image.png

2、故障转移测试

停掉主节点
image.png

查看redis集群信息
image.png

从节点192.168.1.112升级为主节点

image.png

3、外网测试连接

使用redission做为客户端连接:
image.png

注意此时sentinel监控的master节点或者slave节点的地址也必须是外网地址,
image.png

并且master节点配置改成

protected-mode no

参考:

https://blog.51cto.com/huwho/...


startshineye
91 声望26 粉丝

我在规定的时间内,做到了我计划的事情;我自己也变得自信了,对于外界的人跟困难也更加从容了,我已经很强大了。可是如果我在规定时间内,我只有3分钟热度,哎,我不行,我就放弃了,那么这个就是我自己的问题,因为你自己...