Redis集群安装

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:

Redis cluster是分布式集群,支持横向扩展,Redis从V3.0版本后才支持集群功能。Redis集群的工作原理类似于磁盘的raid5。

  • 多个redis节点网络互联,数据共享
  • 所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用
  • 不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为。
  • 支持在线增加、删除节点
  • 客户端可以连任何一个主节点进行读写

Redis集群安装

Redis集群搭建

机器准备:
两台机器,分别开启三个Redis服务(端口)
A机器上三个端口:7000、7002、7004,全部为主
B机器上三个端口:7001、7003、7005,全部为从
两台机器上都要编译安装Redis,然后编译并复制三个不同的Redis.conf,分别设置不同的端口号、dir等参数,还需要增加cluster相关参数,然后分别启动6个Redis服务

master (IP:192.168.3.74)
1、安装查看redis安装
2、[root@centos7 redis-4.0.2]# vi /etc/redis_7000.conf
port 7000
bind 192.168.3.74
daemonize yes
logfile "/data/logs/redis/redis_7000.log"
pidfile /var/run/redis_7000.pid
dir /data/redis_data/7000
cluster-enabled yes
##开启cluster功能
cluster-config-file nodes_7000.conf
##该配置文件可以在dir目录下自动生成
cluster-node-timeout 10100
appendonly yes
3、vi /etc/redis_7002.conf
port 7002
bind 192.168.3.74
daemonize yes
logfile "/data/logs/redis/redis_7002.log"
pidfile /var/run/redis_7002.pid
dir /data/redis_data/7002
cluster-enabled yes
##开启cluster功能
cluster-config-file nodes_7002.conf
##该配置文件可以在dir目录下自动生成
cluster-node-timeout 10100
appendonly yes

4、vi /etc/redis_7004.conf
port 7004
bind 192.168.3.74
daemonize yes
logfile "/data/logs/redis/redis_7004.log"
pidfile /var/run/redis_7004.pid
dir /data/redis_data/7004
cluster-enabled yes
##开启cluster功能
cluster-config-file nodes_7004.conf
##该配置文件可以在dir目录下自动生成
cluster-node-timeout 10100
appendonly yes

5、新建dir、log目录
[root@centos7 redis-4.0.2]# mkdir /data/redis_data

[root@centos7 redis-4.0.2]# mkdir /data/redis_data/{7000,7002,7004}

[root@centos7 redis-4.0.2]# mkdir -p /data/logs/redis

6、依次启动Redis服务7000,7002,7004:
[root@centos7 ~]# redis-server /etc/redis_7000.conf
[root@centos7 ~]# redis-server /etc/redis_7002.conf 
[root@centos7 ~]# redis-server /etc/redis_7004.conf 
[root@centos7 ~]# ps -ef | grep redis
#必须含有cluster这样的字段,才表示集群服务已开启
root 41532 1 0 16:16 ? 00:00:00 redis-server 192.168.3.74:7000 [cluster]
root 41537 1 0 16:16 ? 00:00:00 redis-server 192.168.3.74:7002 [cluster]
root 41544 1 0 16:17 ? 00:00:00 redis-server 192.168.3.74:7004 [cluster]

7、验证
[root@centos7 ~]# redis-cli -h 192.168.3.74 -p 7000

slave(IP:192.168.3.75)
1、和master一样安装好redis服务
[root@centos7-2 redis-4.0.2]# vi /etc/redis_7001.conf
port 7001
bind 192.168.3.75
daemonize yes
logfile "/data/logs/redis/redis_7001.log"
pidfile /var/run/redis_7001.pid
dir /data/redis_data/7001
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout 15000
appendonly yes

2、[root@centos7-2 redis-4.0.2]# vi /etc/redis_7003.conf
port 7003
bind 192.168.3.75
daemonize yes
pidfile /var/run/redis_7003.pid
dir /data/redis_data/7003
cluster-enabled yes
cluster-config-file nodes_7003.conf
cluster-node-timeout 15000
appendonly yes

3、[root@centos7-2 redis-4.0.2]# vi /etc/redis_7005.conf
port 7005
bind 192.168.3.75
daemonize yes
pidfile /var/run/redis_7005.pid
dir /data/redis_data/7005
cluster-enabled yes
cluster-config-file nodes_7005.conf
cluster-node-timeout 15000
appendonly yes

