目录
实验零点五、Redis主从复制
——这个实验是后面实验的基础,所以称之为实验零点五
实验前准备
Master节点:192.168.188.14
Slave节点1:192.168.188.15
Slave节点2:192.168.188.16
关闭防火墙
systemctl stop firewalld
setenforce 0
安装Redis
- 安装依赖环境
yum -y install gcc gcc-c++ make - 安装软件
cd /opt/redis-5.0.7/
make
指定目录
make PREFIX=/usr/local/redis install
cd /opt/redis-5.0.7/utils
执行安装脚本
./install_server.sh
一路回车,最后path改一下
做一个软链接
ln -s /usr/local/redis/bin/* /usr/local/bin
修改Master上的Redis配置文件
- 打开
vim /etc/redis/6379.conf redis.conf - 修改监听地址为0.0.0.0,即任意地
开启守护进程
指定日志文件目录
指定工作目录
开启AOF持久化功能 - 重启服务
/etc/init.d/redis_6379 restart
修改Slave上的Redis配置文件
- 打开
vim /etc/redis/6379.conf - 修改监听地址
开启守护进程
指定日志文件目录
指定工作目录
指定要同步的Master节点的IP和端口
开启AOF持久化功能 - 重启服务
/etc/init.d/redis_6379 restart
验证
- 在Master节点上查看日志
tail -20 /var/log/redis_6379.log
20条应该能看到了,看不到就多看几条,能看到下面这样就行 - 在Master节点上验证从节点
redis-cli info replication
实验一、Redis哨兵模式
——本实验建立在实验零点五的基础上,前面的配置过程请看上一个实验
实验前准备
Master节点:192.168.188.14
Slave节点1:192.168.188.15
Slave节点2:192.168.188.16
关闭防火墙
systemctl stop firewalld
setenforce 0
修改Redis哨兵模式的配置文件
- 进入
vim /opt/redis-5.0.7/setinel.conf - 三台节点配置相同,如下:
关闭保护模式
默认监听端口
指定sentinel后台启动
指定日志存放目录
指定数据库存放路径
指定该哨兵节点监控,指定192.168.188.14为主节点,节点名为mymaster,2表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
判定服务器down的时间周期,单位毫秒
故障节点的最大超时时间,单位毫秒 - 启动哨兵模式
先启动Master,再启动Slave
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf & - 查看哨兵信息
redis-cli -p26379 info Sentinel
故障模拟
- 先查看一下Master上的redis的进程号,方便一会杀掉
ps -elf | grep redis
第一个就是redis-server的进程号,直接杀掉
kill -9 42014 - 验证结果
tail -50 /var/log/sentinel.log
这一长串看不懂没事,直接看一下哨兵信息,更加直观
redis-cli -p 26379 info Sentinel
能看到主节点地址已经更换了
实验一点五、Redis集群模式
——本实验需要6个节点,3主3从,但是考虑到我电脑性能,决定把6个服务部署在一台虚拟机上,并以端口号进行区分
实验前准备
主节点:192.168.188.14:6001、192.168.188.14:6002、192.168.188.14:6003
从节点:192.168.188.14:6004、192.168.188.14:6005、192.168.188.14:6006
关闭防火墙
systemctl stop firewalld
setenforce 0
准备6个服务
创建6个目录
cd /etc/redis
mkdir -p redis-cluster/redis600{1..6}复制配置文件
for i in {1..6}
do
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$i
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$i
done
开启集群功能
- 修改配置文件,每个服务的配置文件除了端口其他都一样
cd /etc/redis/redis-cluster/redis6001
vim redis.conf
在这里把监听地址注释掉,默认监听所有网卡
关闭保护模式
改一下端口,注意端口要不一样
开启守护进程
取消注释,打开集群功能
取消注释,设置集群文件的名称
取消注释,设置集群超时时间
开启AOF持久化 - 启动各个redis节点
for d in {1..6} do cd /etc/redis/redis-cluster/redis600$d redis-server redis.conf done
查看一下进程
ps -elf | grep redis - 启动集群
我用的是同一台虚拟机的不同端口,所以写的是127.0.0.1:6001-6,如果用的是多台虚拟机,只要把127.0.0.1改成相应的IP,端口也改成相应的端口就行,replicas 1代表每个主节点有1个从节点redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1
测试
- 使用redis
加-c节点之间就可以互相跳转
redis-cli -p 6001 -c
看一下节点的哈希槽编号范围
cluster slots - 读写测试
写一条数据
set name tangshihong
提示我们写入了127.0.0.1:6002,同时也跳转到了127.0.0.1:6002
我们退出
quit
去别的节点看一下
redis-cli -p 6003 -c
看一下当前节点的key值
keys *
看不到就是对的