在Linux系统上搭建Redis集群,实现主从同步与哨兵机制

Redis 简介:

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势:

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Linux系统上搭建Redis集群:

1.开启虚拟机

查看ip地址  ifconfig

关闭防火墙 systemctl stop firewalld

打开Xshell4 和Xftp工具连接CentOS系统

/usr  文件夹下创建一个空的文件夹:redis

2.安装

此目录下下载安装包

 通过: wget http://download.redis.io/releases/redis-2.8.17.tar.gz  命令下载

 通过: tar xzf redis-2.8.17.tar.gz  命令解压

进入主文件夹  命令:cd redis-2.8.17

通过: make命令  编译redis主程序

如下图所示即为编译成功

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

下面启动redis服务 

.cd src

./redis-server

如果想关闭的话使用: ps -ef | grep redis   命令来查看进程

出现下图表示成功,此窗口就无法再操作了:

主从同步:

为什么要使用Redis主从同步读写分离

在实际项目中查询是最多的,而频繁的进行数据库查询的话会对数据库造成很大的压力。从而引发缓存雪崩和缓存穿透等问题。虽然Redis的性能也非常强大但在一些请求量大的项目中依然满足不了需求,而我们就配置主从同步和读写分离成倍的提高了Redis的性能。

1.新建从属redis文件夹 redis-slave

2.将redis文件夹中的redis-2.8.17文件拷贝到新建好的redis-slave文件夹中并且复制两份

实现一主两从:

3.修改从redis端口号

修改两个slave文件夹下redis.conf文件:

设置从属关系:

两个文件全改,第二个从redis端口号改为6381。

4.启动两个从redis服务

src文件夹下通过  ./redis-server ../redis.conf  命令启动

哨兵机制:

哨兵机制概述

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

它的主要功能有以下几点

  • redis是否按照预期良好地运行;
  • redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);
  • master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址。

Sentinel支持集群

很显然,只使用单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后(sentinel本身也有单点问题,single-point-of-failure)整个集群系统将无法按照预期的方式运行。所以有必要将sentinel集群,这样有几个好处:

  • sentinel进程宕掉了,依然可以进行redis集群的主备切换;
  • sentinel进程,如果这个进程运行出错,或者是网络堵塞,那么将无法实现redis集群的主备切换(单点问题);
  • sentinel,redis的客户端可以随意地连接任意一个sentinel来获得关于redis集群中的信息。

 

一:修改主redis下sentinel.conf文件

1.配置端口:

在sentinel.conf 配置文件中, 我们可以找到port 属性,这里是用来设置sentinel 的端口,一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。

2、配置主服务器的ip 和端口

我们修改ip地址,并且设置权重值2,这里的权值,是用来计算我们需要将哪一台服务器升级升主服务器

接着修改从redis下sentinel.conf文件,端口号改成一个26380,一个26381。其中服务器的ip和权重比与主redis的配置一致。

二:启动Sentinel

1.启动主redis的Sentinel,在主redis的src目录下通过  ./redis-sentinel ../sentinel.conf  命令启动Sentinel

如图下:

2.在slave文件下的src目录下也通过 ./redis-sentinel ../sentinel.conf 命令启动两个从redis的Sentinel

如下图

三:客户端连接

1.启动自己电脑的redis客户端

2.连接三台redis,port是自己三台redis的端口号,依次改变端口号连接就好

注意这步要关闭自己linux系统中的防火墙,否则将连接不上!

三台redis报红则表示连接成功

四:演示主从同步

我们在主redis中存一条数据

点击save

然后你就会发现,其他从redis的数据也展示了,这就是主从同步

注意:从redis只能负责读取,不能写

演示哨兵机制:

可以通过  ps -ef|grep redis   命令查看redis进程
通过         kill -9 pid               命令杀死主redis进程

当主redis宕机,两台从redis将会选举出来一个主redis顶替死掉的redis。当死掉的redis重新连接时,他就变成了从redis。

 

搭建完成,谢谢观看!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值