redis作为当前炙手可热的NOSQL系统,本身就支持主从集群,下面我们就来动手搭建一个一主两从的redis集群。
1.主从模式集群的搭建
1.1 环境准备
这里使用三台服务器,每台服务器上开启一个redis-server和redis-sentinel服务,redis-server端口为6379,redis-sentinel的端口为6800,修改默认端口是安全的第一步。
redis-server说明
10.211.55.102:8000 主
10.211.55.103:8000 从
10.211.55.104:8000 从
redis-sentinel说明
10.211.55.102:8000 主
10.211.55.103:8000 从
10.211.55.104:8000 从
1.2 搭建redis系统
先在三台机器上安装redis,具体步骤可参考Linux下redis安装(单机版): https://blog.csdn.net/Luomingkui1109/article/details/78311328
1.2.1 安装完成后复制redis提供的默认配置文件
cp /usr/local/redis-4.0.14/redis.conf /etc/redis.conf
1.2.2 修改配置文件
cd /etc/
vim redis.conf
1.2.3 主节点10.211.55.102上的配置
port 8000
daemonize yes
bind 10.211.55.102
masterauth 123456
requirepass 123456
pidfile /var/run/redis-8000.pid
logfile /var/log/redis/redis-8000.log
1.2.4 从节点10.211.55.103,10.211.55.104 上的配置
port 8000
daemonize yes
bind 10.211.55.103,#10.211.55.104
requirepass 123456
masterauth 123456
pidfile /var/run/redis-8000.pid
logfile /var/log/redis/redis-8000.log
slaveof 10.211.55.102 8000
注意:redis不会帮我们创建目录,所以在启动之前需要创建目录/var/log/redis
1.3 启动三台机器上的redis
/usr/local/redis/bin/redis-server /etc/redis.conf
1.4 测试
三个redis服务启动完毕后,进入命令行,执行info replication查看当前主从配置
1.4.1 主节点配置:
1.4.2 从节点配置
2.哨兵模式集群的搭建(我们将哨兵模式配置在102机器中,一般在生产中哨兵模式单独一台服务器部署,避免挂点)
模式模式只需要在主从的基础下修改如下参数:
2.1 将sentinel.conf复制到制定的目录
/usr/local/redis/bin/redis-server /usr/local/redis/sentinel.conf
2.2 修改里面的如下参数
哨兵的启动和redis-server的启动没有关系,一个哨兵的集群可以监控多个不同的redis主从实例
2.2.1 sentinel monitor master-name ip redis-port quorum
例:sentinel monitor mymaster 192.168.98.136 6379 1
quorum:quorum个sentinel认为master死了时,才能真正认为该master已经不可用了。(sentinel集群中各个sentinel也有互相通信,通gossip协议)
2.2.2 sentinel auth-pass mymaster mypwd
连接master 需要的密码
2.2.3 down-after-milliseconds
sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了(subjectively down, 也简称为SDOWN)。而这个down-after-milliseconds就是用来指定这个“一定时间范围”的,单位是毫秒。
注:哨兵不会马上进行failover主备切换,因为还要考虑其他哨兵的意见,需要超过某个数量的哨兵都认为master凉凉了,才会准备进行准备切换。在这个时候也不是马上就能failover的,还是需要需要sentinel中的大多数sentinel授权后才可以进行failover
例如,集群中有5个sentinel,票数被设置为2,当2个sentinel认为一个master已经不可用了以后,将会触发failover,但是,进行failover的那个sentinel必须先获得至少3个sentinel的授权才可以实行failover。
如果票数被设置为5,要达到ODOWN状态,必须所有5个sentinel都主观认为master为不可用,要进行failover,那么得获得所有5个sentinel的授权。
2.2.4 protected-mode
这个属性在哨兵设置中很容易出现坑,由于哨兵间需要进行通信进行授权,所以这个属性设置为yes时只可以进行内网访问,看服务器的情况如果主从切换失败了,可以试试把这个属性设置为no。
2.3 启动哨兵
/usr/local/redis/bin/redis-server /usr/local/redis/sentinel.conf --sentine &
2.4 第三步 测试
关掉10.211.55.102: 中redis
会从10.211.55.103或10.211.55.104 中选出主节点
当10.211.55.102 中redis 启动,会加入到从节点中