redis分片,哨兵,集群

架构图:

redis安装:           #redis端口6379.            路径:/usr/local/src/

编译redis-cli,在redis目录下执行命令:make

安装redis-cli,在redis目录下执行命令:make install

yum -y install gcc automake autoconf libtool make

yum -y install gcc gcc-c++

 

一、redis.conf配置文件基本修改:

1、取消本机绑定

# bind 127.0.0.1

2、关闭保护模式

protected-mode no       

3、开启后台运行

daemonize yes

4、修改密码

requirepass 密码

5.配置日志文件

logfile "/home/redis/logs/redis.log"

 

PS:启动redis                                                                                           #关闭redis

redis-server redis.conf                                                                            kill -9 7643

redis-server &                                                                                          redis-cli shutdown

 

二、redis.conf持久化策略:

RDB配置:                                                                              

1、修改rdb配置文件名称

dbfilename dump.rdb

2、配置持久化文件的路径      #不一定是rdb方式,如果设定了aof方式,路径也在这里配置

dir ./

3.RDB的备份策略

save 900 1           当15分钟内,set操作执行1次时备份1次

save 300 10         当5分钟内,set操作执行10次备份1次

save 60 10000       当1分钟内,set操作执行10000次时备份1次

AOF配置:

1、开启AOF模式

appendonly yes                                             #默认是no,所以默认是RDB方式。改成yes后RDB方式不再生效

2、修改aof配置文件名称

appendfilename “appendonly.aof”

3.AOF的备份策略

appendfsync always   如果执行set操作则持久化一次

appendfsync everysec 每秒持久化一次(默认)

appendfsync no        不做处理

 

三、redis.conf内存策略

1、指定redis内存类型

#maxmemory<bytes>

2、设定内存策略

maxmemory-policy allkeys-lru

#其他的内存策略说明

volatile-lru -> 在设定了超时时间的数据中,查找最近最少使用的数据进行删除

allkeys-lru -> 在所有的key中查询最近最少使用的数据进行删除

volatile-random -> 在设定了超时时间的数据中随机进行删除.

allkeys-random -> 在所有的key中进行随机的删除

volatile-ttl -> 删除最接近超时时间的数据

noeviction ->不做删除处理.只是返回报错信息.

默认使用是第6种,一般最合理用allkeys-lru

 

四、redis默认内存大小

原则:如果需要设定redis的最大的内存.则一般是物理内存的3/4

五、redis.conf读写分离

#redis主从结构默认读写分离

replica-read-only yes

 

分片:

架构图:

1、redis目录下新建shards文件夹后把配置文件复制进去:

cp redis.conf shards/redis-6379.conf

cp redis.conf shards/redis-6380.conf

cp redis.conf shards/redis-6381.conf

 

2、在新的两个redis配置文件中修改成各自的端口:            #因为原来的redis.conf端口就是6379,所以不用修改redis-6379.conf

port 6380 

port 6381

 

3、在shards目录下启动多台redis:

shards]# redis-server redis-6379.conf

shards]# redis-server redis-6380.conf

shards]# redis-server redis-6381.conf

 

#可用ps -ef|grep redis     查看进程

#进入客户端:redis-cli -p 端口号

#关闭服务:redis-cli -p 端口号 shutdown

 

 

哨兵:

 

1、在新的两台不同redis配置文件中修改端口:         

port 6380 

port 6381

masterauth 主机密码

 

分别修改持久化文件名称:    #6379也要修改,因为为了启动生成的appendonly-xxxx.aof统一好看

appendfilename “appendonly-6379.aof”

appendfilename “appendonly-6380.aof”

appendfilename “appendonly-6381.aof”

 

在sentinel目录下启动多台redis:

sentinel]# redis-server redis-6379.conf

sentinel]# redis-server redis-6380.conf

sentinel]# redis-server redis-6381.conf

 

实现主从:

1、登陆从机:redis-cli -h 127.0.0.1 -p 6380 -a 123456

#未设置密码本地登陆:redis-cli -p 6380

#远程登陆(需要也安装有redis):redis-cli -h 192.168.0.211 -p 6380 -a 123456"    

2、主从挂载:6380>SLAVEOF 192.168.0.211 6379

#如果本机无密码登陆,远程挂载时会报错,输入:auth 密码

#6381也一样设置          #取消主从:slaveof no one

#弄完登陆6379查看主机状态info replication,看是否有两个从机在下面了

 

哨兵搭建:

一、把redis根目录下的sentinel.conf复制到已经新建的sentinel目录下

cp sentinel.conf sentinel/sentinel-6379.conf

二、编辑sentinel-6379.conf:

1、去掉注释,关闭保护模式                     

protected-mode no

2、开启后台运行,no改为yes

