Redis集群模式(Cluster)部署
1. 安装依赖包
注意:本节需要使用root用户操作
1.1 安装ruby
yum install ruby -y
yum install ruby-devel.x86_64 -y
1.2 安装rubygem
有些系统默认没有rubygems的包,可能需要手动安装,先安装好ruby-irb和ruby-rdoc,然后操作以下步骤。
(1) 下载rubygem包,https://rubygems.org/?locale=zh-CN
(2) 上传rubygems-2.4.8.zip至/redis目录
(3) 解压,安装
unzip rubygems-2.4.8.zip
cd rubygems-2.4.8
ruby setup.rb
1.3 安装redis-gem
上传redis.gem至/redis目录,执行命令gem install -l redis-3.2.2.gem
2. 安装Redis集群
本节开始可使用root用户或者你规划的用户安装redis
2.1 redis安装
上传redis-3.2.1.tar.gz到/redis目录
tar -zxvf redis-3.2.1.tar.gz
cd redis-3.2.1
make
make install PREFIX=/redis/redis
执行make命令可能会遇到这两种错误:
(1)
make[3]: gcc:命令未找到
make[3]: *** [net.o] 错误 127
make[3]: Leaving directory `/home/wxyuan/redis-3.2.1/deps/hiredis'
make[2]: *** [hiredis] 错误 2
make[2]: Leaving directory `/home/wxyuan/redis-3.2.1/deps'
make[1]: [persist-settings] 错误 2 (忽略)
CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] 错误 127
make[1]: Leaving directory `/home/wxyuan/redis-3.2.1/src'
make: *** [all] 错误 2
错误原因:缺少gcc包
解决方法:执行命令yum install gcc -y安装gcc包
(2)
cd src && make all
make[1]: Entering directory `/home/wxyuan/redis-3.2.1/src'
CC adlist.o
在包含自 adlist.c:34 的文件中:
zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录
zmalloc.h:55:2: 错误:#error "Newer version of jemalloc required"
make[1]: *** [adlist.o] 错误 1
make[1]: Leaving directory `/home/wxyuan/redis-3.2.1/src'
make: *** [all] 错误 2
原因分析和解决方法,请参考https://blog.csdn.net/bugall/article/details/45914867
2.2 创建节点目录
mkdir -p /redis/redis/cluster/7380
mkdir -p /redis/redis/cluster/7381
2.3 修改配置文件
将/redis/redis-3.2.1下的配置文件redis.conf拷贝到/redis/redis/cluster/7380下,并作如下修改
bind 192.168.1.101 127.0.0.1 #注意192.168.1.10改成你的机器IP。绑定多个IP,既可以远程访问,也可以本地客户端访问
port 7380 #端口可以修改
appendonly yes
daemonize yes
cluster-enabled yes
cluster-config-file /redis/redis/cluster/7380/nodes.conf
cluster-node-timeout 5000
2.4 复制配置文件redis.conf到其他节点
cp /redis/redis/cluster/7380/redis.conf /redis/redis/cluster/7381/redis.conf
# port、cluster-config-file需要修改下
#--------------------------------------------------------
#port 7381
#cluster-config-file /redis/redis/cluster/7381/nodes.conf
#------------------------------------------------------
2.5 启动redis
执行如下命令启动redis
[wxyuan@node1 ~]$ /redis/redis/bin/redis-server /redis/redis/cluster/7380/redis.conf
[wxyuan@node1 ~]$ /redis/redis/bin/redis-server /redis/redis/cluster/7381/redis.conf
启动后,使用命令ps -ef|grep redis可查看redis进程。
[wxyuan@node1 ~]$ ps -ef|grep redis
wxyuan 1912 1 0 21:19 ? 00:00:02 /redis/redis/bin/redis-server 192.168.1.101:7380 [cluster]
wxyuan 1916 1 0 21:19 ? 00:00:02 /redis/redis/bin/redis-server 192.168.1.101:7381 [cluster]
注意:以上步骤,另外两台机器需要做同样的操作
3 创建redis集群
注意:创建集群前,最好关闭防火墙,如果防火墙配置不当,可能出现连接拒绝的错误
创建集群,让上面的实例互相通讯(1表示为每个master分配一个salve)
[wxyuan@node1 src]$ ./redis-trib.rb create --replicas 1 192.168.1.101:7380 192.168.1.101:7381 192.168.1.102:7380 192.168.1.102:7381 192.168.1.103:7380 192.168.1.103:7381
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.103:7380
192.168.1.102:7380
192.168.1.101:7380
Adding replica 192.168.1.102:7381 to 192.168.1.103:7380
Adding replica 192.168.1.103:7381 to 192.168.1.102:7380
Adding replica 192.168.1.101:7381 to 192.168.1.101:7380
M: 9e486a62edb7be05691219259a534a0491e376e3 192.168.1.101:7380
slots:10923-16383 (5461 slots) master
S: 51f00a2e9639b0427ec177877d775244307b096e 192.168.1.101:7381
replicates 9e486a62edb7be05691219259a534a0491e376e3
M: bc2d50daf9adb4e16e40048249ea97ec039dfa46 192.168.1.102:7380
slots:5461-10922 (5462 slots) master
S: 2ad41829d6c48a0216fb4632253add6edc80b3fc 192.168.1.102:7381
replicates 5e7a6df4a0c931ca36afced6c3c62330da026c26
M: 5e7a6df4a0c931ca36afced6c3c62330da026c26 192.168.1.103:7380
slots:0-5460 (5461 slots) master
S: 07698f884a97e6a85a7f032c0fd95738d6e73017 192.168.1.103:7381
replicates bc2d50daf9adb4e16e40048249ea97ec039dfa46
# 这里我们可以看到master节点为192.168.1.101:7380、192.168.1.102:7380、192.168.1.103:7380;其他三个为slave节点,输入yes确认
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.1.101:7380)
M: 9e486a62edb7be05691219259a534a0491e376e3 192.168.1.101:7380
slots:10923-16383 (5461 slots) master
M: 51f00a2e9639b0427ec177877d775244307b096e 192.168.1.101:7381
slots: (0 slots) master
replicates 9e486a62edb7be05691219259a534a0491e376e3
M: bc2d50daf9adb4e16e40048249ea97ec039dfa46 192.168.1.102:7380
slots:5461-10922 (5462 slots) master
M: 2ad41829d6c48a0216fb4632253add6edc80b3fc 192.168.1.102:7381
slots: (0 slots) master
replicates 5e7a6df4a0c931ca36afced6c3c62330da026c26
M: 5e7a6df4a0c931ca36afced6c3c62330da026c26 192.168.1.103:7380
slots:0-5460 (5461 slots) master
M: 07698f884a97e6a85a7f032c0fd95738d6e73017 192.168.1.103:7381
slots: (0 slots) master
replicates bc2d50daf9adb4e16e40048249ea97ec039dfa46
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
到此redis集群创建完成。
4. 测试redis集群
在任意一台集群机器上执行如下操作
[wxyuan@node1 ~]$ /redis/redis/bin/redis-cli -h 192.168.1.101 -p 7380 -c
192.168.1.101:7380> set k1 "AA"
OK
192.168.1.101:7380> set k2 "BB"
-> Redirected to slot [449] located at 192.168.1.103:7380
OK
192.168.1.103:7380> get k1
-> Redirected to slot [12706] located at 192.168.1.101:7380
"AA"
192.168.1.101:7380> get k2
-> Redirected to slot [449] located at 192.168.1.103:7380
"BB"
192.168.1.103:7380>
Redis集群模式(Cluster)部署的更多相关文章
- Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析
Redis 的几种常见使用方式包括: 单机模式 主从模式 哨兵模式(sentinel) 集群模式(cluster) 第三方模式 单机模式 Redis 单副本,采用单个 Redis 节点部署架构,没有备 ...
- 7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?
作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年, ...
- 突破Java面试-Redis集群模式的原理
1 面试题 Redis集群模式的工作原理说一下?在集群模式下,key是如何寻址的?寻址都有哪些算法?了解一致性hash吗? 2 考点分析 Redis不断在发展-Redis cluster集群模式,可以 ...
- Redis集群模式之分布式集群模式
前言 Redis集群模式主要有2种: 主从集群 分布式集群. 前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡. 本文主要讲解主从集群.本章主要讲解后一半部分,Redis集群. 与本 ...
- 5分钟实现用docker搭建Redis集群模式和哨兵模式
如果让你为开发.测试环境分别搭一套哨兵和集群模式的redis,你最快需要多久,或许你需要一天?2小时?事实是可以更短. 是的,你已经猜到了,用docker部署,真的只需要十几分钟. 一.准备工作 拉取 ...
- Redis集群模式配置
redis集群部署安装: https://blog.csdn.net/huwh_/article/details/79242625 https://www.cnblogs.com/mafly/p/re ...
- Springboot2.x集成Redis集群模式
Springboot2.x集成Redis集群模式 说明 Redis集群模式是Redis高可用方案的一种实现方式,通过集群模式可以实现Redis数据多处存储,以及自动的故障转移.如果想了解更多集群模式的 ...
- AWS 创建redis 集群模式遇到的问题
问题描述 前几天在aws 平台创建了Redis 集群模式,但是链接集群的时候发现无法连接,返回信息超时. 通过参数组创建redis的时候提示报错:Replication group with spec ...
- Redis集群模式部署
以下以Linux(CentOS)系统为例 1.1 下载和编译 $ wget http://download.redis.io/releases/redis-4.0.7.tar.gz $ tar xzf ...
随机推荐
- start-stop-daemon: matching on world-writable pidfile /var/run/redis/redis-server.pid is insecurefailed
Microsoft Store上 看到最新的Ubuntu 20.04 LTS 已经适配到WSL上了, 于是卸载了老版本 18.04 LTS,安装上了最新版本的. 第一次启动会比较慢,需耐心等待 Ins ...
- 【笔记】 springCloud--Alibaba--服务注册和服务发现
接着上一次的nacos初步讲解和安装 任意门:https://www.cnblogs.com/Yangbuyi/p/13479767.html 如果启动失败的话 上一篇也是讲解过的. 本文章开始服务注 ...
- Android popupwindow在低版本手机上无法显示
popupwindow偶尔的显示失效(在低版本Android系统的手机上,测试机6.0)实在是坑害了不少人,害,而且坑了for a long time.本小白就是其中一个受害者. 百度了N久N多还是没 ...
- Ubuntu下载连接(阿里云镜像)
ubuntu 14.04: http://mirrors.aliyun.com/ubuntu-releases/14.04/ ubuntu 16.04: http://mirrors.aliyun.c ...
- 企业级Registry仓库Harbor的部署与简介
Harbor 是Vmware公司开源的企业级Docker Registry管理项目,开源项目地址:https://github.com/vmware/harbor Harbor的所有组件都在Docke ...
- mr原理简单分析
背景 又是一个周末一天一天的过的好快,今天的任务干啥呢,索引总结一些mr吧,因为前两天有面试问过我?我当时也是简单说了一下,毕竟现在写mr程序的应该很少很少了,废话不说了,结合官网和自己理解写起. 官 ...
- 【C艹】关于sort用法之重构cmp(comp)函数的笔记
众所周知,balabalabalabala············. 所以掌握sort函数(库文件:<algorithm>)的用法还是很有必要的. 一般选手只会简单地用用sort排一排数组 ...
- 修改Markdown神器[Typora]的主题样式
修改Markdown神器[Typora]的主题样式 Typora是一款专注写作的工具,基于markdown标记语言来完成写作.出于以下原因决定替换主题样式: 1.自带的样式比较low,想替换一款高大上 ...
- Kubernetes入门(一)——Kubernetes v1.18.5 安装部署
Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理:二是使用官方提供的k ...
- Java面试题(MySQL篇)
MySql 164.数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项. 第二范式:要求实体的属性完全依赖于主关键字.所谓完全依赖是指不能存在仅依赖主关键 ...