IDEA常用插件 Mybatis源码分析(1) - Mybatis包目录简介 tair 1:tair学习 dataflow论文阅读笔记 Polysh的安装使用 SnappyData排序函数比较 Squirrel-sql客户端连接SnappyData手册 在虚拟机里显示Hello World spark学习博客推荐 SnappyData学习博客和官网文章 Docker常用命令 MyBatis支持的OGNL语法 mysql性能优化 mysql性能优化-优化Sql语句 java各版本新特性 mac上命令行操作 explain输出格式 从文件中读取zk配置——ZooKeeper编程技能(1) git进阶经验-从项目中删除移除的目录 Mongodb 学习之shell命令操作(3) mysql命令 git进阶经验-从多模块项目中分理子模块 从零学hadoop-搭建基础(单点)的Hdfs环境 ZooKeeper集群操作脚本 Vue安装使用 2 初学JVM之问答式记住类加载机制 2 初学JVM之问答式记住虚拟机性能监控与故障处理工具 2 初学JVM之问答式记住垃圾收集器 log4j2 按天生成日志文件 1 初学JVM之问答式记住java自动内存管理 MapReduce学习心得之MapReduce初识 log4j2 日志发送到kafka配置实战 log4j2 日志配置实战 Mongodb 学习之shell命令操作(二) Mongodb 学习之linux版本安装(一) Dubbo的初级使用 ServiceLoader内部实现分析 ServiceLoader 初级应用 log4j日志发送邮件配置实战 红黑树笔记 IDEA首次使用之前的配置 java源码学习之Enum java源码学习之String 自定义Spring tag标签 编写一键发布脚本 记一次Spring Scheduler莫名不执行的一次堆栈分析 kafka的基本操作 nginx 5:Nginx内部变量 nginx 4:Nginx日志管理 提高hadoop配置效率的shell脚本 Hive编程指南之一 Hive的安装 Ambari服务器安装 Ambari服务器管理集群 HBase分布式安装 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 搭建JStorm集群 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 配置vmware中的虚拟机使用宿主机的共享网络 YARN架构简述 HDFS 架构 Spring的统一异常处理机制 Tomcat 配置服务 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 nginx 3:Nginx反向代理 mybatis操作主体流程 1.正则表达式学习-基础篇 log4j日志配置详解 mysql的时间函数 nginx 2:Nginx模块配置理论及实战 HashMap相关解析和测试文章 工作一年后的面试 用私有构造器或枚举类型强化Singleton属性 java中比较重要的图 mybatis处理枚举类 mybatis集成进spring Spring比较重要的几个截图 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 markdown在jekyll中支持的一些操作 Spring项目中配置sl4j和log4j的日志配置 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 Spring的profile机制介绍 mybatis-generator反向生成 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 (转)浅析 Decorator 模式,兼谈 CDI Decorator 注解 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 Http 协议相应状态码大全及常用状态码 IDEA快捷键 JDBC Type与Java Type redis 12:redis 操作集合 mybatis-generator错误集合 redis 11:redis 错误集合 nginx 1:nginx的安装 redis 10:redis cluster命令操作 redis 9:redis实例集群安装 java设计模式 hadoop集群学习笔记(1) Apache Shiro 简介 vim编辑神器的进阶命令 Eclipse配置 Eclipse快捷键 Linux 测试题 Linux脚本学习(1) Linux启动简要过程 Centos7上安装Mysql hadoop集群学习笔记(1) (转)分布式发布订阅消息系统 Kafka 架构设计 maven 命令 Kafka集群安装 Kafka初步使用 redis 8:redis server 和 scripting命令操作 redis 7:redis transaction 和 connection命令操作 redis 6:redis hash 命令操作 redis 5:redis sorted_set 命令操作 搭建本地Jekyll+Markdown+Github的开发环境 Spring源码阅读笔记(2) redis 4:redis set命令操作 Spring添加任务调度配置 redis 3:Redis list命令操作 redis 2:redis 一般命令操作 redis 1:redis单机安装笔记 redis 0:redis配置属性描述 Spring源码阅读笔记(1) spark 错误集锦 spark集群安装 Linux 基本命令操作 Hadoop错误信息处理 Hadoop代码拾忆 从零开始搭建spring-springmvc-mybatis-mysql和dubbo项目 java知识点札记 java排错 Google Java Style 中文版 git进阶经验 github使用经验 MongoDB用户角色授权与AUTH启用 MongoDB 命令 MongoDB 特定规范 Spring MVC实现跳转的几种方式 史上最全最强SpringMVC详细示例实战教程 Spring 零星笔记 js中(function(){…})()立即执行函数写法理解 如何解决跨域问题 创建ajax简单过程 前端定位 设置MYSQL允许通过IP访问 mybatis异常 :元素内容必须由格式正确的字符数据或标记组成 如何为 WordPress 绑定多个域名的方法s WordPress工作原理之程序文件执行顺序(传说中的架构源码分析) Spring源码导入Eclipse中 基于PHPnow搭建Eclipse开发环境 解决wordpress首页文章内容截断处理的几种方法 ZooKeeper理论知识 ZooKeeper集群安装配置 Git常用命令速查表 Linux 4:磁盘与文件系统管理 Linux 3:文件与目录管理 Linux 2:文件权限与目录配置 Markdown输入LaTeX数学公式
从零学hadoop-搭建基础(单点)的Hdfs环境 MapReduce学习心得之MapReduce初识 Ambari服务器安装 Ambari服务器管理集群 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 YARN架构简述 HDFS 架构 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 hadoop集群学习笔记(1) hadoop集群学习笔记(1) Hadoop错误信息处理 Hadoop代码拾忆

