(1)集群原理

   在Redis集群中,所有的Redis节点彼此互联,节点内部使用二进制协议优化传输速度和带宽。 当一个节点挂掉后,集群中超过半数的节点检测失效时才认为该节点已失效。不同于Tomcat集群 需要使用反向代理服务器,Redis 集群中的任意节点都可以直接和Java客户端连接。Redis 集群上 的数据分配则是采用哈希槽(HASH SLOT),Redis集群中内置了16384 个哈希槽,当有数据需要 存储时,Redis会首先使用CRC16算法对key进行计算,将计算获得的结果对16384取余,这样每 一个key都会对应一个取值在0~16383之间的哈希槽,Redis则根据这个余数将该条数据存储到对 应的Redis节点上,开发者可根据每个Redis实例的性能来调整每个Redis实例上哈希槽的分布范 围。

(2)集群规划

  本案例在同一台服务器上用不同的端口表示不同的Redis服务器(伪分布式集群)。 主节点: 192.168.248.144:8001, 192. 168.248.144:8002, 192.1 68.248.144:8003。 从节点: 192.168.248.144:8004, 192. 168.248.144:8005, 192. 168.248.144:8006。

(3)集群配置

  Redis集群管理工具redis-trib.rb依赖Ruby环境,首先需要安装Ruby环境。

  安装步骤:

  1.导入公钥

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

    

  2.输入下面的命令来请求安装

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

 

   3.shell环境更新一下,rvm -v 显示版本

source ~/.bashrc
source ~/.bash_profile
source /usr/local/rvm/scripts/rvm

  4.列出已知的 Ruby 版本

rvm list known

5.安装rvm

rvm install 2.5.1

6.安装 redis依赖

7.将下载好的redis编译安装

mkdir redisCluster
CP -f ./redis-4.0.10.tar.gz ./redisCluster/
cd redisCluster
tar -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10
make MALLOClibc
make install

8 复制redis-trib.rb到redisCluster下

9.在redisCluster下创建6个文件夹(8001-8006),并将redis.conf复制到8001-8006下,更改每一个redis.conf

8001为例:
port 8001
#bind 127.0.0.1
cluster-enabled yes
cluster-config-file node-8001.conf
protected-mode no
daemonize yes
requirepass 123456
masterauth 123456

10.进入redis-5.0.5启动6个redis,回到redisCluster目录下

通过指令找到安装的redis在ruby环境中的配置client.rb

打开client.rb并修改密码

11.创建集群

redis-cli --cluster create 192.168.205.100:8001 192.168.20
5.100:8002 192.168.205.100:8003 192.168.205.100:8004 192.168.205.100:8005 192.168.205.100:8006 --cluster-replicas 1 -a 123456

Can I set the above configuration? (type 'yes' to accept): yes,该处请输入yes,不然好像分配不了哈希槽

这样就行了

测试:

[root@localhost redis-5.0.]# redis-cli -p  -a  -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not
be safe.127.0.0.1:> auth
OK
127.0.0.1:> CLUSTER nodes
4c3938eb52b31c3dab74d0edb878d6c42a711a7a 192.168.205.100:@ master -
connected -16383b4dfec3ff7490fd7207bdf7f48d0212d8596ba15 192.168.205.100:@ myself,master -
connected -5460adb99416cc376b767198aa606042e98b904a1544 192.168.205.100:@ master -
connected -10922f83c3c955420221b4939617e1520d5ba9370b1d8 192.168.205.100:@ slave adb99416cc376b7
67198aa606042e98b904a1544 connected2bbfdf6085405753ef5931cb0a883db9043a2f22 192.168.205.100:@ slave b4dfec3ff7490fd
7207bdf7f48d0212d8596ba15 connected4603f708c2e106cd2c227a7c7eb6986ca62b293c 192.168.205.100:@ slave 4c3938eb52b31c3
dab74d0edb878d6c42a711a7a connected127.0.0.:> set k1 测试
-> Redirected to slot [] located at 192.168.205.100:
OK
192.168.205.100:> exit
[root@localhost redis-5.0.]# redis-cli -p -a -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not
be safe.127.0.0.1:> auth
OK
127.0.0.1:> get k1
-> Redirected to slot [

ok

最新文章

  1. 使用HttpClient连接池进行https单双向验证
  2. [OLE DB 源 [1]] 警告: 无法从 OLE DB 访问接口检索列代码页信息。如果该组件支持“DefaultCodePage”属性,将使用来自该属性的代码页。如果当前的字符串代码页值不正确,请更改该属性的值。如果该组件不支持该属性,将使用来自该组件的区域设置 ID 的代码页。
  3. 扩展欧几里德算法 cogs.tk 2057. [ZLXOI2015]殉国
  4. MapReduce数据流(二)
  5. SQL Server 中LEN函数的问题
  6. HBase MultiVersionConsistencyControl
  7. 《JavaScript 闯关记》之原型及原型链
  8. EasyUI选项卡tab页面处理示例
  9. vue.js实例对象+组件树
  10. Android为TV端助力 handler传递消息机制
  11. bootstrap模态框modal使用remote动态加载内容,第二次加载显示相同内容解决办法
  12. D5 F
  13. Maven项目下servlet异常
  14. React Refs
  15. NDK学习笔记(三):DynamicKnobs的机制
  16. nginx配置开机启动及配置sudo授权启动
  17. proguard-rules.pro、混淆、导jar包
  18. 整合Solr到Tomcat服务器,并配置IK分词
  19. hibernate中指定非外键进行关联
  20. asp.net core 自定义中间件和service

热门文章

  1. widows 10 下解决在npm install python 环境报错的问题
  2. html块级元素的水平垂、直居中的方式
  3. C++基类和派生类的构造函数
  4. 实验19:Frame-Relay
  5. 表达式属性(C#6.0和C#7.0
  6. Java properties文件集
  7. svn: Can't connect to host '': 由于目标机器积极 原因及解决办法
  8. 使用Intellij编写Spring Hello World
  9. ubuntu 14.04 安装gvim 后报出warning
  10. centos系统组件优化