Linux 安装Redis<集群版>(使用Mac远程访问)
阅读本文需要先阅读安装Redis<准备>
一 架构细节
所有的redis节点彼此互联(PING-PONG机制) 内部使用二进制协议优化传输速度和带宽
节点的fail是通过集群中超过半数的节点检测失效时才生效
客户端与redis节点直连 不需要中间代理层 客户端不需要连接集群所有节点 连接集群中任何一个可用节点即可
redis-cluster把所有的物理节点映射到[0-16383]slot上 cluster负责维护(redis集群中内置了16384个哈希槽 当需要在redis集群中放置一个key-value时 redis先对key使用crc16算法算出一个结果 然后把结果对16384求余数 这样每个key都会对应一个编号在0-16383之间的哈希槽 redis会根据节点数量大致均等的将哈希槽映射到不同的节点)


redis集群中至少应该有三个节点 要保证集群的高可用 需要每个节点有一个备份机
redis集群至少需要6台服务器
这里我准备了6台服务器
120.79.191.xxx 39.108.121.xxx 120.77.148.xxx 39.108.162.xxx 120.79.62.xxx 112.74.54.xxx
二 在六台服务器上分别安装运行Redis
redis依赖
yum install gcc-c++
解压
cd redis压缩包所在目录
tar -xvf redis-4.0.10.tar.gz
编译
cd redis解压包内部 -> cd /hy/redis-4.0.10
make
make install PREFIX=/usr/local/redis
配置文件准备
cp /hy/redis-4.0.10/redis.conf /usr/local/redis/bin
编辑(根据key修改value)
vim /usr/local/redis/bin/redis.conf
# 注释掉bind
# bind 127.0.0.1
# 设置后台启动
daemonize yes
# 设置集群密码
masterauth redis12345
# 设置单机密码
requirepass redis12345
# 开启集群
cluster-enabled yes
# 设置集群节点超时
cluster-node-timeout 15000
进入bin目录
cd /usr/local/redis/bin
启动
./redis-server redis.conf
三 选择其中一台服务器配置集群
ruby环境
yum install curl
curl -L get.rvm.io | bash -s stable
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable
source ~/.bashrc
source ~/.bash_profile
source /usr/local/rvm/scripts/rvm
rvm list known
rvm install 2.5.1
rvm use 2.5.1

