一 环境搭建.

1.1 环境准备.三台虚拟机.redis的版本是3.2.9.redis的各个版本下载地址:链接. 三个主节点三个从节点.

①:192.168.199.133.(部署两个Redis服务.)分别在目录redis_cluster7001和7002下.(作为集群控制端,需要编译安装redis,并且安装Ruby环境).

②:192.168.199.136.(部署两个Redis服务.)分别在目录redis_cluster7003和7004下.

③:192.168.199.137.(部署两个Redis服务.)分别在目录redis_cluster7005和7006下.

其中192.168.199.133下载了Redis并且编译安装了.

分别完成另外两台的目录创建.

①:192.168.199.136.

②:192.168.199.137.

1.2 配置文件复制.

192.168.199.133下执行:

scp -r /usr/local/redis/bin root@192.168.199.136:/usr/local/redis(-r递归复制目录)

scp -r /usr/local/redis/bin root@192.168.199.137:/usr/local/redis

1.3 查看复制结果.

复制redis下的redis.conf目录至redis_cluster下的对应目录下.

①:199.168.199.133.

cp redis.conf /usr/local/redis_cluster/7001

cp redis.conf /usr/local/redis_cluster/7002

②:192.168.199.136.

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.136:/usr/local/redis_cluster/7003

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.136:/usr/local/redis_cluster/7004

③:192.168.199.137.(同上)

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.137:/usr/local/redis_cluster/7005

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.137:/usr/local/redis_cluster/7006

二.修改配置文件.

2.1修改下面几个配置项.

port 7001  //六个节点配置文件分别是7001-7003

bind 192.168.1.109    //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访,和单机集群有区别

daemonize yes        //redis后台运行

pidfile /var/run/redis_7001.pid   //pidfile文件对应7001-7003

cluster-enabled yes   //开启集群

cluster-config-file nodes_7001.conf  //保存节点配置,自动创建,自动更新对应7001-7003

cluster-node-timeout 5000    //集群超时时间,节点超过这个时间没反应就断定是宕机

appendonly yes   //存储方式,aof,将写操作记录保存到日志中

7001~7006的6个配置文件都修改一下.根据所在目录修改即可.

2.2 192.168.199.133做为创建集群的主控制端,安装Ruby环境.(创建集群环境的脚本是Ruby语言编写的,需要Ruby的环境).

①:安装Curl.

sudo yum install curl

查看Curl的版本.curl --version

②:RVM的安装.(直接yum安装会出 现这样的错误.RVM是Ruby的包管理器)

gem install redis

ERROR: Error installing redis:

redis requires Ruby version >= 2.2.2.)

参考这篇文章的解决方式:链接.

下面是自己按照文章中的解决方式走了一遍,是可行的.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

curl -sSL https://get.rvm.io | bash -s stable

find / -name rvm -print

source /usr/local/rvm/scripts/rvm

rvm list known(列出已知的rvm的版本)

rvm install 2.4.1(安装rvm 2.4.1).

rvm use 2.4.1(使用2.4.1的版本).

rvm use 2.4.1 --default(设置ruby的默认版本)

rvm remove 2.0.0(移除ruby2.0.0的版本).

ruby --version(查看ruby的版本).

安装redis.

三:启动Redis集群.

3.1我三台虚拟机由于没有启动防火墙,如果启动了,做一下这些端口的映射.首先是启动6个Redis服务.

①:192.168.199.133的7001和7002服务.

./redis-server /usr/local/redis_cluster/7001/redis.conf

./redis-server /usr/local/redis_cluster/7002/redis.conf

ps -ef | grep -i redis

② 192.168.199.136

./redis-server /usr/local/redis_cluster/7003/redis.conf

./redis-server /usr/local/redis_cluster/7004/redis.conf

ps -ef | grep -i redis

③ 192.168.199.137

./redis-server /usr/local/redis_cluster/7005/redis.conf

./redis-server /usr/local/redis_cluster/7006/redis.conf

ps -ef | grep -i redis

至此6台Redis服务均已成功启动了.

3.2 Redis的Ruby脚本创建集群.

redis-3.2.9的src目录下有redis-trib.rb脚本.

./redis-trib.rb create --replicas 1  192.168.199.133:7001 192.168.199.136:7003 192.168.199.137:7005 192.168.199.133:7002 192.168.199.136:7004 192.168.199.137:7006   (这里说明一下,按照顺序,前面的是主节点后面三个是从节点,--replicates 1表示一个主节点有三个从节点的.)

三个主节点的Hash槽范围是:一共有16384的hash solt。(0~16383)

7001:(0~5460)

7003:(5461~10922)

7005:(10923~16383)

至此,完成了Linux下的三台机器上三主三从节点的分布式Redis的集群搭建.这里是在虚拟机里面搭建,如果是云服务器上,肯定是开启了防火墙的,注意添加集群的端口开放,以及安全组的相应端口开放,否则会一直Join...添加服务中的.

四 测试Redis集群.

4.1.首先是Redis客户端连接一下Redis服务.key值的测试.

./redis-cli -h 192.168.199.136 -p 7003 -c(-h是IP,-p是端口,-c是连接集群)

连接集群后和单台操作redis的key一样,这里是设置了一个key,没有跳转是因为分配hash槽是就分配在这个7003主节点上了.

Redis Cluster值分配规则,所以分配key的时候,它会使用CRC16(‘my_name’)%16384算法,来计算,将这个key 放到哪个节点,这里分配到了15118slot 就分配到了7005(10923~16383)这个节点上。所以有这样一个跳转:

-> Redirected to slot [15118] located at 192.168.199.137:7005

看一下下面删除这两个key时,会更清楚一些.7005主节点跳转之7003主节点.5798属于(5461~10922).

