场景
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查看当前主从配置
如果如上图所示没有发现从节点,很有可能是防火墙没有开放7001端口导致主从节点之间没法通信.
执行以下命令:
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --zone=public --add-port=6800/tcp --permanent
firewall-cmd --reload
重新查看主从信息:
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、主从复制测试
主节点添加数据:
从节点获取数据
2、故障转移测试
停掉主节点
查看redis集群信息
从节点192.168.1.112升级为主节点
3、外网测试连接
使用redission做为客户端连接:
注意此时sentinel监控的master节点或者slave节点的地址也必须是外网地址,
并且master节点配置改成
protected-mode no
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。