第一步:准备

1.安装包

ruby-2.4.0.tar.gz

rubygems-2.6.10.tgz

zlib-1.2.11.tar.gz

redis-3.3.2.gem

2. 架构:

名称 IP 端口 节点属性
redisA 192.168.6.128 6379 主节点
redisB 192.168.6.128 9379 从节点
redisC 192.168.6.129 6379 主节点
redisD 192.168.6.129 9379 从节点
redisE 192.168.6.130 6379 主节点
redisF 192.168.6.130 9379 从节点

2. 实例 redis 安装

参照 Redis【第一篇】安装 来安装架构中的实例。

第二步:安装Ruby

1. 版本

ruby-2.4.0

2. 安装

# tar zxvf ruby-2.4..tar.gz
# cd ruby-2.4.
# ./configure prefix=/usr/local/ruby
# make
# make install

3. 设置环境变量

# echo 'export PATH="$PATH:/usr/local/ruby/bin"' >> /etc/profile
# source /etc/profile

4. 测试

# ruby -v

第三步:安装 rubygems

1. 版本

rubygems-2.6.10

2. 安装

# tar zxvf rubygems-2.6..tgz
# cd rubygems-2.6.
# ruby setup.rb

3. 测试

# gem -v

第四步:安装zlib

1. 版本

zlib-1.2.11.tar.gz

2. 安装

# tar zxvf zlib-1.2..tar.gz
# cd zlib-1.2.
# ./configure --prefix=/usr/local/zlib
# make
# make install

第五步:安装 ruby-zlib

1. 版本

为 ruby-2.4.0 包中的文件。

2. 安装

# cd ruby-2.4./ext/zlib
# ruby ./extconf.rb --with-zlib-dir=/usr/local/zlib
# make
# make install

返回信息:

第六步:安装 redis-3.3.2.gem

1. 版本

redis-3.3.2.gem

2. 安装

gem install -l redis-3.3.2.gem

返回信息:

第七步:启动

1. 分别修改各个 redis 的配置文件

# cp redis.conf redis-cluster.conf
# vi redis-cluster.conf

编辑配置文件:

1)更改的内容:

daemonize no 更改为 daemonize yes
logfile "" 更改为 logfile "/root/redisA/logs/redis.log" # 需要创建 logs 目录
dir ./ 更改为 dir /root/redisA/data #需要创建 data 目录
appendonly no 更改为 appendonly yes

2)去掉注释的内容

# cluster-enabled yes
# cluster-config-file nodes-.conf
# cluster-node-timeout
# cluster-slave-validity-factor
# cluster-migration-barrier
# cluster-require-full-coverage yes

2. 分别启动各个 redis 服务

# ./src/redis-server redis-cluster.conf

第八步:测试

1. 查看进程

# ps -ef|grep redis|grep -v grep

2. 查看日志

第九步:建立集群

1. 执行命令

# ./src/redis-trib.rb create --replicas  192.168.6.128: 192.168.6.128: 192.168.6.129: 192.168.6.129: 192.168.6.130: 192.168.6.130:

--replicas 1 表示每个主节点下有一个从节点。

默认是前三个为主节点,后三个为从节点。

默认情况下不能从 slaves 读取数据,但建立连接后,执行一次命令 READONLY,该 slaves 即可读取数据。

2. 返回信息

>>> Creating cluster
Connecting to node 192.168.6.128:: OK
Connecting to node 192.168.6.128:: OK
Connecting to node 192.168.6.129:: OK
Connecting to node 192.168.6.129:: OK
Connecting to node 192.168.6.130:: OK
Connecting to node 192.168.6.130:: OK
>>> Performing hash slots allocation on nodes...
Using masters:
192.168.6.128:
192.168.6.129:
192.168.6.130:
Adding replica 192.168.6.129: to 192.168.6.128:
Adding replica 192.168.6.128: to 192.168.6.129:
Adding replica 192.168.6.130: to 192.168.6.130:
M: 31f6b90cfe190d94f39bef42449bdb7efe1b85b0 192.168.6.128:
slots:- ( slots) master
S: 02c6f0321ebbaf52fe42dd372e5daf179ca77853 192.168.6.128:
replicates 90fec8236d68d9e89262a1ae101056fa1da6df25
M: 90fec8236d68d9e89262a1ae101056fa1da6df25 192.168.6.129:
slots:- ( slots) master
S: 5cf4bd75f93514e1895f8bb5bb7042ae23f277e7 192.168.6.129:
replicates 31f6b90cfe190d94f39bef42449bdb7efe1b85b0
M: 82889edd96156daa109e84868ceda24a0272ee82 192.168.6.130:
slots:- ( slots) master
S: 9e238a85863ea02fc534fc870db4f47fd79b9ef6 192.168.6.130:
replicates 82889edd96156daa109e84868ceda24a0272ee82
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 192.168.6.128:)
M: 31f6b90cfe190d94f39bef42449bdb7efe1b85b0 192.168.6.128:
slots:- ( slots) master
additional replica(s)
M: 90fec8236d68d9e89262a1ae101056fa1da6df25 192.168.6.129:
slots:- ( slots) master
additional replica(s)
S: 5cf4bd75f93514e1895f8bb5bb7042ae23f277e7 192.168.6.129:
slots: ( slots) slave
replicates 31f6b90cfe190d94f39bef42449bdb7efe1b85b0
S: 9e238a85863ea02fc534fc870db4f47fd79b9ef6 192.168.6.130:
slots: ( slots) slave
replicates 82889edd96156daa109e84868ceda24a0272ee82
M: 82889edd96156daa109e84868ceda24a0272ee82 192.168.6.130:
slots:- ( slots) master
additional replica(s)
S: 02c6f0321ebbaf52fe42dd372e5daf179ca77853 192.168.6.128:
slots: ( slots) slave
replicates 90fec8236d68d9e89262a1ae101056fa1da6df25
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.