4、新建dir、log目录
[root@centos7-2 redis-4.0.2]# mkdir /data/redis_data

[root@centos7-2 redis-4.0.2]# mkdir /data/redis_data/{7001,7003,7005}

[root@centos7-2 redis-4.0.2]# mkdir -p /data/logs/redis

5、启动
[root@centos7-2 ~]# redis-server /etc/redis_7001.conf 
[root@centos7-2 ~]# redis-server /etc/redis_7003.conf 
[root@centos7-2 ~]# redis-server /etc/redis_7005.conf 
[root@centos7-2 ~]# ps -ef | grep redis
root 73344 1 0 15:52 ? 00:00:00 redis-server 192.168.3.75:7001 [cluster]
root 73350 1 0 15:52 ? 00:00:00 redis-server 192.168.3.75:7003 [cluster]
root 73361 1 0 15:52 ? 00:00:00 redis-server 192.168.3.75:7005 [cluster]

6、验证
[root@centos7-2 ~]# redis-cli -h 192.168.3.75 -p 7001

安装Ruby v2.2(master)
Redis集群需要ruby的支持,需要先安装ruby(Ruby只需在一台机器上运行)。Redis4.0需要使用Ruby2.2,安装方法如下(因为本机自带的是2.0版本的ruby,所以需要使用如下方法把源码包包制作成yum安装包,然后借助yum工具安装ruby2.2——升级ruby版本):

安装yum开发工具组
[root@centos7 ~]# yum -y groupinstall "Development Tools"

升级库文件
yum -y install gdbm-devel libdb4-devel libffi-devel libyaml libyaml-devel ncurses-devel openssl-devel readline-devel tcl-devel

创建制作rpm包的目录:
cd /root/
[root@centos7 ~]# mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

下载Ruby的源码包:
[root@centos7 ~]# wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz -P rpmbuild/SOURCES

下载specs文件,用于制作rpm包:
[root@centos7 ~]# wget https://raw.githubusercontent.com/tjinjin/automate-ruby-rpm/master/ruby22x.spec -P rpmbuild/SPECS

制作rpm包:
#此处有点时间
rpmbuild -bb rpmbuild/SPECS/ruby22x.spec
Redis集群安装

安装Ruby2.2:
[root@centos7 ~]# yum -y localinstall rpmbuild/RPMS/x86_64/ruby-2.2.3-1.el7.centos.x86_64.rpm

[root@centos7 ~]# ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
ruby 2.2安装完毕!

配置集群
安装Redis配置集群的工具:
1、[root@centos7 ~]# gem install redis
Redis集群安装

2、将命令redis-trib.rb加入环境变量目录下:
[root@centos7 ~]# cp /data/package/redis-4.0.2/src/redis-trib.rb /usr/bin/

3、连接启动
[root@centos7 ~]# redis-trib.rb create --replicas 1 192.168.3.74:7000 192.168.3.74:7002 192.168.3.74:7004 192.168.3.75:7001 192.168.3.75:7003 192.168.3.75:7005

Redis集群安装

Redis集群安装

#注意:redis-trib.rb create --replicas 1 表示一个master对应几个slave,此处的参数“1”表示master和slave一一对应

Redis集群配置完成!

Redis集群操作

因为Redis集群是分布式结构,所以可以连接任何一个端口。
1、[root@centos7 ~]# redis-cli -c -h 192.168.3.74 -p 7000
-c == cluster 表示已集群方式连接
2、创建数据:
192.168.3.74:7000> set cluster1 jacktest
-> Redirected to slot [8483] located at 192.168.3.75:7001
OK
##该操作会被重定向到192.168.3.75:7001

192.168.3.75:7001> set cluster2 test7000
-> Redirected to slot [4416] located at 192.168.3.74:7000
OK
又重定向到了7000端口

在主或者从上创建key建的话,从上都会有记录查到

集群相关的操作

查看集群的状态:
[root@centos7 ~]# redis-trib.rb check 192.168.3.74:7000
可以查看谁是主谁是从

列出节点:
192.168.3.74:7000>cluster nodes

查看集群信息:
192.168.3.74:7000> cluster info