#redis5.0以下的版本默认没有这个配置,只需要把它加上就行                   

daemonize yes

3、配置哨兵监听的主机ip和推选票数         

sentinel monitor mymaster 127.0.0.1 6379 1        

4、配置连接主机密码

sentinel auth-pass mymaster 主机密码

5、配置当主机宕机后开始推选时间10秒   

sentinel down-after-milliseconds mymaster 10000

6、配置推选失败的超时时间10秒             

sentinel failover-timeout mymaster 10000

 

三、启动哨兵:

sentinel]# redis-sentinel sentinel-6379.conf

四、测试:

1.将主机6379宕机后,检测哨兵是否推选新的主机

2.将主机6379重启后,看6379是否成挂载到推选的新主机下成为从机

 

多哨兵:                #一般要设置奇数台哨兵,因为2台或者双数台哨兵可能会出现平票情况

一、编辑sentinel-6379.conf

1.121行修改推选主机的票数为2

sentinel monitor mymaster 192.168.0.211 6380 2

二、sentinel-6379.conf复制两份:

cp sentinel-6379.conf sentinel-6380.conf

cp sentinel-6379.conf sentinel-6381.conf

三、在新的两个哨兵配置文件中分别修改成各自的端口和序列号:

21行     port 26380

21行     port 26381

第84行修改序列号:

随便改,只要3个哨兵配置文件序列号不同就可以

四、测试:

1.分别启动3台哨兵,再关闭主机,检测哨兵是否正确推选主机

2.启动旧主机,检测主机是否挂载到推选的新主机下成为从机

 

 

集群:

#3个片区,一个片区为一主二从

#redis5.0以下版本的集群需要提前安装好ruby语言环境,因为集群工具redis-trib.rb是ruby语言写的。参考安装链接:

https://blog.youkuaiyun.com/lsxf_xin/article/details/79442198

所以避免麻烦,请与本文一致使用redis5.0+版本

一、在redis目录下创建cluster文件夹,下面创建9个文件夹,命名为7000-7008

cp redis.conf cluster/7000/redis.conf

#这时先执行第二步,再复制。

cp redis.conf ../7001/redis.conf

cp redis.conf ../7002/redis.conf

cp redis.conf ../7003/redis.conf

cp redis.conf ../7004/redis.conf

cp redis.conf ../7005/redis.conf

cp redis.conf ../7006/redis.conf

cp redis.conf ../7007/redis.conf

cp redis.conf ../7008/redis.conf

 

二、在每一个redis.cnf里修改配置:

1、69行取消本机绑定

# bind 127.0.0.1              #加#注释掉

2、88行关闭保护模式

protected-mode no        #yes改为no

3、84行修改端口号

port 7000

4、136行开启后台运行

daemonize yes                #no改为yes

5、158行修改PID绝对路径

pidfile /usr/local/src/redis/cluster/7000/redis-7000.pid

6、263行配置持久化文件的路径

dir /usr/local/src/redis/cluster/7000/            #不一定是rdb方式,如果设定了aof方式,路径也在这里配置

7、597行修改内存策略

maxmemory-policy allkeys-lru

8、699行开启aof持久化策略

appendonly yes                                         #默认是no,所以默认是RDB方式。改成yes后RDB方式不再生效

703行修改aof配置文件名称

appendfilename “appendonly.aof”

9、832行开启redis集群开关

cluster-enabled yes

10、840行启动集群配置

cluster-config-file nodes-7000.conf

11、846行配置超时时间15秒

cluster-node-timeout 15000

 

#小技巧:把7000的redis.conf修改好后,复制到其他目录下,再修改其中的内容;

命令模式下用   :%s/7000/7001/g       可以批量修改配置,这里意思是把7000批量改为7001

 

三、启动集群

1、创建批量启动的shell脚本

touch start.sh

 

编辑start.sh

#!/bin/sh

redis-server 7000/redis.conf &

redis-server 7001/redis.conf &

redis-server 7002/redis.conf &

redis-server 7003/redis.conf &

redis-server 7004/redis.conf &

redis-server 7005/redis.conf &

redis-server 7006/redis.conf &

redis-server 7007/redis.conf &

redis-server 7008/redis.conf &

 

启动命令:sh start.sh

 

2、在redis目录下执行集群命令:

redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007 127.0.0.1:7008 --cluster-replicas 2

 

#若是redis5.0以下版本,在安装好ruby环境后,执行:

./src/redis-trib.rb create --replicas 2 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007  127.0.0.1:7008

#replicas 2表示一个主节点底下有2个从节点

 

3、测试集群:

1.将集群中的主节点关闭,检测是否推选主机;

2.输入数据时,redis中的数据是否有hash一致性的要求;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值