redis集群搭建最佳实践

mfmdaoyou      2022-02-13     364

关键词:

要搭建Redis集群。首先得考虑以下的几个问题;

Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群?

Redis集群搭建的目的事实上也就是集群搭建的目的。全部的集群主要都是为了解决一个问题,横向扩展。
在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,可是纵向扩展非常快就会达到一个极限,单台机器的Cpu的处理速度,内存大小。硬盘大小没办法一直满足需求,并且机器纵向扩展的成本是相当高的。

集群的出现就是可以让多台机器像一台机器一样工作,实现了资源的横向扩展。


Redis是内存型数据库。当我们要存储的数据达到一定程度时,单台机器的内存满足不了我们的需求。搭建集群则是一种非常好的解决方式。

那么怎样可以让多台机器上的Redis可以像一台机器上的Redis一样工作呢?

须要解决下面三个问题;
1.对外暴露一个訪问节点
2.请求分片(sharding)
3.分片要合理(分片均匀,相同的请求要分配到相同的redis节点)

首先,要对外暴露一个訪问节点,后面可能有多台redis再工作;我们非常easy想到的就是代理(Proxy),对于client仅仅须要知道代理。通过代理来和后台的多台redis交互。

第二个问题能够使用hash算法解决,将请求的某个key取hash值。对redis个数取余。来分配的不同的redis上;然而这么做不能满足第三点中的相同的请求要分配到相同的redis中。在这样的情况下一致性哈希能够完美的解决问题,一致性哈希能够将redis的节点通过hash算法分布再一个232 个节点的圆环上。将请求的key用相同的hash算法映射到这个圆环上。然后在key值的节点顺时针寻找近期的redis节点,这样就保证了一致性;具体介绍能够參考:http://blog.csdn.net/sparkliang/article/details/5279393 。

假设让我来实现redis集群的话,我会採用zookeeper加上一个redis守护程序加上一致性hash算法来实现。只是twicer的大神们已经实现并开源了一个redis集群方案。我就不反复制造轮子了;来看看这个全球最大的redis集群使用者之中的一个的大神们实现的 twemproxy (nutcracker)有哪些特性。


Twemproxy除了能够作为redis的代理,它相同支持memerycached的ASCII协议。我这里主要了解Twemproxy在redis集群上的解决方式。

Twemproxy除了完美的攻克了上面的三个问题(相同採用了一致性hash算法)。另一个重要的特点;它支持

node ejection。假设使用redis当缓存,不是非常注重数据的一致性的话。开启node ejection能够在集群中某一台redis挂掉的时候将其送集群列表中移除,达到高可用性。

假设redis集群做为数据存储的话,或者非常注重数据的一致性。则能够禁用node jection。但此时须要使用其它方法实现高可用性,比方redis sentiel。

Twemproxy的具体介绍能够看看这篇文章:http://antirez.com/news/44 Twemproxy项目Github地址:https://github.com/twitter/twemproxy 。

 
废话说了这么多。来看看怎么安装twemproxy。搭建redis集群吧

首先依照github提示的步骤安装twemproxy:

To build nutcracker from source with debug logs enabled and assertions disabled:

$ git clone [email protected]:twitter/twemproxy.git
$ cd twemproxy
$ autoreconf -fvi
$ ./configure --enable-debug=log
$ make

依次输入上面的命令。然后输入:
$ src/nutcracker -h
假设显示帮助信息,则表示成功安装;

接下来编辑配置信息。找一个自己喜欢的文件夹,创建配置文件,后缀为yml,如twemproxy.test.yml;填入例如以下信息:
alpha:
  listen: 127.0.0.1:55555
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  redis: true
  server_retry_timeout: 30000
  server_failure_limit: 1
  servers:
    - 192.168.1.10:6379:1
    - 192.168.1.7:6379:1
注意缩进,否则将无法启动twenproxy。
当中listen:表示代理的ip以及port号。是暴露给client使用的。hash: 表示使用哪种hash方法,twemproxy提供了多种方式,详细能够看github介绍;distribution表示分配模式。有三种选择:ketama, modula,random。auto_reject_hosts: 就是上面所说的,自己主动移除失败的节点。redis: 表示使用的是redis集群,剩下的配置非常easy就不一一介绍了......
通过如此简单的配置之后,运行./src/nutcracker -c ./conf/nutcracker.test.yml(这里使用自己的安装路径和配置文件路径) 就启动了twemproxy, client仅仅须要通过redis-cli就能连接上proxy,用法和redis全然一样(但不是全部命令都支持)。

这样redis的集群就搭好了。是不是简单到爆?只是不要开心得太早,twemproxy也有它的不足之处。

1.不支持事务以及批量操作; 2.相较于直接訪问redis性能有所损耗;


尽管twemproxy有上述缺点,单相较于起带来的优点简直不值一提。但也说明它不适用于全部情况。

Redis集群还有非常多种搭建方式。其官方的cluster一直处于beta状态,相信了解了twemproxy后,大家会发现它是如今最好的选择!











Kubernetes 集群最佳实践

