高性能网站架构之缓存篇—Redis集群搭建

news/2024/5/20 12:06:34/文章来源:https://blog.csdn.net/weixin_34221036/article/details/89826744

看过 高性能网站架构之缓存篇--Redis安装配置高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的实际应用中,使用redis肯定不会使用单机版,不光是redis不能使用单机版,其他的也不会使用,所以今天我们来说一下redis cluster的安装。      

1.  Redis Cluster的架构图。          

         (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

         (2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

         (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

         (4)redis-cluster把所有的物理节点映射到[0-16383]slot上(哈希槽),cluster 负责维护

Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

2.  redis-cluster投票:容错

          

         (1)领着投票过程是集群中所有master参与,如果半数以上master节点与其中一个master节点通信超时(cluster-node-timeout),认为当前master节点挂掉.

         (2):什么时候整个集群不可用(cluster_state:fail)?

         a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

        b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

        ps:当集群不可用时,所有对集群的操作做都不可用,收到((error)CLUSTERDOWN The cluster is down)错误。

3.  安装环境

        Redis Cluster的安装需要的环境我们需要准备好,最重要的最难解决的就是ruby环境,在这里,给大家一个连接,如至直接安装ruby,安装不上的话,大家可以参考这篇文章RubyGems镜像,淘宝的ruby镜像。他是没15分钟更新一次,所以跟国外的基本一样。

4.  集群搭建

        本次为实验教程,所以在一台虚拟机中进行搭建,跟在多台真机上搭建其实没有什么区别,只要保证网络通信ok就可以了!

        我们在几台机器上通过端口号的不同,搭建一个伪集群。在一个服务器上创建多个redis实例。端口号如下所示

主节点:127.0.0.1:7001 127.0.0.1:7002127.0.0.1:7003

从节点:127.0.0.1:7004127.0.0.1:7005127.0.0.1:7006

在/usr/local下创建redis-cluster目录,其下创建redis01、redis02。。redis06目录,如下:

        

         然后我们将redis 安装到redis01中,安装完以后我们在将Redis编译目录中的redis。Conf文件复制到redis01目录下,就会看到在redis01目录下会有如下的文件。

        

         然后我们将redis01文件夹的文件分别复制到redis02……redis06文件夹中。同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。

        修改每个文件夹下的配置文件,有三点需要修改,每个配置文件都要配置自己的端口号,不能重复。

        

        准备好以上工作以后,我们分别启动每个redis进行的实例。如果麻烦的话,可以自己写一个执行脚本。启动完毕以后我们输入命令ps ax|grep redis ,查看实例是否启动,出现如下所以图片,表示所有的实例都启动了。

       

       实例启动完以后,我们要开始创建集群,在redis-cluter文件夹下执行如下命令。

  1. ./redis-trib.rbcreate --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004127.0.0.1:7005 127.0.0.1:7006。
  2. >>> Creating cluster

  3. Connecting to node 127.0.0.1:7001: OK

  4. Connecting to node 127.0.0.1:7002: OK

  5. Connecting to node 127.0.0.1:7003: OK

  6. Connecting to node 127.0.0.1:7004: OK

  7. Connecting to node 127.0.0.1:7005: OK

  8. Connecting to node 127.0.0.1:7006: OK

  9. >>> Performing hash slotsallocation on 6 nodes...

  10. Using 3 masters:

  11. 127.0.0.1:7001

  12. 127.0.0.1:7002

  13. 127.0.0.1:7003

  14. Adding replica 127.0.0.1:7004 to 127.0.0.1:7001

  15. Adding replica 127.0.0.1:7005 to 127.0.0.1:7002

  16. Adding replica 127.0.0.1:7006 to 127.0.0.1:7003

  17. M: 5a8523db7e12ca600dc82901ced06741b3010076127.0.0.1:7001

  18. slots:0-5460 (5461 slots) master

  19. M: bf6f0929044db485dea9b565bb51e0c917d20a53127.0.0.1:7002

  20. slots:5461-10922 (5462 slots) master

  21. M: c5e334dc4a53f655cb98fa3c3bdef8a808a693ca127.0.0.1:7003

  22. slots:10923-16383 (5461 slots) master

  23. S: 2a61b87b49e5b1c84092918fa2467dd70fec115f127.0.0.1:7004

  24. replicates 5a8523db7e12ca600dc82901ced06741b3010076

  25. S: 14848b8c813766387cfd77229bd2d1ffd6ac8d65127.0.0.1:7005

  26. replicates bf6f0929044db485dea9b565bb51e0c917d20a53

  27. S: 3192cbe437fe67bbde9062f59d5a77dabcd0d632127.0.0.1:7006

  28. replicates c5e334dc4a53f655cb98fa3c3bdef8a808a693ca

  29. Can I set the above configuration? (type'yes' to accept): yes

  30. >>> Nodes configuration updated

  31. >>> Assign a different configepoch to each node

  32. >>> Sending CLUSTER MEET messagesto join the cluster

  33. Waiting for the cluster to join.....

  34. >>> Performing Cluster Check(using node 127.0.0.1:7001)

  35. M: 5a8523db7e12ca600dc82901ced06741b3010076127.0.0.1:7001

  36. slots:0-5460 (5461 slots) master

  37. M: bf6f0929044db485dea9b565bb51e0c917d20a53127.0.0.1:7002

  38. slots:5461-10922 (5462 slots) master

  39. M: c5e334dc4a53f655cb98fa3c3bdef8a808a693ca127.0.0.1:7003

  40. slots:10923-16383 (5461 slots) master

  41. M: 2a61b87b49e5b1c84092918fa2467dd70fec115f127.0.0.1:7004

  42. slots: (0 slots) master

  43. replicates 5a8523db7e12ca600dc82901ced06741b3010076

  44. M: 14848b8c813766387cfd77229bd2d1ffd6ac8d65127.0.0.1:7005

  45. slots: (0 slots) master

  46. replicates bf6f0929044db485dea9b565bb51e0c917d20a53

  47. M: 3192cbe437fe67bbde9062f59d5a77dabcd0d632127.0.0.1:7006

  48. slots: (0 slots) master

  49. replicates c5e334dc4a53f655cb98fa3c3bdef8a808a693ca

  50. [OK] All nodes agree about slotsconfiguration.

  51. >>> Check for open slots...

  52. >>> Check slots coverage...

  53. [OK] All 16384 slots covered.
复制代码

这样就表示我们的集群创建成功了!

5.  集群测试

        我们输入redis01/redis-cli -h 127.0.0.1  -p 7002–c命令后,切忌要加入-c,否则我们进入的不是集群环境。进入客户端以后,我们输入set a 100 发现他会进行跳转,这就是因为他经过计算以后,要存储100的hash槽在7003 实例上。这样就表示我们的集群成功了!

        

         关闭redis集群不能直接kill掉进程,或者关机,我们要通过命令redis01/redis-cli -p 7001 shutdown进行关闭,这样在关闭之前,数据才能够进行保存。





本文作者:berqilee
本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_796905.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内容换行_内容换行或分段不会影响到SEO优化和搜索引擎收录抓取

换行是为了看上去更加美观,而分段表示一个段落的结束,将会使内容版面更加美观,利于人们的阅读。内容是换行还是分段、文字的大小、颜色等不同情况的使用,对于搜索引擎收录抓取都是没有任何影响的,它们的不同使用只会影…

网站改成静态页面打不开_公司网站404,不淡定有啥办法,该有的态度还是要有...

了解网络营销,多元生活伴你左右,欢迎观看正阳说网络营销课程_12今天来聊一聊关于网站404的那些事儿,喜欢上网的朋友多多少少还是会遇到这个问题,为什么会出现这个原因呢?主要是用户操作失误;网站链接书写错…

linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...

模式简介工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化那个类,其使一个类的实例化延迟到其子类中。前边我们学习了简单工厂模式,简单工厂模式的最大优势在于工厂类中包含了必要逻辑判断,根据客户端的条件…

seo服务器渲染_关于SSR( 服务端渲染 )其利与弊是什么?

服务端渲染(SSR)原理和客户端(CSR)渲染区别一、服务端渲染(SSR)是什么服务端渲染简单来说就是:用户使用的浏览器浏览的都是一些没有复杂逻辑的、简单的页面,这些页面都是在后端将 ht…

个人博客系统服务器,服务器搭建WordPress个人博客网站

WordPress 是世界上使用最广泛的博客系统之一,是一款开源的PHP软件。有丰富的插件模板资源,使用WordPress可以快速搭建独立的博客网站。WordPress-Logo-PNG-Picture.png本教程软件环境基于CentOS 6.8 64位,从配置LNMP环境开始一步步搭建属于你…

简单用户登录网站(HttpServlet1.2版本)

案例说明:当用户尚未登录就访问欢迎界面时,页面跳转到登录界面,并显示提示信息; 若用户填写的信息与固定用户信息不一致时,登录界面显示错误提示信息;否则跳转到欢迎页面,显示用户名信息. 新建Login2.java -- 用户登录界面,当用户信息输入错误时,会显示提醒信息.(当用户直接访问…

linux服务器如何上传网站,Linux服务器如何发布asp.net网站

ASP.NET core是一个用于net程序跨平台的框架,在此基础上会重写windows、Linux,以实现所有net程序、网站的跨平台。该开发框架主要用于构建基于云的现代web应用。.net开发应用运行于windows平台,由于成本原因而大量使用免费Linux平台&#xff…

通过url账号密码登录其他网站_记一次巨水的网站测试

01本人菜鸡,大佬们亲喷~长话短说就是得到了授权测试一下网站,事先说了网站是前后端分离的。整个过程没有啥骚操作,都比较基础。02给了一个url,由于这是公司某业务系统的管理口,只有一个登录界面。如下图。常规测试下登…

没有限制的搜索引擎_一个合格的SEO人员必须了解搜索引擎的基本工作原理

许多看似混乱的SEO原则和技术,实际上,从搜索引擎的原理来看,都是自然而然的事情。一个合格的SEO必须了解搜索引擎的基本工作原理。今天牛叔将带您了解搜索引擎的原理。SEO就是在保证用户体验的基础上,尽可能迎合搜索引擎。不同于对…

win7作网站服务器,win7系统做网站服务器

win7系统做网站服务器 内容精选换一换当您想在Internet上通过域名访问您的网站时,可以通过华为云的云解析服务为域名添加解析记录。例如,搭建一个网站服务器,采用IPv4格式的弹性IP地址。如果想要实现通过域名“example.com”及其子域名“www.…

香港云服务器网站备案,中国香港云服务器网站备案

中国香港云服务器网站备案 内容精选换一换安全组类似防火墙功能,是一个逻辑上的分组,用于设置网络访问控制。用户可以在安全组中定义各种访问规则,当弹性云服务器加入该安全组后,即受到这些访问规则的保护。入方向:入方…

搭建“ 双11”大型网站架构必须掌握的 5 个核心知识

每年电商双11大促对背后技术人都是一次大考,阿里数据库团队表示。经过9年的发展,双11单日交易额从2009年的0.5亿一路攀升到2017年的1682亿,秒级交易创建峰值达到了32.5万笔/秒。支撑这一切业务指标的背后,是底层技术体系的一次次迭…

让网站永久拥有HTTPS - 申请免费SSL证书并自动续期

为什么要用HTTPS 网站没有使用HTTPS的时候,浏览器一般会报不安全,而且在别人访问这个网站的时候,很有可能会被运营商劫持,然后在网站里显示一些莫名其妙的广告。 有HTTPS的时候,通俗地讲所有的数据传输都会被加密&…

gif分解工具_活用这些网站,轻松制作高级GIF动图

昨天,给大家写了哪些可以用来辅助运营作图的站点,实际上还有很多,作为即使不做全栈运营也得具备到处搜罗这些好站点的能力。很多做新媒体运营的同学,其实更多是要做配图,除了常规的头图之外,更多是文中的配…

网站服务器数据库没有权限怎么办,服务器数据库权限没有开启

服务器数据库权限没有开启 内容精选换一换安装Agent后,你才能开启数据库安全审计。通过本节介绍,您将了解如何在Linux操作系统的节点上安装Agent。Windows操作系统的Agent安装请参见安装Agent(Windows操作系统)。已成功购买数据库安全审计实例&#xff0…

php 随机在文章中添加锚文本_网站中锚文本作用

锚文本定义:锚文本又称锚文本链接,英文名叫anchortext,锚文本实际上是建立了文本关键词与URL链接的关系,锚文本的代码。锚文本可锚文本以作为锚文本所在的页面的内容的评估。正常来讲,页面中增加的链接都会和页面本身的…

切换节点服务器网站,服务器手动切换节点

服务器手动切换节点 内容精选换一换1、集群当前的节点数较多,可以选择将部分节点进行删除,对集群进行缩容操作以同时节省费用。2、集群中某个节点出现异常且无法手动恢复后,可使用节点删除将该节点进行删除操作,随后根据需要再重新…

网页设计html图片滚动特效,网站设计|滚动特效全面讲解!

在视差滚动网页的设计上,无论是移动端还是桌面端,如今的设计师都有了足够深入的探索,并且对于功能和体验上的挖掘,都有了比较成熟的经验。无论是导航悬停式的滚动还是水平滚动和分屏3D特效,视差滚动这一设计趋势已经深…

网站服务器建立数据库连接时出错,[SqlException (0x80131904): 在建立与服务器的连接时出错...

[SqlException (0x80131904): 在建立与服务器的连接时出错在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)说…

百度SEO,该什么时间使用Nofollow?

在百度SEO过程中,每一个SEO人员,手中可利用的资源都是有限的,因此,在页面优化的时候,特别对于新站而言,我们应该学会善用权重。 这可能让很多SEO新人感觉错愕,实际上一个页面的权重&#xff0c…