一、前言
Redis的发展可以从版本的变化看出来,从1.X的主从模式,到2.X的哨兵模式,再到今天3.X的集群模式,可以说这些都是Redis保证数据可靠性、高可用的思路。下面我们来简单实践下。环境说明:这里准备了4台Centos Linux,装有redis的3.0版本。
二、主从模式搭建
Redis早期用于保证数据可靠性的一种简单方式。具体来说,Master可用于写、读,而Slave一般只用于读。
其实在配置上相当简单,只需要在Slave节点配置下Master的IP、PORT、密码即可。
三、哨兵模式
对于主从复制模式而言,有个明显的缺点:一旦主节点挂了,那么redis服务将不可用。在2.X中,为了确保可高用,所以发展出来哨兵模式。顾名思义,就是哨兵站岗,去监听master心跳,如果master挂了,那么将从slave中选举出一个master来,从而实现了故障自动切换。
实质上,在Master-Slave模式基础上,只需要在启动一个哨兵服务进行监听就可以,这个哨兵服务可以部署在Master/Slave上,也可以部署到其他机器上。当然,在实际中为了避免哨兵节点的单点性,也会配置多个哨兵服务。
哨兵节点192.168.99.124 sentinel.conf:
sentinel monitor mymaster 192.168.99.121 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 2
我们需要告诉哨兵服务:
监控的主节点的IP,PORT如果master挂了,那么选举的时候,slave达到多少票就可以成为主节点、监控主节点的心跳频率
主节点下有多少slave。
四、Redis3.X集群模式搭建
为了让redis集群模式能够正常的运作,至少需要三个主节点,在这里我们需要创建6个节点,三个主节点,三个从节点,对应redis节点的ip与端口如下:
192.168.142.128:7001
192.168.142.128:7002
192.168.142.128:7003
192.168.142.128:7004
192.168.142.128:7005
192.168.142.128:7006
注意:在正常的生产环境中,最好的是试用6台机器,每台机器存放一个redis节点,这里只是做演示,就只是在一台机器上做集群了。
第一步:在/usr/local/redis-cluster创建对应以上700-7006对应的6个文件夹,如图:
第二步:将对应redis.conf拷贝到各个文件夹中,然后分别进行修改各个文件的内容,也就是对700*下的各个redis.conf的文件内容修改,修改的内容如下:
第三步:由于redis集群需要ruby命令,所以我们需要安装ruby
1.yum install ruby
2.Yum install rubygems
3.gem install redis (安装redis和ruby的接口)
第四步:分别启动每一个redis实例,然后查看每个reids实例是否已经全部启动。
ps -ef|grep redis
第五步:到redis的安装目录下/usr/local/software/redis-3.0.0/src执行命令./redis-trib.rb
./redis-trib.rb create --replicas 1 192.168.142.128:7001 192.168.142.128:7002 192.168.142.128:7003 192.168.142.128:7004 192.168.142.128:7005 192.168.142.128:7006
需要注意的是1是主节点跟从节点的比例,前面的服务器为主服务器,后面的为对应的从服务器,例如192.168.142.128:7001为主服务器,他的从服务器为192.168.142.128:7004,192.168.142.128:7002是主服务器,他的从服务器为192.168.142.128:7005,192.168.142.128:7003是主服务器,他的从服务器为192.168.142.128:7006。
执行后,redis会返回对应的配置信息,为每台服务器生成一个uuid,如果确认对应的配置,输入yes即可。
Redis返回信息中提示目前有16384个槽可供使用。
第六步:启动redis客户端
redis-cli -h 192.168.142.128(IP地址) -p 7001(端口号) -c
第七步:进行读写操作,需要注意的是
需要注意的,在7001的这个端口的redis是没有存储name这个值,但是直接get是可以获取得到对应的值的。
而再对应的从服务器中也是可以找到对应的值(主从同步)
至此、redis的三种高可用模式已经给大家讲解完了,大家有什么建议可以在评论区留言,我们大家一起学习一起进步!加油!