Redis Cluster介绍
Redis Cluster是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。更多信息参考官网http://www.redis.cn/
查看下端口范围,(这个非必要,下边实验用到的端口不再系统内置使用端口范围内1-1024)
[root@host5 ~]# sysctl -a |grep range
net.ipv4.ip_local_port_range = 32768 61000
net.ipv4.ping_group_range = 1 0
修改下:
sysctl -w net.ipv4.ip_local_port_range="1024 65535"
sysctl -p
1.实验前确保已经安装了redis服务
1.1新建rediscluster目录
cd /usr/local/
mkdir rediscluster
cd rediscluster/
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
1.2进入到每个子目录内新建文件redis.conf
这里以7001为例
cd /usr/local/rediscluster/7001
vim redis.conf
port 7001 监听的端口
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes 日志的方式
daemonize yes 打入后台执行
其他操作同此,每个子目录内的配置文件port不同
1.3进入到每个子目录内执行下边的命令
redis-server redis.conf
ps ax ##查看进程
其他节点操作同此
2.进入到安装redis时解压的目录中的src中
cd /root/redis-4.0.8/src
cp redis-trib.rb /usr/local/bin/ ###要使用redis-trib.rb这个命令
3.安装以下包
yum install
ruby-2.2.3-1.el6.x86_64.rpm
rubygems-1.3.7-5.el6.noarch.rpm
libyaml-0.1.3-4.el6_6.x86_64.rpm
4.下载redis-4.0.1.gem,gem是一种文件组织的包,一般的ruby的很多插件都有由这种各种的包提供
[root@host5 ~]# gem install --local redis-4.0.1.gem ##redis-4.0.1.gem在我的家目录中,注意文件路径问题
gem list
5.创建集群
redis-trib.rb create --replicas 1 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
###以下内容表示成功
6,登录进去,主从都可以写,只是从写的数据会自动迁移
redis-cli -c -p 7001
info ##产看当前redis集群节点信息
cluster info ##查看集群信息
cluster nodes ##查看节点
redis-trib.rb info 127.0.0.1:7001 查看指定节点信息
7001节点是matser,slave为7005,slave在线
至此rediscluster搭建完成
二.node的增添与删除
增加slave节点(法1)
同一开始一样,新建7007,编写配置文件,启动
cd /usr/local/rediscluster/
mkdir 7007
cd 7007
vim redis
port 7007
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
redis-server redis.conf
redis-trib.rb check 127.0.0.1:7001
发现目前三从三主
redis-trib.rb add-node --slave 127.0.0.1:7007 127.0.0.1:7001
###增加slave节点7007主为7001
redis-trib.rb check 127.0.0.1:7007 ###查看7007的状态,注意id
增加从节点(法2)
新建7008节点
redis-trib.rb add-node --slave --master-id e7c8aa9bb2f760f8f32ecb4fd196e841927a47ba 127.0.0.1:7008 127.0.0.1:7001
##--slave,表示添加的是从节点
##--master-id 49d30a1b09af1e055aa9c5bab6a7c1e6d8e7d198 主节点的node id, 7001主节点
##127.0.0.1:7008,新节点
##127.0.0.1:7001 集群任一个旧节点,通信用
增加主节点
redis-trib.rb add-node 127.0.0.1:7009 127.0.0.1:7002
##127.0.0.1:7009 增加的主节点
##127.0.0.1:7002 通信用
7009主节点没有hash槽,重新分配
redis-trib.rb reshard 127.0.0.1:7009
##回车后,输入分配的大小(1000),7009的id,选择all,yes,yes
redis-trib.rb check 127.0.0.1:7009
##查看7009节点信息
删除节点
redis-trib.rb del-node 127.0.0.1:7008 5ec7c8c3c42087fe52306632acf9d6b7fd399233 ##要删除的节点id
没7008节点了
如果主节点有从节点,删除该主节点后从节点转移到其他主节点