安装ruby脚本库
cd ruby脚本库压缩包所在目录
gem install redis-4.0.1.gem
编辑(根据key修改value)
vim /usr/local/rvm/gems/ruby-2.5.1/gems/redis-4.0.1/lib/redis/client.rb
:host => "0.0.0.0",
:password => "redis12345",
脚本文件准备
cp /hy/redis-4.0.10/src/redis-trib.rb /usr/local/redis/bin
执行脚本命令
cd /usr/local/redis/bin
./redis-trib.rb create --replicas 1 120.79.191.xxx:6379 39.108.121.xxx:6379 120.77.148.xxx:6379 39.108.162.xxx:6379 120.79.62.xxx:6379 112.74.54.xxx:6379
四 解决大坑
场景: 使用./redis-cli存取数据没问题 使用JedisCluster存取数据时好时坏(部分key会导致Could not get a resource from the pool)
原因: redis集群中某些节点IP是私有IP 所以分配到该节点上的key是访问不到的
解决办法 -> 在六台服务器上分别修改配置
进入bin目录
cd /usr/local/redis/bin
关闭
./redis-cli -a redis12345 shutdown
编辑(将所有节点私有IP换成公网IP 重点关注myself,master或myself,slave 注意每份配置文件要修改的IP不一样)
vim /usr/local/redis/bin/nodes.conf
启动
./redis-server redis.conf
希望道友早日看到 真是大坑...
Linux 安装Redis<集群版>(使用Mac远程访问)的更多相关文章
- Linux 安装Redis<单机版>(使用Mac远程访问)
阅读本文需要先阅读安装Redis<准备> redis依赖 yum install gcc-c++ 解压 cd redis压缩包所在目录 tar -xvf redis-4.0.10.tar. ...
- Linux 安装Redis<准备>(使用Mac远程访问)
阅读本文需要一定的Linux基础 一 Redis简介 redis是用c语言编写的一款开源的高性能键值对(key-value)数据库 它通过提供多种键值数据类型来适应不同场景下的存储需求 二 Redis ...
- Linux 安装Zookeeper<单机版>(使用Mac远程访问)
阅读本文需要先阅读安装Zookeeper<准备> 新建目录 mkdir /usr/local/zookeeper 解压 cd zookeeper压缩包所在目录 tar -xvf zooke ...
- Linux 安装FastDFS<单机版>(使用Mac远程访问)
阅读本文需要先阅读安装FastDFS<准备> 一 编译环境 yum install gcc-c++ yum -y install libevent yum install -y pcre ...
- Linux 安装Zookeeper<准备>(使用Mac远程访问)
阅读本文需要安装JDK 一 Zookeeper简介 zookeeper是用java语言编写的一款为分布式应用所设计的协调服务 zookeeper是apacahe hadoop的子项目 使用zookee ...
- Linux 安装FastDFS<准备>(使用Mac远程访问)
阅读本文需要一定的Linux基础 一 FastDFS简介 fastdfs是用c语言编写的一款开源分布式文件系统, fastdfs为互联网量身定制, 充分考虑了冗余备份, 负载均衡, 线性扩容等机制, ...
- LINUX安装REDIS集群
linux安装单机版redis已经在另一篇文章说过了,下边来搞集群,环境是新浪云服务器: redis3.0以后开始支持集群. 前言:redis用什么做集群? 用一个叫redis-trib.rb的rub ...
- Redis系列---安装redis单机版02
本章将带领大家一步一步安装Redis单机版(Redis从3.0版本后就开始支持集群了,集群将会后边章节带领大家操作) 准备环境: Centos 6.X redis3.+版本(自行下载,redis 的版 ...
- Linux安装Redis步骤和make遇到的坑
Linux安装Redis服务步骤 1.获取redis资源 cd /usr/local wget https://mirrors.huaweicloud.com/redis/redis-6 ...
- Linux安装redis服务器
Linux安装redis服务器 初次接触,这里简单的说下我遇到的情况以及安装方法,当然也是参考了诸位大神的. 确定虚拟机的主机IP. 1)首先需要一个linux虚拟机,确定虚拟机的ip ,输入命令:# ...
随机推荐
- php json格式化输出
1.json格式是适用于多种语言的数据格式,通用性高 2.在php中将array格式的数据转化为json格式 3.默认情况下转化后的json格式为一个串,需要将这个串格式化成相应的样式输出 主要的函数 ...
- Dubbo实践(九)ExtensionFactory
ExtensionLoader.java中注意到injectExtension函数是为了设置所生成的对象的field:其方法为对于有set函数的field进行设置.此时用到了ExtensionFact ...
- [USACO06NOV]玉米田$Corn \ \ Fields$ (状压$DP$)
#\(\mathcal{\color{red}{Description}}\) \(Link\) 农场主\(John\)新买了一块长方形的新牧场,这块牧场被划分成\(M\)行\(N\)列\((1 ≤ ...
- JNI由浅入深_5_基本类型应用
1.基本类型应用 对于JNI处理基本类型还是比较简单的,下面是Java代码: <span style="font-size:14px;"> public native ...
- SaltStack 自动化工具
1.服务端安装master: # yum -y install salt-master # yum -y install salt-minion 2.客户端安装minion: # yum -y ins ...
- 触发器 of oracle
. 本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行. 因此触发器不需要人为的去调用 ...
- dfs板子题-Hdu1283Vegetables
题目描述毕业后,Vegetable在一家建筑公司找到了工作.他所在的城市将要进行整修,要求把所有空地修成公园. 市区是一个N*M的矩形,Vegetable拿到了该市的地图,现在判断共要修几处公园? 注 ...
- MySQL案例03:(MyCAT报错) [ERROR][$_NIOREACTOR-3-RW] caught err: java.lang.OutOfM emoryError: Unable to acquire 131072 bytes of memory, got 0
上班坐下来没多久,接同事电话说有两台mysql服务器无法访问,其中这两台服务器是mycat服务器+MySQL服务器,具体处理过程如下: 一.错误信息 错误信息01: :: ::, [INFO ][$_ ...
- 【Linux】日志分析及管理
日志的作用 用于记录系统.程序运行中发生的各种事件 eg: [root@localhost ~]# yum install -y httpd [root@localhost ~]# tail ...
- 小白的Unity5之路(一)
Player移动: public float speed = 6f; Vector3 movement; Rigidbody playerRididbody; void FixedUpdate () ...