Centos 6.5 redis cluster集群搭建

2024-08-22 14:58

本文主要是介绍Centos 6.5 redis cluster集群搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Centos 6.5 redis cluster集群搭建

参考文章:Redis 学习笔记(十四)Redis Cluster介绍与搭建

前言

对于redis集群的创建,总体来说可以分为两种方式:

1.

使用redis replication功能对redis进行复制,同时对于主从进行读写分离。使用redis sentinel保证redis集群的高可用性。

这种方式有以下优点:

  • 可支持横向扩容,当吞吐量峰值更高时,可以通过扩容slave节点,能支撑更高的读QPS

但是也有以下缺点:

  • 通常情况下是一个master节点,即便做了读写分离,最多只能支撑几万的写QPS(简单的数据结构情况下,更复杂的数据可能更低)
  • 做读写分离的时候,redis客户端(比如jedis)对于这方面的读写分离支持不足。可能需要拓展和封装,或者修改源码
  • 做横向扩容的时候,需要注意不能采取星状机构,需要采取树状结构(星状结构会导致master节点挂载很多slave节点,做数据复制的时候对master节点压力大)
  • 需要维护一套sentinel集群来达到高可用目的

2.

redis 3.0版本推出了redis cluster。有效解决了redis分布式方面的需求。redis cluster集合了replication,sentinel功能,同时支持多master的横向扩容。可以很好的解决流量瓶颈方面的问题。使用redis cluster可以突破流量瓶颈。

相对来说,redis cluster是一个分布式解决方案。但是也有以下的功能限制:

  • key批量操作支持有限。目前只支持具有相同slot值的key执行批量操作
  • key事务操作支持有限,支持在同一个节点上的事务操作,不支持多个节点的事务。

本篇文章对于redis cluster的一些基础知识进行介绍以及如何搭建一个redis cluster集群。

数据分布理论

分布式数据库首要解决把数据按照某种规则映射到多个节点的问题,每个节点负责整个数据的一个子集。常见的分区有哈希分区和顺序分区。redis cluster采取哈希分区规则。常见的哈希分区有以下几种:

  • 节点取余分区
  • 一致性哈希分区
  • 虚拟槽分区

redis cluster采用了虚拟槽分区,所有的键根据哈希函数映射到0-16383slot中,计算公式为:slot = CRC16(key)&16383.每个节点负责维护一部分slot以及slot所映射的键值数据。

搭建redis cluster

环境
  • CentOs 6.5
  • Redis 4.0.9 (2018/4/10最新版本)
节点

redis cluster集群一般由多个节点组成,节点数量为6个以上才能保证高可用的集群。

这里列出一个节点的配置
复制redis目录下的utils/redis_init_scriptredis_7000:

修改以下内容:

REDISPORT=7000

然后把该文件拷贝到/etc/init.d/目录下。

拷贝redis目录下的redis.conf/etc/redis/7000.conf,修改以下内容:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
daemonize yes
pidfile  /var/run/redis_7000.pid
dir      /var/reids/7000
logfile  /var/log/redis/7000.log
bind 192.168.1.103 //本机IP地址
appendonly yes

然后创建以下文件夹:

  • /var/redis/7000
  • /var/log/redis/

然后去到/etc/init.d/目录下面执行./redis_7000 start命令启动一个redis实例。通过查看/var/log/redis/7000.log查看是否启动成功。

按照上面的方法部署6个实例。如果6个实例都在不同的机器上的话,直接复制配置文件过去即可。如果一台机器跑2个或以上的实例,则需要注意修改端口号。

假如你用于测试,所有的节点都跑在同一台机器上面,配置文件可以改成下面这样:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip 39.10X.XX.XX //自己服务器IP
cluster-announce-port 7000
cluster-announce-bus-port 17000
daemonize yes
pidfile  /var/run/redis_7000.pid
dir      /var/reids/7000
logfile  /var/log/redis/7000.log
appendonly yes

将6个redis实例跑起来之后就可以了。目前redis的集群已经跑起来,但是还无法工作。

创建集群

创建集群使用ruby相关的工具,则需要执行以下命令安装ruby:

yum install -y ruby
yum install -y rubygems
gem install redis

在执行gem install redis是时候如果爆出如下错误:

 gem install redis
ERROR:  Error installing redis:redis requires Ruby version >= 2.2.2.

这是由于系统为centos 6.5默认安装的Ruby版本为1.8.7所以需要升级到2.2.2以上。

执行以下命令:

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3curl -L get.rvm.io | bash -s stablesource /usr/local/rvm/scripts/rvm# 查看可用的ruby版本
rvm list known# 安装2.3.4版本
rvm install 2.3.4# 设置默认版本
rvm use 2.3.4gem install redis

这样就可以成功安装了。安装完了之后,复制redis目录下的src/redis-trib.rb文件到/usr/local/bin中。

然后使用如下方式创建集群:

redis-trib.rb create --replicas 1 192.168.1.103:7000 \
192.168.1.103:7001 192.168.1.104:7002 192.168.1.104:7003 \
192.168.1.105:7004 192.168.1.105:7005

执行过程中会询问你是否可以分配slot,输入yes.

其中参数--replicas表示每个master有一个slave,如果没有什么意外的话,redis集群以及搭建完毕。可以通过以下命令检查集群的状态:

redis-trib.rb check 192.168.1.103:7001

这篇关于Centos 6.5 redis cluster集群搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096596

相关文章

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结