Redis学习总结(6)之高可用(主从、哨兵、集群)搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jokeMqc/article/details/87934779

一、前言

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的三种高可用模式已经给大家讲解完了,大家有什么建议可以在评论区留言,我们大家一起学习一起进步!加油!

猜你喜欢

转载自blog.csdn.net/jokeMqc/article/details/87934779