本示例中采用6节点, 三个master和三个slaves两两成组的方式共同形成一个分布式集群, 对外提供存储服务;
下载 redis, 得到应该是源码, 先进行解压, 然后make即可;
# redis 提供服务时绑定的本机网络地址,可以是多个满足多块网卡分别对外网内网的访问, 按需要改
bind 127.0.0.1
# 提供服务的端口, 供客户端连接
port 7000
# 启动redis服务时,进程pid存储位置
pidfile /opt/redis-cluster/7000/pid/redis_7000.pid
# redis 日志文件所在
logfile "/opt/redis-cluster/7000/pid/log.txt"
# 持久化文件存储目录
dir /opt/redis-cluster/7000/data/
# 开启集群模式
cluster-enabled yes
# 集群模式下的节点配置信息
cluster-config-file nodes.conf
# 集群中各节点间连接超时时间
cluster-node-timeout 5000
# 允许数据持久化追加
appendonly yes
创建 redis-cluster文件夹并分别创建7000,7001....等文件夹,其他六个节点目录
copy 原始的配置文件
分别在6个文件下创建data和pid文件夹
mkdir data
mkdir pid
为什么要创建上面的文件夹呢?
因为我在配置文件里面配置文件路径,不创建会启动报错
然后复制redis.conf到6个文件夹下,并作出相应的更改
最后在复制redis-cli redis-server到redis-cluster下
分别启动这个6个redis
在redis-cluster文件下启动,注意启动必须加配置文件
查询服务
ps -ef|grep redis-server
连接在redis-cluster文件下
./redis-cli -h 127.0.0.1 -p 7000
虽然六个服务都起来了, 但这时他们之间还不知道彼此的存在, 无法组成集群提供服务
./redis-cli -c -p 7000
127.0.0.1:7000> cluster info
cluster_state:fail //集群状态失败
cluster_slots_assigned:0 // hash 槽点分布也是失败的
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
127.0.0.1:7000>
接下来让我们用一个工具 ‘redis-trib.rb’ 将上面的六个节点连接起来
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
其中 gem install redis命令执行时出现了:
redis requires Ruby version >= 2.2.2的报错,查了资料发现是Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2
解决办法是 先安装rvm,再把ruby版本提升
解决办法:
1、安装RVM(具体命令可以查看官网,Ruby官网地址 和 Ruby官网安装教程):
执行命令: gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
2.执行:curl -sSL https://get.rvm.io | bash -s stable
3.执行:find / -name rvm -print
4.执行:source /usr/local/rvm/scripts/rvm
查看rvm库中已知的ruby版本:
5.执行: rvm list known
查看rvm库中已知的ruby版本:
执行:rvm install 2.4.1
使用一个ruby版本:
执行:rvm use 2.4.1
设置为默认版本
rvm use 2.4.1 --default
最后执行:gem install redis
执行src下执行redis-trib.rb
./redis-trib.rb create --replicas 1 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
上面显示已经成功组成集群了, 节点[7000,7001,7002]为三个master, 剩下的[7003,7004,7005]分别为前三者的复制节点, 并且可以看到16384个槽点被全部覆盖分布, 现在再查看下集群状态
启动客户端:
./redis-cli -c -h 127.0.0.1 -p 7000 (必须要加-c启动集群模式)
执行:CLUSTER INFO
最后大功告成
随便存一个key,比如hello value为1
在7005客户端获取hello ,值为1
集群搭建完成!!