4.2 集群宕机测试.

①:首先是干掉一个主节点,例如7003.(当这个主节点有从节点的时候)

./redis-trib.rb check 192.168.199.133:7001(check检查集群)7003对应的主节点挂了,则从节点7002升为主节点

cluster nodes(这里连接一个从节点7004).

②:再次干掉一个主节点(当这个主节点没有从节点的时候).直接说就是7002节点.

再次检测集群.

./redis-trib.rb check 192.168.199.133:7001

至此完成了,Linux下的分布式Redis的集群搭建的完整过程.遇到了一些问题,多思考一下,还是比较简单的.

linux环境搭建redis集群,Linux下搭建Redis分布式集群(详细图解演示)相关推荐

  1. Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  2. Redis第一集:Windows下安装Redis和测试

    Redis第一集:Windows下安装Redis和测试 一.资源 Windows下的Redis的下载地址 点击这里即可下载,如果进不去GitHub的话,可以上网搜一下怎么进GitHub,搭个梯子(●ˇ ...

  3. linux 搭建开发stm32 stlink,Ubuntu下搭建stm32+stlink的开发环境

    Ubuntu下搭建stm32+stlink的开发环境 热度 3已有 15960 次阅读2014-8-19 21:09 | 上周因为忙于别的事情,很久没切到ubuntu下了,这周继续弄了弄. 弄到了一些 ...

  4. linux搭建python运行环境_centos运行.py centos5.5下搭建python开发运行环境 - Linux - 服务器之家...

    centos运行.py centos5.5下搭建python开发运行环境 发布时间:2017-04-28 来源:服务器之家 我们知道ython可以在windows.linux.android运行了,但 ...

  5. windows下搭建mysql集群_Windows下搭建MySQL集群

    本文将讨论在Windows下搭建MySQL集群的步骤和搭建过程中应当注意的问题. 由于机器数量和性能有限,搭建环境为一台宿主机(IP:10.200.178.191),一台虚拟机(IP:10.200.1 ...

  6. linux环境c语言课程设计,linux环境下c语言编程课程设计

    linux环境下c语言编程课程设计 (14页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 1/14LINUX操作系统教程课程设计题目算术 ...

  7. linux环境变量重复设置,请叫下环境变量重复设置的问题

    把下面的脚本保存在一个shell里面,运行一次没有问题,但是运行两次的话,$DSAGENT_HOME/bin会加上两次,因为第二次path里面已经有了$DSAGENT_HOME/bin,再加上前面一次 ...

  8. linux环境变量配置的方法,Linux环境变量配置方法

    Linux上环境变量配置分为设置永久变量和临时变量两种.环境变量设置方法同时要考虑环境Shell类型,不同类型的SHELL设置临时变量方法和设置永久变量对应的配置文件不同.Linux环境变量本身配置过 ...

  9. linux环境变量配置的方法,linux 设置环境变量方法是怎样的?Linux环境变量配置注意事项是什么?...

    linux系统是一种多用户的任务系统,它可以对每个用户都指定特定的用户变量.不同的程序在不同的环境下运行的时候,都需要去对环境变量来做定制,有很多朋友在设置 linux环境变量的时候,不知道如何操作, ...

  10. linux环境掌握熟悉一下,熟悉linux环境

    <熟悉linux环境>由会员分享,可在线阅读,更多相关<熟悉linux环境(7页珍藏版)>请在人人文库网上搜索. 1.实验二 熟悉Linux环境[实验目的]1.了解Linux系 ...

最新文章

  1. catia过载属性使用方法_catia简明操作手册
  2. Linux基础-兄弟连Linux
  3. MP3文件转换成arduino可以直接播放的wav格式,MP3转WAV工具
  4. python列表的复制,扯一下浅拷贝与深拷贝的区别
  5. ICCV 2017 CREST:《CREST: Convolutional Residual Learning for Visual Tracking》论文笔记
  6. 使用PHPCS+GIT钩子保障团队开发中代码风格一致性实践
  7. 单双目相机畸变校正--极线校正
  8. 深入biztalk消息以及消息订阅发布路由机制(四)-消息的轮询和执行
  9. 银泰抛弃传统数据库转投阿里云PolarDB 投入产出比增长2倍以上
  10. CCF NOI1001 温度转换
  11. 10分钟体验一把Kafka[测试用例]
  12. 分享:EditText默认不弹出软件键盘
  13. Android音视频开发学习笔记
  14. 去除word PDF水印 去除pdf限制
  15. (附源码)ssm网上购物系统 毕业设计 123361
  16. JAVA 使用SSH/springboot集成 CXF框架发布Webservice
  17. liteide使用教程 linux,liteide下载-LiteIDE(Go语言开发工具) 附使用教程 X30.3 中文免安装版 - 河东下载站...
  18. 光谱共焦的干涉测量原理及厚度测量模式
  19. 期末考试查分,基于青果高校教务系统的一个自动python脚本代码
  20. MPU6050数据分析

热门文章

  1. 2022 分布式存储市场调研报告
  2. linux tomcat startup.sh,Tomcat 安装教程与启动-startup.sh
  3. 微信小游戏上传设置成体验版或者提交审核
  4. ups不间断电源工作原理及应用说明
  5. linux系统硬盘坏道,Linux下两种修复硬盘坏道方法
  6. 模式与数据库与表的关系
  7. pe下找不到ssd硬盘_WinPE无法识别NVMe SSD硬盘,如何重装系统?
  8. dpbs和pbs的区别_PBS与TBS区别
  9. WebRTC NACK
  10. 计算机主机组装图,自己如何组装电脑主机?diy电脑组装教程图解详细步骤+装机心得(5)...