一、Redis介绍
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
二、什么事主从复制?
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
三、主从复制的作用
- 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
- 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
- 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
- 读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量;
- 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
主从配置:
实验环境:
首先我这里准备了3台redis
IP:172.17.0.5
IP:172.17.0.6
IP:172.17.0.7
1.进入redis中查看 redis-cli
2.查看现在redis角色
info replication
现在三台现在都是master。
3.配置主从,选择一台当master主节点 ,其他的2台当做slave从节点
我这里选择的172.17.0.7为master主节点,其他的2台配置slave从节点
配置slave节点
127.0.0.1:6379> SLAVEOF 172.17.0.7 6379
进入172.17.0.7服务查看状态,已经配置好2台
从服务器状态
可以先测试一下
配置到此redis 主从配置已经成功
注意:
配置了主从后,从节点服务不能执行set操作
四、配置Sentinel哨兵
增加配置文件Sentinel.conf
可以从官网下载
wget http://download.redis.io/redis-stable/sentinel.conf
修改配置sentinel.conf # 添加守护进程模式 daemonize yes # 修改工作目录 #logfile "/etc/redis/redis.conf/log/sentinel-36379.log" # 修改启动端口 这里是 哨兵端口,不要和redis端口冲突 port 26379 # 添加关闭保护模式 protected-mode no # 修改sentinel monitor 名称 主ip 端口 选举票数 sentinel monitor redis-master 172.17.0.7 6379 1
redis-sentinel sentinel.conf
启动成功,现在断掉主master服务
主节点已经替换为172.17.0.5 这台机子
docker 目录无权限时
在docker run一个容器时,加上 --privileged=true