Redis集群搭建
Redis中的主从复制了解:
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
主从复制的作用主要包括:
1)数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2)故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3)负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
4)高可用(集群)基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
主从复制原理:
1)Slave启动成功连接到Master后会发送一个sync命令。
2)Master接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,Master将传送整个数据文件到Slave,并完成一次完全同步。
3)全量复制:而Slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
4)增量复制:Master继续将新的所有收集到的修改命令依次传给Slave,完成同步。
5)但是只要是重新连接Master,一次完全同步(全量复制)将被自动执行。
集群搭建之前的准备
Linux安装Redis:
1)将tar安装包上传到Linux中的/opt目录下(目录随便,这里使用opt),然后通过 tar -zxvf 命令解压。
2)使用 yum install gcc-c++ 安装C++环境,因为Redis是C++写的。

3)可以查看一下gcc的版本

4)执行 make 命令,会安装很多环境

5)查看Redis的安装路径,手动安装的软件都在 /usr/local/bin 下面

6)在/usr/local/bin 这个当前目录下 使用 mkdir 新建一个文件夹用来存放配置,然后将之前解压开的 Redis 配置文件Copy到当前这个新目录下,之后就使用这个配置文件进行启动。

7)Redis默认不可以通过后台守护进程启动的,所以要修改配置文件,vim redis.conf 进入配置文件并编辑,将 daemonize 修改为 yes
Ps:守护进程就是在退出操作服务的时候也能后台运行。

8)启动Redis服务,返回到之前的 bin 目录下,指定使用 kconfig 目录下的redis.conf文件来启动

9)使用Redis自带的Linux操作客户端去连接启动的服务

10)查看进程是否连接
解析:ps -ef是查看所有进程,而|grep redis是通过管道服务来过滤指定的信息
ps -ef|grep redis

11)如何关闭Redis服务? shutdown

Redis安装完毕,下面正式进入Redis集群搭建。
这里只使用一台服务器搭建一机多服务
1)可以使用 info replication 先查看一下Redis的主从复制信息,可以看到,这边的角色是master,并且没有从机连接。

2)可以看到,当前这边已经开启了四个页面,并且已经Copy了多份 redis.conf 的配置文件,接下来需要逐一修改配置文件中的启动端口号,用来启动多个服务。

修改项: 1.启动端口 2.pidfile 的端口也要匹配当前的启动端口。 3.日志文件的名字需要修改为独有的名字,否则会重复。

4.dbfilename的名字也需要个性化,否则都是一样的名字会造成RDB的备份覆盖。

注意:如果被Copy的文件之前没有将 daemonize 设置为 yes,那么这里每个都要设置一下。
5)去各个窗口,根据不同的端口配置文件启动Redis服务,然后查看启动状态,可以看到,这里启动了3个Redis服务,分别都是不同的端口。

准备开始配置主从节点,默认情况下,每台Redis服务器都是主节点,需要进行配置,将某个节点配置为某个节点的从节点,通俗点说就是让当前服务认一个主机做老大。
6)在6380的连接状态下,使用 slaveof 127.0.0.1 6379 ,指定 127.0.0.1 地址下 的 6379 端口作为自己的主节点。
注意:如果是多个服务器之间的配置,则需要换成公网IP,这里是一台机器则默认127.0.0.1。然后不同的服务器之间连接可能会出现连接不上的问题,可能是密码,端口之类的需要修改配置。

7)再次使用 info replication 查看当前服务的主从信息,会发现角色(role)已经变成了从机(slave),并且显示出了主机的一些信息。

查看主机的主从复制信息,也可以看到从机的一些信息。

注意:真实的从主配置应该在 redis.conf 的配置文件中配置,这样的话才是永久的,我们这里使用的是命令,这是暂时性的,等到下次重启之后,主从配置就没有了!
8)进入从机配置文件中进行配置,文件中先用 /replication 搜索,直接找到配置的位置。

注意:公网IP连接可能会出现连接不上的问题,可能是密码,端口之类的需要修改配置。
细节:主机负责写入,从机只负责读取数据,主机的所有数据都会自动被从机保存进去,从机如果试图写入数据,则会报如下错误,表明当前节点只读。 (error)READONLY_You can't write against a read only replica.
简单的Redis集群搭建完毕,这样就实现了初步的高可用。
集群规则是,如果主机宕机了,那么从机还是会连接着主机,只是不会再有写操作了,如果主机此时恢复,则会自动连接上,并且全量写入数据。
但是一旦出现意外,那么主机的宕机时间是不确定的,如果没有主机,难道就让Redis一直陷入瘫痪吗?所以接下来就需要Redis的哨兵模式,哨兵模式是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
浙公网安备 33010602011771号