添加节点(执行该操作前先在slave创建redis_7007.conf并启动):
[root@centos7-2 ~]# ps -ef | grep redis
root 73344 1 0 15:52 ? 00:00:03 redis-server 192.168.3.75:7001 [cluster]
root 73350 1 0 15:52 ? 00:00:03 redis-server 192.168.3.75:7003 [cluster]
root 73361 1 0 15:52 ? 00:00:03 redis-server 192.168.3.75:7005 [cluster]
root 77120 1 0 16:36 ? 00:00:00 redis-server 192.168.3.75:7007 [cluster]

添加7007节点
193.192.168.3.74:7000> cluster meet 192.168.3.74 7007
OK

可以看出是个主节点
193.192.168.3.75:7000> cluster nodes
a2ca174857183c038bd631a2c4a2baee6dad4025 192.168.3.75:7007@17007 master - 0 1513068550000 0 connected

使用以上方式添加的新节点都是以master身份存在!

将当前节点设置为指定节点的从:
[root@centos7 ~]# redis-server /etc/redis_7006.conf 
[root@centos7 ~]# ps -ef | grep redis
root 41532 1 0 16:16 ? 00:00:02 redis-server 192.168.3.74:7000 [cluster]
root 41537 1 0 16:16 ? 00:00:02 redis-server 192.168.3.74:7002 [cluster]
root 41544 1 0 16:17 ? 00:00:02 redis-server 192.168.3.74:7004 [cluster]
root 41762 1 0 16:43 ? 00:00:00 redis-server 192.168.3.74:7006 [cluster]

再添加7006
192.168.3.74:7000> cluster meet 192.168.3.74 7006
28cd13787419a0f211998b47b26540448672a94b 192.168.3.74:7006@17006 master - 0 1513068625434 0 connected

先更换到要设置的节点:
[root@centos7 ~]# redis-cli -c -h 192.168.3.74 -p 7006
192.168.3.74:7006> cluster replicate a2ca174857183c038bd631a2c4a2baee6dad4025
OK

查看
192.168.3.74:7006> cluster nodes
a2ca174857183c038bd631a2c4a2baee6dad4025 192.168.3.75:7007@17007 master - 0 1513068746626 0 connected
28cd13787419a0f211998b47b26540448672a94b 192.168.3.74:7006@17006 myself,slave a2ca174857183c038bd631a2c4a2baee6dad4025 0 1513068743000 7 connected

移除某节点:(不能移动主节点和当前登录的节点)
移除了7006节点
[root@centos7 ~]# redis-cli -c -h 192.168.3.74 -p 7000
192.168.3.74:7000> cluster forget 28cd13787419a0f211998b47b26540448672a94b
OK

保存当前配置:
192.168.3.74:7000> CLUSTER SAVECONFIG
OK












本文转自方向对了,就不怕路远了!51CTO博客,原文链接:http://blog.51cto.com/jacksoner/2049832 ,如需转载请自行联系原作者


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8天前
|
存储 NoSQL Redis
redis主从集群与分片集群的区别
主从集群通过主节点处理写操作并向从节点广播读操作,从节点处理读操作并复制主节点数据,优点在于提高读取性能、数据冗余及故障转移。分片集群则将数据分散存储于多节点,根据规则路由请求,优势在于横向扩展能力强,提升读写性能与存储容量,增强系统可用性和容错性。主从适用于简单场景,分片适合大规模高性能需求。
20 5
|
4月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
146 0
|
22天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
48 4
|
2月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
143 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
1月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
2月前
|
NoSQL Ubuntu Linux
Redis 安装
10月更文挑战第14天
58 1
|
29天前
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
|
2月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
308 3
|
2月前
|
NoSQL Linux Shell
Redis 的安装与部署(图文)
Redis 的安装与部署(图文)
|
2月前
|
NoSQL Ubuntu Redis
Ubuntu安装redis
本文介绍了在Ubuntu系统上安装Redis的两种方法:一种是通过编译安装本地Redis包,包括下载、解压、编译安装、配置启动和测试连接的步骤;另一种是通过apt安装在线的Redis包,并提供了更新系统软件包列表、安装Redis服务器、检查Redis服务器状态和测试连接的命令。
163 0
Ubuntu安装redis