】Kubernetes集群最佳实践【英文标题】:Kubernetesclusterbestpractice【发布时间】:2016-09-0822:17:35【问题描述】:我正在使用Kubernetes开发一个新项目,我需要三个环境:DEV、QA和PROD。最推荐的是,创建多个集群或创建一个大集群,按... 查看详情

redis最佳实践经验总结

                      查看详情

带有 Ambari 的 NiFi 集群 - 维护的最佳实践是啥?

】带有Ambari的NiFi集群-维护的最佳实践是啥?【英文标题】:NiFiclusterwithAmbari-Whatarethebestpracticesformaintenance?带有Ambari的NiFi集群-维护的最佳实践是什么?【发布时间】:2020-05-2909:14:56【问题描述】:我有一个由Ambari管理的具有多... 查看详情

redis_09_redis集群实现sentinel哨兵应对高可用(代码片段)

文章目录一、前言二、Sentinel原理2.1Sentinel原理2.2Sentinel选主2.3Sentinel功能小结三、Sentinel实践3.1Sentinel配置3.2实践:Sentinel基本使用3.2.1实践:Sentinel搭建3.2.2实践:主节点宕机之后的选主过程(Sentinel保证高可用)3.2.3实践&... 查看详情

hbase最佳实践-集群规划

...  HBase自身具有极好的扩展性,也因此,构建扩展集群是它的天生强项之一。在实际线上应用中很多业务都运行在一个集群上,业务之间共享集群硬件、软件资源。那问题来了,一个集群上面到底应该运行哪些业务可以最... 查看详情

redis_12_redis集群实现sentinel哨兵应对高可用(代码片段)

文章目录一、前言二、Sentinel原理2.1Sentinel原理2.2Sentinel选主2.3Sentinel哨兵的四个功能2.4最简单是Redis哨兵主从结构至少需要三个机器三、Sentinel实践3.1Sentinel配置3.2实践:Sentinel基本使用3.2.1实践:Sentinel搭建3.2.2实践:... 查看详情

windows环境搭建redis集群

 一、Windows环境搭建Redis集群参考资料:Windows环境搭建Redis集群 二、Linux环境搭建Redis集群参考资料:RedisCluster的搭建与部署,实现redis的分布式方案 查看详情

阿里云数据库快速搭建疫情分析系统最佳实践

...,疫情态势分析和防控任务迫在眉睫,如果快速搭建高效的疫情态势分析系统是众多部门和单位的难题,阿里云RDSPG+Ganos解决方案可在极短时间内完成分析系统搭建,有效助力疫情防控。直达最佳实践:【... 查看详情

redis实战-redis集群环境搭建(自动搭建)(代码片段)

    上文我们通过手动搭建集群的方式完成了3主3从集群的部署,但是当集群节点众多时,必然会加大搭建集群的复杂度和运维成本。因此Redis官方提供了redis-trib.rb工具方便我们快速搭建集群。    &nbs... 查看详情

redis实战-redis集群环境搭建(自动搭建)(代码片段)

    上文我们通过手动搭建集群的方式完成了3主3从集群的部署,但是当集群节点众多时,必然会加大搭建集群的复杂度和运维成本。因此Redis官方提供了redis-trib.rb工具方便我们快速搭建集群。    &nbs... 查看详情

redis高可用集群搭建

redis高可用集群搭建_恶魔的复活的博客-CSDN博客_redis集群搭建 查看详情

redis高可用集群搭建

redis高可用集群搭建_恶魔的复活的博客-CSDN博客_redis集群搭建 查看详情

redis高可用集群搭建

redis高可用集群搭建_恶魔的复活的博客-CSDN博客_redis集群搭建 查看详情

redis集群讨论

一、生产应用场景二、存储架构演变三、应用最佳实践四、运维经验总结第1、2节:介绍rediscluster在唯品会的生产应用场景,以及存储架构的演变。第3节:rediscluster的稳定性,应用成熟度,踩到过那些坑,如何解决这些问题?这... 查看详情

redis最佳实践(代码片段)

...s是当前主流的缓存数据库实现,本文介绍Redis基本概念与最佳实践。架构与概念Redis是一个使用ANSIC编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。从2015年6月开始,Redis的开发由RedisLabs赞助,而2013年 查看详情

深入学习redis:集群(代码片段)

...受单机限制,以及无法实现写操作的负载均衡。Redis集群解决了上述问题,实现了较为完善的高可用方案。本文将详细介绍集群,主要内容包括:集群的作用;集群的搭建方法及设计方案;集群的基本原理&... 查看详情

redis集群搭建

目录1集群2集群架构图3集群细节4集群搭建5.创建集群1.创建集群2.输入yes,表示按照当前这种分配进行创建3.集群创建成功出现如下提示6.查看集群状态1.连接集群加上-c3.添加主节点4.添加从节点5.删除节点6.集群在线分片7.spring... 查看详情

redis集群搭建

一、redis集群说明集群采用一主三从,总共3主9从,总共12台,每个机房中放置一主三从  每个机房中放置其他机房的一从,达到高可用性二、集群搭建1.redis集群的搭建1.1修改系统参数1.使用root账户修改  /etc/security/limits... 查看详情