赞
踩
另外:主从模式、薪火相传模式,当主机master宕机,导致IP地址发送变化,应用程序中配置需要修改对应的主机地址、端口等信息。
以上问题,之前可以通过代理主机来解决。
但是在redis3.0后,提供了"无中心化集群"配置
解释:
缺点:每一个子服务都需要部署主从模式,使用的服务器数量较高,加大了部署成本。
解释:
由于电脑资源有限,我在1台Linux服务器中,开启6个redis服务(模拟6台服务器分别部署6个redis),搭建两个"1主2从"的集群
6379(master主)、6380(slave从1)、6381(slave从2)
6389(master主)、6390(slave从1)、6391(slave从2)
示例图如下:
mkdir /myredis
我的redis在:/usr/local/redis
cp /usr/local/redis/redis-5.0.5/redis.conf /myredis/redis.conf
在/myredis/redis.conf中,找到:daemonize,改为yes,如下:
配置文件如下:
配置的内容如下(以redis6379服务器为例):
#表示引用redis.conf的配置(把redis.conf看作公共配置文件)
include /myredis/redis.conf
#指定redis服务启动的pid
pidfile /var/run/redis_6379.pid
#指定端口号
port 6379
#指定RDB持久化文件
dbfilename dump6379.rdb
#打开集群模式
cluster-enabled yes
#设定节点配置文件名
cluster-config-file modes-6379.conf
#设定节点失联时间(毫秒),超过该时间,集群自动进行主从切换
cluster-node-timeout 15000
注意:节点配置文件名应为:nodes开头(这样规范),而不是modes,这里我就不改了
如下:
接下来复制redis6379.conf为其他5个配置文件,如下:
执行完成后,目录下结构:
修改其他五个文件的端口,把文件中所有出现过6379的位置改为对应名称的端口,这里以redis6389.conf为例:
当所有的redis配置文件修改完成后,使用命令:
redis-server redis配置文件
如:
全部启动完成,查看redis后台进程:
ps -ef|grep redis
再查看当前目录结构,发现集群节点文件都已生成:
进入到redis安装目录中的src下(我的redis安装在/usr/local/redis/redis-5.0.5):
cd /usr/local/redis/redis-5.0.5/src
把6台redis合为同一个集群,命令如下:
redis-cli --cluster create --cluster-replicas 1 192.168.221.128:6379 192.168.221.128:6380 192.168.221.128:6381 192.168.221.128:6389 192.168.221.128:6390 192.168.221.128:6391
解释:
如下:
redis-cli --cluster create --cluster-replicas 1 192.168.221.128:6379 192.168.221.128:6380 192.168.221.128:6381 192.168.221.128:6389 192.168.221.128:6390 192.168.221.128:6391
方式:
redis-cli -c -p 集群中的任意redis地址
slot:插槽
一个redis集群包含16384个插槽(hashslot),数据库中的每个键(key)都属于这16384个插槽的其中一个
在任意节点中,执行:
cluster nodes
查看集群中的状态:
可以看到16384个插槽被分成了3段(分片):
cluster-require-full-coverage
值:
- yes:当集群中一段插槽的主从都挂掉后,整个集群都挂掉
- no:当集群中一段插槽的主从都挂掉后,集群中的其他redis正常使用,但是集群中的本段插槽内的数据不能使用(包括读、写操作)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。