今天学习一下Redis集群,顺便整理总结一下
一、准备
-
已经装好redis的linux机器
-
连接ssh工具(笔者采用的MobaXterm)
-
redis 主从复制的缺陷
二、集群的好处
- 主从备份、防止主机宕机
- 读写分离,分担master的任务
- 任务分离,使得不同服务器分担不同备份工作与计算工作
三、集群的方式
四、实战
这里打算采用第一个方式进行集群(主从备份)
一个master 两个 slave
下载和安装Redis这里就叙述了,主要集群本身
笔者环境:
安装redis的home目录是: /usr/local/redis
该文件下有一个redis.conf配置文件(这个就是今天重点)
-
步骤1:copy 两份 redis.conf配置文件 分别命名为redis6380.conf 和 redis6381.conf (这里redis服务是以端口区分)redis.conf 启动是master, redis6380.conf和redis6381.conf是slave
-
步骤2、修改redis6380.conf配置文件
vim redis6380.conf
1、修改端口和pid
2、从服务器只读
3、关掉aof备份
4、设置slave的主人是谁
4
5、开启Rdb备份(这个比较耗IO,一般由slave去做)
6、:wq! 保存结束
- 步骤3、修改redis6381.conf配置文件
vim redis6381.conf
这个跟上面差不多
1、关闭rdb备份和aof备份
2、设置端口为6381
3、从服务器只读
4、设置slave的主人是谁
- 步骤三、修改redis.conf
1、关闭Rdb备份(同上上图)
2、开启aof备份
3、:wq! 保存退出 - 步骤四 启动三个redis服务器
连上master服务器设置一个值 set name zhangsan
另外开一终端: 连接上slave 6380 端口的服务器,获取 name的值,同时发现不能设置
6381也是类似的
这里基本完成redis集群功能了,你可能会发现这样好像不安全,谁都可以连,这时候可以设置master的密码
我们编辑redis.conf文件
pkill -9 redis (关闭所有redis服务) 通过 auth 授权输入密码
我们重新启动 slave服务 看看还能不能同步到这个值
结果发现得到是nil ,因为master需要密码才可以登录,slave没有密码怎么登录,所有需要修改slave的配置redis6380.conf 和redis6381.conf文件
修改slave配置文件的密码保存退出,重新启动,就可以收到master设置的值
五 总结
Master配置:
1:关闭rdb快照(备份工作交给slave)
2、可以开启aof
slave 配置
1、声明slave-of
2、配置密码【如果master有密码】
3、【某个】slave打开rdb快照功能
4、配置是否只读【slave-read-only】
六 redis 主从复制的缺陷
每次slave断开之后(无论是主动断开,还是网络故障)
再连接master
都要master全部dump出来rdb,再aof, 即同步的过程都要重新执行1遍,
所以要记住—多台slave不要一下都启动起来,否则master可能IO剧增