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剧增

 

posted @ 2015-04-01 21:41  timelesszhuang  阅读(635)  评论(0)    收藏  举报