集群创建成功!

第十步:测试

1. 客户端连接

# ./src/redis-cli -c -h 192.168.6.128 -p 

连接成功则返回:

2. 存取数据

1)连接192.168.6.128的6379端口,并存入数据

2)连接192.168.6.130的9379端口,并读取数据

此时,redis 的三主三从集群已搭建成功!

Redis【第二篇】集群搭建的更多相关文章

  1. Redis 3.0 集群搭建

    Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...

  2. Redis 5.0 集群搭建

    Redis 5.0 集群搭建 单机版的 Redis 搭建 https://www.jianshu.com/p/b68e68bbd725 /usr/local/目录 mkdir redis-cluste ...

  3. Redis进阶实践之十一 Redis的Cluster集群搭建

    一.引言      本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的详细概念做深入的探讨.本文只是提供了有关如何设置集群.测试和操作集群的说明,而不涉及Redis集群规范中涵 ...

  4. 超详细的 Redis Cluster 官方集群搭建指南

    今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 安装ruby环境 因为官方提供的创建集群的工具是用ruby写的,需要ruby2.2.2+版本支持,rub ...

  5. redis整合Spring集群搭建及业务中的使用

    1.redis安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第一步:redis的源码包上传到li ...

  6. linux Redis 5.0集群搭建

    文档结构如下: Redis cluster 是redis的分布式解决方案,在3.0版本正式推出后,有效的解决了redis分布式方面的需求:当遇到单机内存,并发,流量等瓶颈是,可以采用cluster架构 ...

  7. redis主从和集群搭建

    主从搭建 redis的主从搭建非常简单,打开配置文件6379.conf,只需要将主节点的protected-mode设置为no,然后在从节点配置中加入:slaveof <masterip> ...

  8. Redis操作及集群搭建以及高可用配置

    NoSQL - Redis 缓存技术 Redis功能介绍 数据类型丰富 支持持久化 多种内存分配及回收策略 支持弱事务 支持高可用 支持分布式分片集群 企业缓存产品介绍 Memcached: 优点:高 ...

  9. Redis 3.0集群搭建/配置/FAQ

    ·声明 1,已官网中文教程为基础,边看边学,结合环境现状搭建. 2,哥对Ruby不热爱.不熟悉.不感冒,所述内容如有疑义请谅解. 3,3.0官说集群还在测试中,其实用用也还算马马虎虎,对外集群API真 ...

  10. Redis Cluster 官方集群搭建指南

    安装ruby环境因为官方提供的创建集群的工具是用ruby写的,需要ruby2.2.2+版本支持,ruby安装需要指定openssl. 安装openssl $ wget https://www.open ...

随机推荐

  1. mobile meta iphone

    <!doctype html> <html> <head> <title>iOS touch test ( Multi-touch )</titl ...

  2. java环境设置与运行

    在初学java编程语言时,痛苦的事莫过于跟着示例一步步做,总是得不到想要的结果,这是很多初学者都会碰到的问题.下面详细教你运行第一个java应用程序(环境windows xp + jdk 6.0): ...

  3. --@angularJS--路由插件UI-Router

    UI-Router是angular路由插件,上一篇我们讲到了angularJS自带路由,可惜在路径嵌套上表现的有所欠缺,而angular-UI-Router插件正好弥补了这一点. [示例]: □.UI ...

  4. js原生设计模式——2面向对象编程之js原生的链式调用

    技巧点:对象方法中返回当前对象就可以链式调用了,即方法中写return this; <!DOCTYPE html><html lang="en"><h ...

  5. Mac 安装Rudy环境 pod安装前的准备工作

    之前已经说过怎么使用pod 今天说一下安装pod之前的准备工作 首先呢就是Rudy 环境(前提是你已经安装了Xcode) 在终端输入一下命令 期间可能也许会要你输入密码 curl -L https:/ ...

  6. IIS 启用w3wp.exe调试 没有找到w3wp进程

    必须条件: 在进程列表的下面,有个show processes in all sessions,把它勾上就能看到了 . VS中附加进程的方式调试IIS页面,以及设置断点无效问题解决 以前调试网站的时候 ...

  7. Flex Socket 安全沙箱问题解决

    Flex使用Socket与C++通讯时遇到了安全沙箱问题,NND,折腾我半天,这是我的解决方法: 1):策略文件与主套接字在同一端口,只需调用 Socket.connect() 或 XMLSocket ...

  8. CentOS 6一键系统优化 Shell 脚本

    CentOS 6一键系统优化 Shell 脚本 脚本的内容如下: #!/bin/bash#author suzezhi#this script is only for CentOS 6#check t ...

  9. 理解javascript中的Function.prototype.bind

    在初学Javascript时,我们也许不需要担心函数绑定的问题,但是当我们需要在另一个函数中保持上下文对象this时,就会遇到相应的问题了,我见过很多人处理这种问题都是先将this赋值给一个变量(比如 ...

  10. ubuntu 更新引导命令

    sudo update-grub 运行结果: Generating grub configuration file ...Warning: Setting GRUB_TIMEOUT to a non- ...