Redis-Cluster实战--5.使用redis-cli安装
Redis-Cluster实战--.使用redis-cli安装 博客分类: redis
缓存
redis-cluster
redisCluster指派槽cluster-infomeetslots
转载请注明出处哈:http://carlosfu.iteye.com/blog/2240426 安装视频: 8.2. redis-cluster安装1 8.2. redis-cluster安装2 8.2. redis-cluster安装纠正 一、目的
为什么官方提供了ruby构建集群工具,还要实现一个redis-cli版的集群构建?
答案很简单:
. 熟悉redis-cluster的集群命令和协议(作者给的ruby工具都是在这些命令组合起来)
. 更好的理解redis-cluster
注意:
本文档只为了演示redis-cli搭建Redis-Cluster,实际大集群还是以工具(例如ruby, 其他语言封装的自动化安装工具为第一选择)。 二、准备redis(下载、编译、安装、配置目录、数据目录) . 下载、编译、安装 Java代码
cd /opt/soft
wget http://download.redis.io/releases/redis-3.0.3.tar.gz
tar xzf redis-3.0..tar.gz
cd redis-3.0.
make
make install . 配置目录、数据目录 Java代码
cd /opt/soft/redis-3.0.
mkdir -p data
mkdir -p conf .建立软链接: Java代码
ln -s /opt/soft/redis-3.0. /opt/soft/redis 二、配置、启动Redis节点(本例子以3主、3从组成Redis-Cluster) 实际中应该在多台机器进行安装,这里为了方便演示只用了一台机器,ip=10.10.53.159。 . 配置redis节点,在conf目录下添加6个(-)redis-${port}.conf作为6个节点的配置文件 其中8000-8005是六个端口号 Java代码
port
cluster-enabled yes
cluster-config-file nodes-.conf
cluster-node-timeout
dir "/opt/soft/redis/data/"
appendonly yes
appendfilename "appendonly-8000.aof"
logfile "8000.log"
daemonize yes
pidfile /var/run/redis-.pid
dbfilename "dump-8000.rdb" 生成另外5个文件 Java代码
sed 's/8000/8001/g' redis-.conf > redis-.conf
sed 's/8000/8002/g' redis-.conf > redis-.conf
sed 's/8000/8003/g' redis-.conf > redis-.conf
sed 's/8000/8004/g' redis-.conf > redis-.conf
sed 's/8000/8005/g' redis-.conf > redis-.conf . 启动6个节点。 Java代码
redis-server /opt/soft/redis/conf/redis-.conf
redis-server /opt/soft/redis/conf/redis-.conf
redis-server /opt/soft/redis/conf/redis-.conf
redis-server /opt/soft/redis/conf/redis-.conf
redis-server /opt/soft/redis/conf/redis-.conf
redis-server /opt/soft/redis/conf/redis-.conf . 查看节点是否都已经启动: Java代码
[@zw_53_162 conf]# ps -ef | grep redis
root : ? :: redis-server *: [cluster]
root : ? :: redis-server *: [cluster]
root : ? :: redis-server *: [cluster]
root : ? :: redis-server *: [cluster]
root : ? :: redis-server *: [cluster]
root : ? :: redis-server *: [cluster] . 查看单个节点:(此时六个节点是分散的,没有形成集群,所有cluster_state=fail) Java代码
[@zw_53_162 conf]# redis-cli -c -p
127.0.0.1:> cluster info
cluster_state:fail
cluster_slots_assigned:
cluster_slots_ok:
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes:
cluster_size:
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_sent:
cluster_stats_messages_received: 四、利用redis-cluster meet命令,实现节点握手,组成集群: cluster meet <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 . 利用redis-cli连接到8000,然后meet - Java代码
redis-cli -c -p cluster meet 10.10.53.159
redis-cli -c -p cluster meet 10.10.53.159
redis-cli -c -p cluster meet 10.10.53.159
redis-cli -c -p cluster meet 10.10.53.159
redis-cli -c -p cluster meet 10.10.53.159 五、分配槽(slots)给节点: . 分派slots cluster addslots <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。 redis-cli -c -p cluster addslots ... (redis-cli 未实现0-5462这样的参数,必须一个个输入。) 所以利用shell生成最终的命令addslots.sh: Java代码
start=$
end=$
port=$
for slot in `seq ${start} ${end}`
do
echo "slot:${slot}"
redis-cli -c -p ${port} cluster addslots ${slot}
done 执行: sh addslots.sh
sh addslots.sh
sh addslots.sh . 确认cluster当前状态 . Java代码
127.0.0.1:> cluster info
cluster_state:ok
cluster_slots_assigned:
cluster_slots_ok:
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes:
cluster_size:
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_sent:
cluster_stats_messages_received: . 确认分配槽状态: Java代码
127.0.0.1:> cluster nodes
6690722c4536210a231af4bdceb604e83d53403e 10.10.53.159: master - connected -
4d2842d9f846481783eafbd9135df372e2153307 10.10.53.159: myself,master - connected -
caefaab1e5d01d76a728c84cb1dc285a6aab15a6 10.10.53.159: master - connected
ec403c50e59460bcb0b47906e567423b7d9aed50 10.10.53.159: master - connected
a52b9d211ec06190bcc4ab36eecf643fa13aa215 10.10.53.159: master - connected
c05ebacbeeb6cbcf52a6ac60384891586226f131 10.10.53.159: master - connected - 127.0.0.1:> cluster slots
) ) (integer)
) (integer)
) ) "10.10.53.159"
) (integer)
) ) (integer)
) (integer)
) ) "10.10.53.159"
) (integer)
) ) (integer)
) (integer)
) ) "10.10.53.159"
) (integer) 六、配置主从关系(保证高可用): cluster replicate <node_id> 将当前节点设置为 node_id 指定的节点的从节点。 8003设置成8000的从 8004设置成8001的从 8005设置成8002的从 注意这里的命令不是slaveof
<node_id>不是ip:port的形式,需要查询cluster nodes查找自己的node_id(myself) Java代码
redis-cli -c -p cluster replicate `redis-cli -c -p cluster nodes | grep | awk '{print $1}'`
redis-cli -c -p cluster replicate `redis-cli -c -p cluster nodes | grep | awk '{print $1}'`
redis-cli -c -p cluster replicate `redis-cli -c -p cluster nodes | grep | awk '{print $1}'` 七、最终确认集群状态、节点状态、分配槽状态: Java代码
集群状态:
127.0.0.1:> cluster info
cluster_state:ok
cluster_slots_assigned:
cluster_slots_ok:
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes:
cluster_size:
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_sent:
cluster_stats_messages_received: 三主三从
127.0.0.1:> cluster nodes
6690722c4536210a231af4bdceb604e83d53403e 10.10.53.159: master - connected -
4d2842d9f846481783eafbd9135df372e2153307 10.10.53.159: myself,master - connected -
caefaab1e5d01d76a728c84cb1dc285a6aab15a6 10.10.53.159: slave c05ebacbeeb6cbcf52a6ac60384891586226f131 connected
ec403c50e59460bcb0b47906e567423b7d9aed50 10.10.53.159: slave 4d2842d9f846481783eafbd9135df372e2153307 connected
a52b9d211ec06190bcc4ab36eecf643fa13aa215 10.10.53.159: slave 6690722c4536210a231af4bdceb604e83d53403e connected
c05ebacbeeb6cbcf52a6ac60384891586226f131 10.10.53.159: master - connected - 分配槽状态:
127.0.0.1:> cluster slots
) ) (integer)
) (integer)
) ) "10.10.53.159"
) (integer)
) ) "10.10.53.159"
) (integer)
) ) (integer)
) (integer)
) ) "10.10.53.159"
) (integer)
) ) "10.10.53.159"
) (integer)
) ) (integer)
) (integer)
) ) "10.10.53.159"
) (integer)
) ) "10.10.53.159"
) (integer)
Redis-Cluster实战--5.使用redis-cli安装的更多相关文章
- Redis Cluster搭建高可用Redis服务器集群
一.Redis Cluster集群简介 Redis Cluster是Redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了Redis分布式的需求,当一个节点挂了可以快速的切换到另一个节 ...
- 搭建分布式 Redis Cluster 集群与 Redis 入门
目录 Redis 集群搭建 Redis 是啥 集群(Cluster) Redis Cluster 说明 Redis Cluster 节点 Redis Cluster 集群模式 不能保证一致性 创建和使 ...
- Redis Cluster 4.0.9 集群安装搭建
Redis Cluster 4.0.9集群搭建步骤:yum install -y gcc g++ gcc-c++ make openssl cd redis-4.0.9 make mkdir -p / ...
- Spring Boot Redis Cluster 实战干货
添加配置信息 spring.redis: database: 0 # Redis数据库索引(默认为0) #host: 192.168.1.8 #port: 6379 password: 123456 ...
- Spring Boot Redis Cluster实战
添加配置信息 spring.redis: database: 0 # Redis数据库索引(默认为0) #host: 192.168.1.8 #port: 6379 password: 123456 ...
- Redis项目实战 .net StackExchange.Redis
StackExchange.Redis 免费.支持异步.用的最多 常用对象 源码地址:https://github.com/StackExchange/StackExchange.Redis 用 ...
- 近千节点的Redis Cluster高可用集群案例:优酷蓝鲸优化实战(摘自高可用架构)
(原创)2016-07-26 吴建超 高可用架构导读:Redis Cluster 作者建议的最大集群规模 1,000 节点,目前优酷在蓝鲸项目中管理了超过 700 台节点,积累了 Redis Clus ...
- Redis Cluster搭建方法简介22211111
Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼ Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- Redis Cluster部署、管理和测试
背景: Redis 3.0之后支持了Cluster,大大增强了Redis水平扩展的能力.Redis Cluster是Redis官方的集群实现方案,在此之前已经有第三方Redis集群解决方案,如Twen ...
随机推荐
- .NET跨平台之旅:corehost 是如何加载 coreclr 的
在前一篇博文中,在好奇心的驱使下,探秘了 dotnet run ,发现了神秘的 corehost —— 运行 .NET Core 应用程序的幕后英雄.有时神秘就是一种诱惑,神秘的 corehost ...
- commons configuration管理项目的配置文件
Commons Confifutation commons configuration可以很方便的访问配置文件和xml文件中的的内容.Commons Configuration 是为了提供对属性文件. ...
- [转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值
本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /****************************** ...
- 并发包的线程池第一篇--ThreadPoolExecutor执行逻辑
学习这个很长时间了一直没有去做个总结,现在大致总结一下并发包的线程池. 首先,任何代码都是解决问题的,线程池解决什么问题? 如果我们不用线程池,每次需要跑一个线程的时候自己new一个,会导致几个问题: ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- Web Application Penetration Testing Local File Inclusion (LFI) Testing Techniques
Web Application Penetration Testing Local File Inclusion (LFI) Testing Techniques Jan 04, 2017, Vers ...
- 在页面的el表达式是如何判断null的
<c:if test="${not empty message}"> <div id="message" class="alert ...
- Jquery获取offsetHeight
纯javascript: window.document.getElementById('MainColumn').offsetHeight jquery: $('#id').get(0).offse ...
- 《Javascript高级程序设计》读书笔记(1-3章)
第一章 JavaScript简介 1.1 JavaScript简史 略 1.2 JavaScript实现 虽然 JavaScript 和 ECMAScript 通常都被人们用来表达相同的含义,但 Ja ...
- RSA加密例子和中途遇到的问题
在进行RSA加密例子 package test; import java.io.IOException; import java.security.Key; import java.security. ...