redis 集群实例
1、 集群的作用
1: 主从备份 防止主机宕机
2: 读写分离,分担master的任务
3: 任务分离,如从服分别分担备份工作与计算工作
2、redis集群
3、主从通信过程
4、redis主从复制配置
Master配置:
1:关闭rdb快照(备份工作交给slave)
2:可以开启aof
slave配置:
1: 声明slave-of
2: 配置密码[如果master有密码]
3: [某1个]slave打开 rdb快照功能
4: 配置是否只读[slave-read-only]
5、详细配置实例 主服务器负责插入更新操作,总服务器主要负责 查询操作 以及主服务器挂掉的时候充当主服务器。
root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# cp redis.conf redis6380.conf
root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# cp redis.conf redis6381.conf
配置端口为6380 从服务器 如下 可以产生rdb aof 不必产生, 主服服务器产生rdb aof 就可以。
//配置pid文件 pidfile /var/run/redis6380.pid //配置端口信息 port 6380 //配置master服务器 slaveof localhost 6379 //修改生成的rdb的文件名 dbfilename dump6380.rdb //rdb文件的路径 可以不修改 本文章只是演示 dir ./ //屏蔽aof appendonly no appendfilename "appendonly.aof"
配置端口为6381 从服务器 配置。
//注释 不生成rdb文件 #save 900 1 #save 300 10 #save 60 10000 //配置pid文件 pidfile /var/run/redis6381.pid //配置端口信息 port 6381 //配置master服务器 slaveof localhost 6379 //不生成aof文件 appendonly no appendfilename "appendonly.aof"
主服务器配置
slave-read-only yes //aof生成配置 appendonly yes appendfilename "appendonly.aof" appendfsync everysec //标志从服务器只能读操作 slave-read-only yes
启动各个服务器
root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# redis-server ./redis.conf root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# redis-server ./redis6381.conf root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# redis-server ./redis6380.conf root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# ps -aux |grep redis root 12862 0.1 0.1 31628 7440 ? Ssl 21:01 0:00 redis-server *:6379 root 12866 0.1 0.1 31680 7544 ? Ssl 21:01 0:00 redis-server *:6381 root 12871 0.1 0.1 31680 7544 ? Ssl 21:01 0:00 redis-server *:6380 root 12877 0.0 0.0 6120 820 pts/11 S+ 21:01 0:00 grep --color=auto redi
首先介绍一下 redis-cli 命令 可以使用 redis-cli -h host -p port 连接指定的服务器
主服务器 默认端口
root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# redis-cli 127.0.0.1:6379> set a 1000 OK 127.0.0.1:6379> get a "1000" 127.0.0.1:6379> keys * 1) "a"
从服务器 6380
root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis# redis-cli -h localhost -p 6380 localhost:6380> keys * 1) "a" localhost:6380> get a "1000"
从服务器 6381
timeless@timeless-HP-Pavilion-g4-Notebook-PC:~$ redis-cli -h localhost -p 6381 localhost:6381> keys * 1) "a" localhost:6381> get a "1000"
在指定的 rdb文件目录下面 发现多了 appendonly.aof dump6380.rdb redis6380.conf redis6381.log redis6381.conf 等文件 到此说明基本的配置完成。
测试一下 从服务器是不是只能读操作: 因为前边主服务器配置:slave-read-only yes
localhost:6381> set a 100 (error) READONLY You can't write against a read only slave.
6、一般的redis服务器 都是在内网内运行,外网只需要加强防护就可以了。下面对主从复制 中带密码的操作配置分享一下:
主服务器配置: 该选项在安全配置中 表示需要密码
requirepass xxxxxx
从服务器中配置
masterauth xxxxxx
redis-cli登录时候
timeless@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/redis$ redis-cli 127.0.0.1:6379> keys * (error) NOAUTH Authentication required. 127.0.0.1:6379> auth xxxxxx //需要执行该操作来认证 OK 127.0.0.1:6379> keys * 1) "a"
7、redis主从复制的缺陷
缺陷:
每次salave断开后,(无论是主动断开,还是网络故障)
再连接master
都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍.
多台slave不要一下都启动起来,否则master可能IO剧增
赞助我写出更好的博客

浙公网安备 33010602011771号