Redis的主从复制和高可用性

什么是Redis?

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis的一主多从的配置

实验环境:
os:rhel7.3

主机 ip 节点
server1 172.25.62.1 master
server2 172.25.62.2 slave
server3 172.25.62.3 slave

在server1:

server1作为master节点,下面进行配置。
1.获得资源包,解压,安装
资源包从官网下载redis安装包
在这里插入图片描述

[root@server1 redis]# tar zxf redis-5.0.3.tar.gz

解压

[root@server1 redis]# cd redis-5.0.3
[root@server1 redis-5.0.3]# yum install gcc -y
[root@server1 redis-5.0.3]# make        
[root@server1 redis-5.0.3]# make install 

安装。

[root@server1 redis]# cd redis-5.0.3
[root@server1 redis-5.0.3]# yum install gcc -y
[root@server1 redis-5.0.3]# make        #redis里将编译安装放一起
[root@server1 redis-5.0.3]# make install 

在这里插入图片描述
安装完成。
2.初始化,并修改配置文件,启动服务
在这里插入图片描述
初始化,弹出的设定直接默认回车。

[root@server1 utils]# netstat -antlp

在这里插入图片描述
查看6379端口是否打开。

[root@server1 redis-5.0.4]# cd /etc/redis/
[root@server1 redis]# ls
6379.conf
[root@server1 redis]# vim 6379.conf 

在这里插入图片描述
修改配置文件。

[root@server1 redis]# /etc/init.d/redis_6379 restart 

启动服务。

[root@server1 redis]# redis-cli 

在这里插入图片描述
启动后进行测试。添加信息,这样server的配置就完成了。

在server2:

添加slave节点server2。
同样,在server2要安装好redis,然后进行初始化,这里不再重复,之后要修改的配置文件才和server有所不同。

扫描二维码关注公众号,回复: 6392351 查看本文章
[root@server2 redis]# pwd
/etc/redis
[root@server2 redis]# vim 6379.conf
70 bind 0.0.0.0
1379 slaveof 172.25.62.1 6379	

直接在文件最后一行加上slaveof参数以及对应master主机的ip和端口好slave节点就设置好了,同样,添加slave节点server3也是一样的。

[root@server3 redis]# /etc/init.d/redis_6379 restart

添加好节点后重启服务。

[root@server3 redis]# redis-cli

在这里插入图片描述
进入节点查看是否有在master节点添加的信息,如果有,则设置成功了。

redis哨兵(Sentinel)机制-高可用

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
在这里插入图片描述
1.将哨兵配置文件发送到redis的配置目录下,修改哨兵配置文件
在这里插入图片描述
在这里插入图片描述

[root@server1 redis]# vim sentinel.conf 
17 protected-mode no	
84 sentinel monitor mymaster 172.25.26.1 6379 2			#2表示2个slave节点
113 sentinel down-after-milliseconds mymaster 10000 	#等待时间10000ms

修改完文件后将文件给server2和server3也发送一份。

[root@server1 redis]# scp sentinel.conf server2:/etc/redis/	
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/

发送之后就可以打开了。
2.打开哨兵机制

[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server2 redis]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server3 redis]# redis-server /etc/redis/sentinel.conf --sentinel

在这里插入图片描述
在三台主机都打开哨兵机制,可以看到server作为master节点,server3和server3作为slave节点已经加入进来了。
查看节点状态,在server1输入。

[root@server1 ~]# redis-cli 
127.0.0.1:6379> info

在这里插入图片描述
这样也可以看到节点的状态。
测试:
将server1的redis关掉,模拟故障。

[root@server1 redis]# /etc/init.d/redis_6379 stop

在这里插入图片描述

这时,在server3的哨兵机制中可以看到,master已经变为server3了。
在server2中也可以查看。

[root@server2 utils]# redis-cli 
127.0.0.1:6379> info

在这里插入图片描述
server2为slave节点,master为server3.
将server1的服务重新打开,server做为server3的slave节点。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41961805/article/details/90177316