redis 9:redis实例集群安装

2016年05月27日
摘要:在VMware虚拟机中安装redis集群安装,CentOS6.4系统。同一台机器上不同redis实例集群以及不同机器上redis实例集群

Redis 集群规范

Redis Cluster Specification

1. 下载/编译/安装redis3.2.0版本

1.1 下载redis3.2.0并解压到指定目录

  • 下载位置

  • 使用winscp复制到centos的/root

  • 解压到/usr/local/目录下:tar -xzvf /root/redis-3.2.0.tar.gz -C /usr/local/

1.2 编译redis3.2.0源码

阅读/usr/local/redis-3.2.0下的README.md

最一般的步骤:

  • 编译项目:make

  • 安装执行文件到/usr/local/redis/binmake PREFIX=/usr/local/redis install

  • 按照生产环境要求,将redis作为服务安装

/usr/local/redis-3.2.0/utils下执行./install_server.sh

redis服务安装

上图中,红框中是自定义的端口和路径,紫色框中是make install步骤指定的执行文件的路径,蓝框中是要安装的位置的确认信息。

redis服务安装

出现上图所示即安装成功

2. 修改配置文件,启动多个redis实例

要求:

启动六个redis实例,并将实例组成redis集群,三个主节点,三个从节点

集群配置最小选项

port 7000
cluster-enabled yes 
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

配置要求

实例名称 端口号 所在位置
redis01 6379 /usr/local/redis01
redis02 6479 /usr/local/redis02
redis03 6579 /usr/local/redis03
redis04 6679 /usr/local/redis04
redis05 6779 /usr/local/redis05
redis06 6879 /usr/local/redis06

2.1 将当前redis复制六份

cp -rp /usr/local/redis /usr/local/redis0x

2.2 修改每一份的配置文件

以redis01为例(其他相同):

vim /usr/local/redis01/conf/redis.conf

  • 使用vim命令:$s/7000/6379/g # 将端口即与端口有关的文件名中的7000改为6379

  • 使用vim命令/usr/local/redis查找所有的usr/local/redis并修改为usr/local/redis01

  • 使用vim命令:wq,保存修改后退出。

2.3 启动实例

/usr/local/redis01/bin/redis-server /usr/local/redis01/conf/redis.conf

2.4 检查实例是否存在

