700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Redis的主从复制与高可用搭建(哨兵模式)

Redis的主从复制与高可用搭建(哨兵模式)

时间:2019-11-21 01:20:06

相关推荐

Redis的主从复制与高可用搭建(哨兵模式)

前言

为什么要使用Redis

首先我们先介绍些redis的基本概念,redis是Nosql数据库,是一个key-value存储系统。虽然redis是key-value的存储系统,但是redis支持的value存储类型是非常的多,比如字符串、链表、集合、有序集合和哈希。

那么为什么要使用类似redis这样的Nosql数据库呢?

1) 当数据量的总大小一个机器放不下时;

2) 数据索引一个机器的内存放不下时;

3) 访问量(读写混合)一个实例放不下时。

单机时代,存储只用一台机器装mysql,如果每次存储成千上万条数据,这样很会导致mysql的性能很差,存储以及读取速度很慢,然后就演变成缓存+mysql+垂直拆分的方式。

Cache作为中间缓存时代,将所有的数据先保存到缓存中,然后再存入mysql中,减小数据库压力,提高效率。

但是当数据再次增加到又一个量级,上面的方式也不能满足需求,由于数据库的写入压力增加,缓存只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。

主从分离模式时代,在redis的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。

Nosql数据库的优势

1)易扩展

这些类型的数据存储不需要固定的模式,无需多余的操作就可以进行横向的扩展。相对于关系型数据库可以减少表和字段特别多的情况。也无型之间在架构的层面上带来了可扩展的能力

2)大数据量提高性能

3)多样灵活的数据模型

实验环境:

一、redis的主从复制

1.下载一个redis的安装包并解压

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

2.切换到redis的安装包安装

(1)安装gcc依赖性

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

(2)make

[root@server1 redis-5.0.3]# make

(3)make install

[root@server1 redis-5.0.3]# ls[root@server1 redis-5.0.3]# make install

(4)切换到utils目录执行安装脚本

[root@server1 redis-5.0.3]# cd utils/[root@server1 utils]# ls[root@server1 utils]# ./install_server.sh

3.可以看到6379端口已经打开

[root@server1 utils]# netstat -tnlp

4.编辑redis的配置文件

[root@server1 utils]# vim /etc/redis/6379.conf 70 bind 0.0.0.0 ##只修改一行

在配置文件中默认的bind接口是127.0.0.1,这样的话访问redis服务只能通过本机的客户端链接,无法通过远程连接,这样可以避免将redis服务暴露再危险的网络环境中,防止一些不安全的人随便远程连接到redis服务,如果将bind接口注释掉将会接受所有来自于可用网络接口的连接

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

5.将编译好的安装目录发送给server2和server3

[root@server1 ~]# scp -r redis-5.0.3 server2:/root[root@server1 ~]# scp -r redis-5.0.3 server3:/root

6.server2和server3

(1)切换到安装目录,直接make install即可

[root@server2 ~]# ls[root@server2 redis-5.0.3]# make install

(2)执行安装脚本

[root@server2 redis-5.0.3]# cd utils/[root@server2 utils]# ./install_server.sh

(3)编辑配置文件,修改一行,添加一行

[root@server2 utils]# vim /etc/redis/6379.conf [root@server2 utils]# /etc/init.d/redis_6379 restart70 bind 0.0.0.01380 slaveof 172.25.6.1 6379

重启服务

server3上的操作与上相同

测试:

server1查看节点信息状态,上传数据

[root@server1 ~]# redis-cli127.0.0.1:6379> info##查看节点信息127.0.0.1:6379> set name peng OK127.0.0.1:6379> get name"peng"127.0.0.1:6379>

server1可以看到自己是master,现在有两个slave,分别是172.25.6.2和172.25.6.3

写入数据

server2上:

[root@server2 utils]# redis-cli127.0.0.1:6379> info##角色为slave

127.0.0.1:6379> get name"peng"127.0.0.1:6379>

server2可以看到它的master指向的是server1,可以查看到server1上传的数据

server3上:

[root@server3 utils]# redis-cli127.0.0.1:6379> info

127.0.0.1:6379> get name"peng"

二、redis的高可用

1.server1将安装目录中的sentinel.conf文件复制到/etc/redis/目录下

[root@server1 ~]# cd redis-5.0.3[root@server1 redis-5.0.3]# ls[root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis/[root@server1 redis-5.0.3]#

2.编辑sentinel.conf文件

[root@server1 redis-5.0.3]# cd /etc/redis/[root@server1 redis]# vim sentinel.conf 17 protected-mode no ##关闭保护模式84 sentinel monitor mymaster 172.25.6.1 6379 2 113 sentinel down-after-milliseconds mymaster 10000 ##连接超时时长,至少多少时间连不上认为主机离线,单位是ms

3.将修改好的文件传给server2和server3

[root@server1 redis]# scp sentinel.conf server2:/etc/redis/sentinel.conf 100% 97129.5KB/s 00:00 [root@server1 redis]# scp sentinel.conf server3:/etc/redis/sentinel.conf

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

4.查看redis的状态信息

[root@server1 redis]# redis-cli127.0.0.1:6379> info

测试:

1.每个节点都执行监控命令

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

可以看到执行后有两行+slave,显示的是两个+slave的信息

server1上:

server2上:

可以看到执行后有两行+slave,显示的是两个+slave的信息

2.重新打开一个shell,ssh连接server1,宕掉server1的redis

[root@server1 ~]# redis-cli127.0.0.1:6379> info# Keyspacedb0:keys=1,expires=0,avg_ttl=0127.0.0.1:6379> shutdown

3.这时可以看到再server2上出现了一个

+switch-master mymaster 172.25.68.1 6379 172.25.68.2 6379

表示master从server1切换到了server2

4.新打开的shell退出server1的连接,连接server2,查看redis的状态信息

可以看到现在的master是server2

连接serever3可以看到master指向的是server2

由此实现了redis集群的高可用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。