参考

第一个节点

第一个节点为本地的机器 IP:192.168.23.148

检查机器配置

$ uname -a
Linux wangya-Lenovo-G480 4.8.0-52-generic #55~16.04.1-Ubuntu SMP Fri Apr 28 14:36:29 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ cat /proc/cpuinfo
...
model name : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
...

安装包

解压

$ cd  /home/wangya/dev/redis
$ tar zxvf redis-3.2.9.tar.gz

编译安装

$ cd redis-3.2.9/
$ make && make install

出现下面的结果

make[1]: Leaving directory '/home/wangya/dev/redis/redis-3.2.9/src'
cd src && make install
make[1]: Entering directory '/home/wangya/dev/redis/redis-3.2.9/src' Hint: It's a good idea to run 'make test' ;) INSTALL install
install: 无法创建普通文件'/usr/local/bin/redis-server': 权限不够
Makefile:266: recipe for target 'install' failed
make[1]: *** [install] Error 1
make[1]: Leaving directory '/home/wangya/dev/redis/redis-3.2.9/src'
Makefile:9: recipe for target 'install' failed
make: *** [install] Error 2

先暂时不管报错,按照提示执行 // TODO

$ make test

等个2分钟左右,显示如下

          The End

Execution time of different units:
0 seconds - unit/printver
0 seconds - unit/type/incr
1 seconds - unit/auth
...
...
...
110 seconds - unit/type/list-3
93 seconds - unit/obuf-limits
106 seconds - integration/replication-psync \o/ All tests passed without errors! Cleanup: may take some time... OK
make[1]: Leaving directory '/home/wangya/dev/redis/redis-3.2.9/src'

集群

$ mkdir redis_cluster
$ cd redis_cluster/
$ mkdir 7000 7001 7002
$ cd ..
$ cp redis.conf redis_cluster/7000
$ cp redis.conf redis_cluster/7001
$ cp redis.conf redis_cluster/7002

依次修改对应的配置文件

port 7000                              //端口7000,7002,7003
bind 192.168.23.148
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //释放 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 

启动

$ cd /home/wangya/dev/redis/redis-3.2.9
$ ./src/redis-server redis_cluster/7000/redis.conf
$ ./src/redis-server redis_cluster/7001/redis.conf
$ ./src/redis-server redis_cluster/7002/redis.conf

查看进程

$ ps -ef | grep redis
wangya 14113 1670 0 16:16 ? 00:00:00 ./src/redis-server 192.168.23.148:7000 [cluster]
wangya 14129 1670 0 16:17 ? 00:00:00 ./src/redis-server 192.168.23.148:7001 [cluster]
wangya 14133 1670 0 16:17 ? 00:00:00 ./src/redis-server 192.168.23.148:7002 [cluster]
wangya 14158 7556 0 16:18 pts/0 00:00:00 grep --color=auto
$ netstat -tnlp | grep redis
(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)
tcp 0 0 192.168.23.148:7000 0.0.0.0:* LISTEN 14113/redis-server
tcp 0 0 192.168.23.148:7001 0.0.0.0:* LISTEN 14129/redis-server
tcp 0 0 192.168.23.148:7002 0.0.0.0:* LISTEN 14133/redis-server
tcp 0 0 192.168.23.148:17000 0.0.0.0:* LISTEN 14113/redis-server
tcp 0 0 192.168.23.148:17001 0.0.0.0:* LISTEN 14129/redis-server
tcp 0 0 192.168.23.148:17002 0.0.0.0:* LISTEN 14133/redis-server

第二个节点

第二个节点为Mac主机 IP:192.168.23.149

配置

$ uname -a
Darwin lanjingdeMacBook-Pro.local 16.5.0 Darwin Kernel Version 16.5.0: Fri Mar 3 16:52:33 PST 2017; root:xnu-3789.51.2~3/RELEASE_X86_64 x86_64

参考相同的办法搭建