ps -ef | grep redis 如果存在端口为6379即代表实例启动成功

redis启动实例

/usr/local/redis01/data/redis/会生成文件appendonly.aofnodes.conf

2.5 其他redis0x仿照2.22.32.4进行配置

所有redis实例启动示意图(我这截图是7个实例)

redis实例示意图

3.安装预装环境和redis集群

3.1. 安装ruby

yum install ruby

3.2. 安装rubygems

yum install rubygems

未安装时报如下错误:

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

3.3. 安装redis

gem install redis

未安装时报如下错误:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from ./redis-trib.rb:25

3.4. 在多个实例上创建集群

创建新的集群,每个主节点的从节点为一个

/usr/local/redis-3.2.0/src/redis-trib.rb create  --replicas 1  127.0.0.1:6379  127.0.0.1:6479  127.0.0.1:6579  127.0.0.1:6679  127.0.0.1:6779  127.0.0.1:6879  127.0.0.1:6979 

中间输入一次yes

redis实例集群示意图

这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。

4.集群操作

4.1 添加新的节点

实例名称 端口号 所在位置
redis 6379 h2s1:/usr/local/redis

./redis-trib.rb add-node h2s1:6379 127.0.0.1:6379:将节点h2s1:6379添加到所在集群127.0.0.1:6379

注:

  • redis-trib.rb默认是在redis-3.2.0/src

  • 新节点h2s1:6379不能有数据

  • 新节点h2s1:6379实例必须已经启动

  • 默认添加为主节点

redis集群添加新的节点

添加节点为slave节点,所属的master节点自动选择:

redis-trib.rb add-node --slave new-node-host:port cluster-node-ip:port

redis集群添加新的节点

添加节点为slave节点,指定所属的master节点:

redis-trib.rb add-node --slave --master-id masterid new-node-host:port cluster-node-ip:port

redis集群添加新的节点

4.2 删除节点

./redis-trib.rb del-node h2s1:6379 16c85b6ec209b703b90d81019606c1c021ab0a1e:删除节点所在集群任一host:port, nodeId:即被删除节点在集群中id。

节点id可以通过检查节点的命令./redis-trib.rb check host:port查看

被删除的节点会被下线,而不仅仅是移除集群。如果要重新加入,需要重新启动该节点。而且该节点的appendonly.aof和nodes.conf要删除,启动实例时重新生成。

redis集群删除节点

4.3 检查节点

./redis-trib.rb check h2s1:6379:检查节点,很长的一段字符串就是节点的id,如示例图中的1dda781d73f38b1abed11beba610b155387e2a8d

redis集群检查节点

4.4 查看节点信息

./redis-trib.rb info h2s1:6379:查看指定节点信息,包括有多少key,多少槽,有多少的从节点以及每个槽上平均有多少key

redis集群查看节点信息

4.5 修复集群

./redis-trib.rb fix 127.0.0.1:6379:修复127.0.0.1:6379所在集群

redis集群修复

4.6 集群简单操作

可以看出,我从任何一个节点都可以访问到集群其他节点的数据

redis集群简单操作

4.7 集群重新分片

./redis-trib.rb reshard 127.0.0.1:6379:host和port指定节点所在集群

redis集群reshard

Source node #1:我选择的all

redis集群reshard

询问是否继续reshard计划:我选的的yes

执行移动操作:

redis集群reshard

已经成功移动完成

4.8 集群重新平衡

./redis-trib.rb rebalance h2s1:6379:因集群中三个主节点的槽数量差别较大,因此重新分配槽的数量以达到集群的平衡。

redis集群重新平衡

4.9 集群执行命令

./redis-trib.rb call 127.0.0.1:6379 set name "jingzz":在集群上执行set和get命令

即在6379端口的节点上的命令被存储在了6579节点上。

redis集群执行命令

注意点:

  1. redis默认配置如下:
bind 127.0.0.1 
protected-mode yes

如果想要连接外部host,需要注释掉bind或指定ip,将protected-mode(保护模式设置为no),重启集群。

redis集群调整配置