016-学习Redis-主从服用
- 回顾内容:
- 一、主从讲解:
- 1、redis的优缺点
- 2、主从概念-例子:
- 3、主从概念-提出读写分离
- 二、主从服用-读写分离
- 1. 将重复的配置设为公用。
- 2.创建三个私有的配置文件
- 3.启动三个服务器:
- 4.测试主从、读取
- 5、优缺点
- 三、主从服用-哨兵配置
- 1、将哨兵配置文件改为公用。mv移动、修改名字
- 编写公用的配置
- 2、创建三个私有的配置文件
- 3、启动哨兵服务器
- 四、主从服用-主备切换,进行模拟演示:挂掉主服务器
- 1.查看日志
- 2、模拟服务器挂机的状态
- 1.kill -9 master
- 2.master哨兵日志信息:
- 3、重启启动原来的master 6379
- 1.6379发现是slave了
- 2.现在的6381是master
- 4、主从服务器,读写测试:
- 1、主服务器 6381。读写都可以
- 2、从服务器。只读
- 五、集群
回顾内容:
1.搭建单节点的redis:
优点是部署简单。
缺点是读写压力大,全部在一个服务器上面。
没有高可用性,服务器挂掉后,就无法使用了
2.读写分离:
主服务器负责读写
从服务器只负责读,会把读的压力分散出去。
提高了一定的可用性,一个从服务器宕机后,另外两台服务器还可以继续工作。
主从服务器的内容是同步的。
缺点是:
服务器挂掉后,就不能继续写操作了。
3.哨兵机制,主备切换:
监控主服务器有无挂机,挂机后,重新选举主服务器。
缺点是:
1.写的压力没有被分散掉,所有的写的压力都在服务器上面。
2.主服务器通过 发布订阅 形式,那么主服务器有12W条数据,那么从服务器同样有12万条数据。
那么对资源是一种浪费。如何解决? 搭建集群。
4.搭建集群
例如:3台主服务器,3台从服务器。
集群环境如何存储数据:
例如12W条数据,每天服务器存储2W条左右数据。
某个数据如何存储数据呢?
根据hash值计算,例如23800,那么就是进行插入第二个服务器当中。
一、主从讲解:
1、redis的优缺点
安装简单:make预编译–》make install 安装–》配置redis-conf文件
缺点:
1.现在只有一台服务器,读写都在上面,如果访问量比较大,读写压力会很大。
2.当宕机时,就无法使用redis了。
2、主从概念-例子:
小例子:火车站有:售票窗口:赋值卖票出票,自动售票机只负责出票。比如火车站只有一个售票窗口,既卖票又出票,所有的人都需要去一个售票窗口,就会很慢。如果发生某些问题,那么就会停止所有操作。
解决方法:
1.集群概念:开启多个窗口,解决压力。当某一个窗口出了问题,其他窗口还可以继续使用。
2. 主从概念:有101个人,前一百个人是买票的,第101个人是取票的。买票很慢,取票很快。那么自动取票机,就会缓解此事情。窗口相当于主节点。自动取票机是从节点,只负责取票。
3、主从概念-提出读写分离
redis大部分数据是频繁访问的,所以读的压力很大,写的压力是很小的。
数据如何通讯的:发布订阅
先保证通信没有问题:master / slave 通过Ping 、pong来确保相互通信是正常的。
发布订阅:当master发布信息后,其他的所有slave都能接受到信息。
Redis支持主从复用。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。MaterSlave的模式,从Slave向Master发起SYNC命令。
可以是1 Master 多Slave,可以分层,Slave下可以再接Slave,可扩展成树状结构。
因为没有两台电脑,所以只能在一台机器上搭建两个Redis服务端。
这里使用单机来模拟redis 主从服务器 ,实现读写分离配置
二、主从服用-读写分离
- 创建三个目录:mkdir -p /opt/redis/ 日志、数据、配置文件
根据配置文件启动redis服务器。那么就需要有三个配置文件。 - 将redis自带的配置文件(原本),复制到 /opt/redis/conf
cp redis.conf /opt/redis/conf
1. 将重复的配置设为公用。
mv 是移动,就是不指定其他目录,则就是更改文件名。
vim中显示行号:
- 所有ip地址都能访问:
- 保护模式:改为no.
- 端口号:每个主从节点,在自己的配置文件上面,在加上。
- 后台启动:改为yes
- 每个服务器都有进程文件,注释掉
- 关闭日志
- 关闭持久化opt
- 更改日志目录
- 从服务器访问主服务器的密码
- 主服务器登录时,访问的密码
- yes:主服务器是读写,从服务器是只读【正式工作是yes,默认即可】
- no:主从都可以读写
2.创建三个私有的配置文件
- 6379的配置文件:
#引用公共配置
include /opt/redis/conf/redis-common.conf
#进程编号记录文件
pidfile /var/run/redis-6379.pid
#进程端口号
port 6379
#日志记录文件
logfile "/opt/redis/log/redis-6379.log"
#数据记录文件
dbfilename dump-6379.rdb
#追加文件名称
appendfilename "appendonly-6379.aof"
#下面的配置无需在6379里配置
#备份服务器从属于6379推荐配置配局域网IP
#slaveof 192.168.75.100 6379
- 6380的配置文件:
#引用公共配置
include /opt/redis/conf/redis-common.conf
#进程编号记录文件
pidfile /var/run/redis-6380.pid
#进程端口号
port 6380
#日志记录文件
logfile "/opt/redis/log/redis-6379.log"
#数据记录文件
dbfilename dump-6380.rdb
#追加文件名称
appendfilename "appendonly-6379.aof"
#下面的配置无需在6379里配置
#备份服务器从属于6379推荐配置配局域网IP
slaveof 192.168.75.100 6379
- 6381的配置文件:
#引用公共配置
include /opt/redis/conf/redis-common.conf
#进程编号记录文件
pidfile /var/run/redis-6381.pid
#进程端口号
port 6381
#日志记录文件
logfile "/opt/redis/log/redis-6379.log"
#数据记录文件
dbfilename dump-6381.rdb
#追加文件名称
appendfilename "appendonly-6379.aof"
#下面的配置无需在6379里配置
#备份服务器从属于6379推荐配置配局域网IP
slaveof 192.168.75.100 6379
3.启动三个服务器:
- 开启三个服务器:
- 查看主从节点信息:info replication
4.测试主从、读取
- 主节点:能读能写
- 从节点:只能读,不能写
5、优缺点
优点:
- 分散了读的压力
- 提高了一定的可用性:某个从服务器宕机了,其他服务器依旧可以使用。
缺点:
- 主服务器挂机了,就不能支持写操作了。
三、主从服用-哨兵配置
哨兵会去检测整个主从复用,如果主服务器挂掉后,会重新选举slave服务器来当做master服务器。那么挂掉的主服务器,重启后,会是slave服务器。
1、将哨兵配置文件改为公用。mv移动、修改名字
- 赋值哨兵配置文件,到/opt/redis/conf。
从redis解压目录下复制sentinel.conf至/opt/redis/conf/
编写公用的配置
- 注释端口,每个私有配置都有自己的端口
- 后台启动 yes
- 关闭进程、日志文件
- 哨兵监控的服务器地址:
【端口号后面的2】2是什么意思呢?:三个哨兵监控,就需要2个统一选举。
5个哨兵,需要3确实统一选举。 - 连接主服务器的密码
- 如何判断主节点有无挂掉?
例如只有一秒网络不好,master没有连接上。并不能立马去选举。
判断连续30秒,没有连接上,那么需要进行选举。
本人设为10秒,当哨兵连续30秒都没有ping通,则重新进行选举。 - 当哨兵出现选举不成功时,默认180秒后重新选举
2、创建三个私有的配置文件
#引用公共配置
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26379
#进程编号记录文件
pidfile /var/run/sentinel-26379.pid
#日志记录文件(为了方便查看日志,先注释掉,搭好环境后再打开)
logfile "/opt/redis/log/sentinel-26379.log"
#引用公共配置
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26380
#进程编号记录文件
pidfile /var/run/sentinel-26380.pid
#日志记录文件(为了方便查看日志,先注释掉,搭好环境后再打开)
logfile "/opt/redis/log/sentinel-26380.log"
#引用公共配置
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26381
#进程编号记录文件
pidfile /var/run/sentinel-26381.pid
#日志记录文件(为了方便查看日志,先注释掉,搭好环境后再打开)
logfile "/opt/redis/log/sentinel-26381.log"
3、启动哨兵服务器
四、主从服用-主备切换,进行模拟演示:挂掉主服务器
1.查看日志
当主节点宕机后,需要两个哨兵认为是宕机了, 才进行主备切换
tail -f /opt/redis/log/sentinel-26379.log
2、模拟服务器挂机的状态
1.kill -9 master
- 查看master信息
连接失败
2.master哨兵日志信息:
sdown:主服务器下线了
odown:3个哨兵,2个哨兵说已经下线了。
tyr :尝试重新连接服务器,连接失败。
seelct:选择了6381服务器,为主服务器
3、重启启动原来的master 6379
。
1.6379发现是slave了
2.现在的6381是master
4、主从服务器,读写测试:
1、主服务器 6381。读写都可以
2、从服务器。只读
五、集群
3台主服务器,3台从服务器。
集群环境如何存储数据:
例如12W条数据,每天服务器存储2W条左右数据。
某个数据如何存储数据呢?
根据hash值计算,例如23800,那么就是进行插入第二个服务器当中。