redis cluster搭建

    redis 终于推出正式的集群解决方案,最新稳定版本v3.0.2。集群实现目的将不同的key分散到不同的节点上,传统哈希算法hash(key)%n,不适用于添加和删除节点场景,会导致大量的key无法命中,扩展比较困难。redis 没有采用一致性hash,而采用哈希槽( hash slot ) 方式来实现数据共享。

    具体算法:crc16( key )%16384,从而将 16384 个槽分配至不同的节点上。 

 

环境准备:

192.168.5.8     三个redis服务,分别监听 7000 70001 70002  端口

192.168.5.14   三个redis服务,分别监听 7003 70004 70005  端口  

 

一. 配置

#redis.conf
port 7000				#监听端口,集群间通信端口为 10000+7000
cluster-enabled yes		#启用集群
cluster-config-file nodes-7000.conf                    #指定节点配置文件,由redis自动生成管理
cluster-node-timeout 5000				#节点间通信最大超时时间
appendonly yes							#启动aof持久化模式
    

二. 运行

 

192.168.5.8 上启动三个redis实例,分别监听7000,7001,7002 三个端口。192.168.5.14启动实例监听7003,7004,7005三个端口。 

mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 
 
mkdir 7003 7004 7005
 
cd 7000
./redis-server redis.conf 

 

三. 集群

cd $REDIS_SRC/src 
./redis-trib.rb create --replicas 1 192.168.5.14:7000 192.168.5.14:7001 192.168.5.14:7002 192.168.5.8:7003 192.168.5.8:7004 192.168.5.8:7005

   选项 --replicas 1 为每个主机创建一个相应的备机

 

运行该脚本报错,没有配置ruby环境。

./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)

from ./redis-trib.rb:24

 

方法一:用yum安装

 

#yum源安装ruby
yum install -y ruby
yum install -y rubygems
 
# 安装redis库
gem install redis   
ERROR:  could not find gem redis locally or in a repository       #又被墙了,可恶
 
#下载redis库并安装
wget https://rubygems.org/downloads/redis-3.2.1.gem
gem source
gem source -a http://rubygems.org/
gem install redis-3.2.1.gem 
    运行上述命令,报错:[ERR] Sorry, can't connect to node 192.168.5.14:7000,ruby 1.8.5 (2006-08-25) [i386-linux]。运行客户端 ./redis-cli -p 7000 能正常交互,搜索发现是redis官方需要较高的ruby版本。

 

方法二:源码安装

既然用yum不能安装最新版本,还是老老实实用源码安装 

 

#源码安装ruby
wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
tar -xvf ruby-2.2.2.tar.gz
./configure --prefix=/usr/local/ruby-2.2.2
make && make install 
 
gem install redis
    运行上述命令正常,发现 7000,7001,7003 变成主机,7002,7004,7005成为备机。

  

[root@pclient redis]# ./redis-trib.rb create --replicas 1 192.168.5.14:7000 192.168.5.14:7001 192.168.5.14:7002 192.168.5.8:7003 192.168.5.8:7004 192.168.5.8:7005
>>> Creating cluster
Connecting to node 192.168.5.14:7000: OK
Connecting to node 192.168.5.14:7001: OK
Connecting to node 192.168.5.14:7002: OK
Connecting to node 192.168.5.8:7003: OK
Connecting to node 192.168.5.8:7004: OK
Connecting to node 192.168.5.8:7005: OK
>>> Performing hash slots allocation on 6 nodes...
......
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

 

 

测试:

$ redis-cli -c -p 7000#集群交互必须加上-c选项,否则执行出错。

redis 127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
redis 127.0.0.1:7002> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7000
OK
redis 127.0.0.1:7000> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7002
"bar"
redis 127.0.0.1:7000> get hello
-> Redirected to slot [866] located at 127.0.0.1:7000
"world"

  

参考资料:

http://redis.io/topics/cluster-tutorial

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建一个 Redis Cluster 集群的步骤如下: 1. 下载并安装 Redis:在 Redis 官网下载 Redis 并安装。安装完成后,可以通过 redis-cli 命令来测试 Redis 是否正常工作。 2. 配置 Redis:编辑 redis.conf 文件,设置 Redis 的端口号、密码、数据存储路径等参数。如果需要启用集群功能,需要在配置文件中添加 cluster-enabled yes 和 cluster-config-file 路径等配置信息。 3. 创建 Redis Cluster:使用 create-cluster 脚本创建 Redis Cluster,该脚本可以在 Redis 安装目录的 utils/create-cluster 目录下找到。需要指定 Redis Cluster 的端口号、节点数量等参数。例如,执行以下命令可以创建一个 3 个节点的 Redis Cluster: ``` $ create-cluster start --port 7000 --replicas 0 --num-nodes 3 ``` 4. 添加节点:使用 add-node 脚本向 Redis Cluster 添加新的节点。例如,执行以下命令可以将一个新的节点添加到 Redis Cluster 中: ``` $ redis-cli --cluster add-node 127.0.0.1:7000 127.0.0.1:7001 ``` 5. 删除节点:使用 del-node 脚本从 Redis Cluster 删除节点。例如,执行以下命令可以将一个节点从 Redis Cluster 中删除: ``` $ redis-cli --cluster del-node 127.0.0.1:7000 1234567890abcdef1234567890abcdef12345678 ``` 6. 扩展 Redis Cluster:使用 reshard 脚本可以扩展 Redis Cluster 的节点数量。例如,执行以下命令可以将 Redis Cluster 的节点数量扩展到 6 个: ``` $ redis-cli --cluster reshard 127.0.0.1:7000 ``` 在实际应用中,需要根据具体的业务场景和需求,选择合适的 Redis Cluster 集群方案。同时,在搭建 Redis Cluster 集群时,需要考虑到分布式环境下的各种异常情况,如网络延迟、节点故障等,从而设计出高可用、高性能、高可靠的 Redis Cluster 集群方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值