$ ps -ef | grep redis
501 93858 1 0 5:33下午 ?? 0:00.07 ./src/redis-server 192.168.23.149:7003 [cluster]
501 93863 1 0 5:33下午 ?? 0:00.07 ./src/redis-server 192.168.23.149:7004 [cluster]
501 93865 1 0 5:34下午 ?? 0:00.06 ./src/redis-server 192.168.23.149:7005 [cluster]
501 93910 64442 0 5:35下午 ttys002 0:00.00 grep redis

创建集群

执行

$ ./src/redis-trib.rb create --replicas 1 192.168.23.148:7000  192.168.23.148:7001  192.168.23.148:7002 192.168.23.149:7003 192.168.23.149:7004  192.168.23.149:7005

结果出错

$ ./src/redis-trib.rb create --replicas 1 192.168.23.148:7000  192.168.23.148:7001  192.168.23.148:7002 192.168.23.149:7003 192.168.23.149:7004  192.168.23.149:7005
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./src/redis-trib.rb:25:in `<main>'

这说明需要提供ruby访问redis的客户端

$ gem install redis

安装一下就OK啦

如果没有Ruby,或者版本太低的话,那么根据自己平台自行安装

最后再次执行上面的命令

$ ./src/redis-trib.rb create --replicas 1 192.168.23.148:7000  192.168.23.148:7001  192.168.23.148:7002 192.168.23.149:7003 192.168.23.149:7004  192.168.23.149:7005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.23.148:7000
192.168.23.149:7003
192.168.23.148:7001
Adding replica 192.168.23.149:7004 to 192.168.23.148:7000
Adding replica 192.168.23.148:7002 to 192.168.23.149:7003
Adding replica 192.168.23.149:7005 to 192.168.23.148:7001
M: 3e491c2f1b74776887198004628c27a402b02235 192.168.23.148:7000
slots:0-5460 (5461 slots) master
M: d44d2b25b051f390fa97a696f65a04cbd11d438d 192.168.23.148:7001
slots:10923-16383 (5461 slots) master
S: 01ade8ffc5e11a8ab646be5550f0ca9d53ef70cd 192.168.23.148:7002
replicates ad24d813be329053df26993e8cb529a0fb350695
M: ad24d813be329053df26993e8cb529a0fb350695 192.168.23.149:7003
slots:5461-10922 (5462 slots) master
S: fddfa2c20518c42733bf3680b2fb6b5d0e1c9a2d 192.168.23.149:7004
replicates 3e491c2f1b74776887198004628c27a402b02235
S: e35177d7f5b1378ec24a6cf7b31a0a8bda2385cf 192.168.23.149:7005
replicates d44d2b25b051f390fa97a696f65a04cbd11d438d
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.23.148:7000)
M: 3e491c2f1b74776887198004628c27a402b02235 192.168.23.148:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: fddfa2c20518c42733bf3680b2fb6b5d0e1c9a2d 192.168.23.149:7004
slots: (0 slots) slave
replicates 3e491c2f1b74776887198004628c27a402b02235
S: 01ade8ffc5e11a8ab646be5550f0ca9d53ef70cd 192.168.23.148:7002
slots: (0 slots) slave
replicates ad24d813be329053df26993e8cb529a0fb350695
M: ad24d813be329053df26993e8cb529a0fb350695 192.168.23.149:7003
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: e35177d7f5b1378ec24a6cf7b31a0a8bda2385cf 192.168.23.149:7005
slots: (0 slots) slave
replicates d44d2b25b051f390fa97a696f65a04cbd11d438d
M: d44d2b25b051f390fa97a696f65a04cbd11d438d 192.168.23.148:7001
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

搭建完成

测试

$ ./src/redis-cli -h 192.168.23.148 -c -p 7001
192.168.23.149:7003> set age 26
-> Redirected to slot [741] located at 192.168.23.148:7000
OK
192.168.23.148:7000> keys *
1) "age"
192.168.23.148:7000> get age
"26"
192.168.23.148:7000> get name
-> Redirected to slot [5798] located at 192.168.23.149:7003
"wangya"
192.168.23.149:7003> keys *
1) "name"

然后换第二节点获取数据

$ ./src/redis-cli -h 192.168.23.149 -c -p 7004
192.168.23.149:7004> get name
-> Redirected to slot [5798] located at 192.168.23.149:7003
"wangya"
192.168.23.149:7003> get age
-> Redirected to slot [741] located at 192.168.23.148:7000
"26"
192.168.23.148:7000> keys *
1) "age"
192.168.23.148:7000>

测试通过

redis集群搭建实践的更多相关文章

  1. [转载] Redis集群搭建最佳实践

    转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...

  2. Redis集群搭建最佳实践

    要搭建Redis集群.首先得考虑以下的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的事实上也就是集群搭建的目的.全部的集群主要都是为了解决一个 ...

  3. 分享知识-快乐自己:redis集群搭建

    Redis介绍: 1.开源的NoSql数据库 2.C语言编写 3.基于内存运行,并且支持持久化 4.Key value存储 5.是主流的Nosql数据库之一 Redis优点: 1.内存使用方面,表现优 ...

  4. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  5. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  6. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

  7. redis集群搭建及注意事项

    上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...

  8. Linux Redis集群搭建与集群客户端实现(Python)

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  9. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

随机推荐

  1. Linux配置tomcat (centos配置java环境 tomcat配置篇 总结三)

    ♣下载安装tomcat7 ♣设置启动和关闭 ♣设置用户名和密码 ♣发布java web项目 声明:这篇教程是建立在前两篇教程的基础上的,所以,还没安装工具和jdk,可以先看这个系列的前面两篇(去到文末 ...

  2. Layoutparams理解

    一. layoutparams是什么LayoutParams继承于Android.View.ViewGroup.LayoutParamsLayoutParams只是ViewGroup的一个内部类 vi ...

  3. 想询问一个职业规划的问题,前端开发 or nodejs?

    先说说个人情况,目前个人定位于初中级前端吧,工作近两年,目前前端开发和nodejs都有一定的了解,水平感觉可以搭一些小型的网站.作为前端开发,目前掌握的技术是javascript,平时更多的是用jqu ...

  4. Linux--谈父子进程执行过程

    fork函数用于从已存在进程中创建一个新进程,新进程成为子进程,原进程成为父进程.这两个进程分别返回他们各自的返回值, 其中父进程的返回值是子进程的进程号,子进程则返回0,因此返回值大于0标识父进程, ...

  5. STM32定时器

    /*****************************************************************************初始化定时器**************** ...

  6. 百度UEditor图片上传或文件上传路径自定义

    最近在项目中使用到百度UEditor的图片以及文件上传功能,但在上传的时候路径总是按照预设规则来自动生成,不方便一些特殊文件的维护.于是开始查看文档和源代码,其实操作还是比较简单的,具体如下: 1.百 ...

  7. 记一些让footer始终位于网页底部的方法

    上次说把网页的头部和尾部分离出来作为一个单独的文件,所有网页共用,这样比较方便修改,然而,,,我发现某些方法里尾部会紧跟在头部后面,把内容挤在下面..而且有的页面内容少的话不能把尾部挤到最下面,所以, ...

  8. __read_mostly变量含义

     1. 定义 __read_mostly原语将定义的变量为存放在.data.read_mostly段中,原型在include/asm/cache.h 中定义: #define __read_mos ...

  9. SublimeText3编译JavaScript

    这个操作很简单总的来说分为两步,1.安装Node.js  2.添加SublimeText3 JS编译系统 首先我们去官网下载node.js https://nodejs.org/en/ 然后安装 验证 ...

  10. endsWith is not a function解决方案

    在写javascript脚本时,用某些方法,有时候会碰到"XXX is not a function"之类的报错. 出现这种情况,主要是因为某些方法在低版本浏览器上不支持.比如说& ...