redis集群搭建_动力节点Java学院整理
来源:脚本之家
时间:2022-12-30 11:49:49 359浏览 收藏
亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《redis集群搭建_动力节点Java学院整理》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下搭建、redis集群,希望所有认真读完的童鞋们,都有实质性的提高。
现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,就比如我们生产环境曾今也遭遇到这种情况,导致redis内存不够挂掉的情况,当然这些都是我们及其不能容忍的,第一个必须要做到高可靠,其次才是高性能,好了,下面我来逐一搭建一下。
一:Redis集群搭建
1. 下载
首先去官网下载较新的3.2.0版本,下载方式还是非常简单的,比如官网介绍的这样。
$ wget http://download.redis.io/releases/redis-3.2.0.tar.gz $ tar xzf redis-3.2.0.tar.gz $ cd redis-3.2.0 $ make
2. redis配置
由于我们要做集群,而且还要redis自带的redis-trib.rb 能正常运行,我们需要在集群中开启三台master,三台slave,所以这里我需要建立6个文件夹,而且文件夹的名称就使用端口地址的名字,比如:6389. 6380....6384。
3. config配置。
现在directory的分布情况大致如上图,接下来要做的事情就是配置redis.conf了,在这里需要配置四个选项。。。
port 端口地址,比如6380文件夹下面的port就是6380,
# Accept connections on the specified port, default is 6379 (IANA #815344). # If port 0 is specified Redis will not listen on a TCP socket. port 6379
cluster-enabled 和 cluster-config-file
这个顾名思义,首先需要开启redis的cluster模式,然后配置一个cluster-config-file文件,这个文件用于存放redis的实时信息,redis会动态追加和修改这个conf下面的内容信息,不过要记住,这个nodes-6379.conf 可以根据 端口文件夹依次配置,比如6380文件夹可以改成nodes-6380.conf这样。。。
# Normal Redis instances can't be part of a Redis Cluster; only nodes that are # started as cluster nodes can. In order to start a Redis instance as a # cluster node enable the cluster support uncommenting the following: # cluster-enabled yes # Every cluster node has a cluster configuration file. This file is not # intended to be edited by hand. It is created and updated by Redis nodes. # Every Redis Cluster node requires a different cluster configuration file. # Make sure that instances running in the same system do not have # overlapping cluster configuration file names. # cluster-config-file nodes-6379.conf
directory
为了方便管理,我这里配置的root目录取决于在哪个文件夹,比如6380下面我的dir就是: dir ./6380/
# Note that you must specify a directory here, not a file name. dir ./6379/
protected-mode
这个是redis 3.2 才追加的一个功能,从功能注释中,我们就可以发现,这个默认就是不让外界可以访问redis,所以这里我们就改为no,可以远程访问。
# By default protected mode is enabled. You should disable it only if # you are sure you want clients from other hosts to connect to Redis # even if no authentication is configured, nor a specific set of interfaces # are explicitly listed using the "bind" directive. protected-mode no
ok,到现在为止,我们的config就修改完毕了,其他端口的文件夹也可以依次配置之~
二:开启redis
到现在为止,各个端口文件夹都配置成功了,接下来准备开启了。
接下来我们可以看一下,在6379下面是不是有生成node-6379.conf文件,比如下面:
三:配置redis-trib.rb
因为redis-trib.rb是ruby写的,而我们的电脑肯定是没有ruby和一些配置依赖项,不过没关系,有强大的yum安装,一切都不是问题。
1. 执行replicas命令
[jack@localhost ~]$ cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 /usr/bin/env: ruby: No such file or directory [jack@localhost ~]$
可以看到ruby是没有安装的,所以下一步我们要安装ruby了。。。
2. 安装ruby 【一定要是管理员权限哦】
[jack@localhost ~]$ sudo usage: sudo [-D level] -h | -K | -k | -V usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command] usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [] usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ... [jack@localhost ~]$ su Password: jacsu: incorrect password [jack@localhost ~]$ yum install ruby Loaded plugins: fastestmirror, refresh-packagekit, security You need to be root to perform this command. [jack@localhost ~]$ jack bash: jack: command not found [jack@localhost ~]$ su Password: [root@localhost jack]# yum install ruby Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirror.bit.edu.cn * extras: mirror.bit.edu.cn * updates: mirror.bit.edu.cn Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package ruby.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Processing Dependency: ruby-libs = 1.8.7.374-4.el6_6 for package: ruby-1.8.7.374-4.el6_6.x86_64 --> Processing Dependency: libruby.so.1.8()(64bit) for package: ruby-1.8.7.374-4.el6_6.x86_64 --> Running transaction check ---> Package ruby-libs.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Processing Dependency: libreadline.so.5()(64bit) for package: ruby-libs-1.8.7.374-4.el6_6.x86_64 --> Running transaction check ---> Package compat-readline5.x86_64 0:5.2-17.1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: ruby x86_64 1.8.7.374-4.el6_6 base 538 k Installing for dependencies: compat-readline5 x86_64 5.2-17.1.el6 base 130 k ruby-libs x86_64 1.8.7.374-4.el6_6 base 1.7 M Transaction Summary ================================================================================ Install 3 Package(s) Total download size: 2.3 M Installed size: 7.8 M Is this ok [y/N]: y Downloading Packages: (1/3): compat-readline5-5.2-17.1.el6.x86_64.rpm | 130 kB 00:00 (2/3): ruby-1.8.7.374-4.el6_6.x86_64.rpm | 538 kB 00:00 (3/3): ruby-libs-1.8.7.374-4.el6_6.x86_64.rpm | 1.7 MB 00:02 -------------------------------------------------------------------------------- Total 747 kB/s | 2.3 MB 00:03 warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 Importing GPG key 0xC105B9DE: Userid : CentOS-6 Key (CentOS 6 Official Signing Key) Package: centos-release-6-5.el6.centos.11.1.x86_64 (@anaconda-CentOS-201311272149.x86_64/6.5) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 Is this ok [y/N]: y Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : compat-readline5-5.2-17.1.el6.x86_64 1/3 Installing : ruby-libs-1.8.7.374-4.el6_6.x86_64 2/3 Installing : ruby-1.8.7.374-4.el6_6.x86_64 3/3 Verifying : compat-readline5-5.2-17.1.el6.x86_64 1/3 Verifying : ruby-libs-1.8.7.374-4.el6_6.x86_64 2/3 Verifying : ruby-1.8.7.374-4.el6_6.x86_64 3/3 Installed: ruby.x86_64 0:1.8.7.374-4.el6_6 Dependency Installed: compat-readline5.x86_64 0:5.2-17.1.el6 ruby-libs.x86_64 0:1.8.7.374-4.el6_6 Complete! [root@localhost jack]#
3. 安装rubygems
接着我们再次运行 replicas命令,看看会怎么样。。。
[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 cluster/redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError) from cluster/redis-trib.rb:24 [root@localhost jack]#
结果苦逼了,还是报错,看提示貌似是少了一个rubygems,这次我们还是通过yum安装。
[root@localhost jack]# yum install -y rubygems Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirror.bit.edu.cn * extras: mirror.bit.edu.cn * updates: mirror.bit.edu.cn Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package rubygems.noarch 0:1.3.7-5.el6 will be installed --> Processing Dependency: ruby-rdoc for package: rubygems-1.3.7-5.el6.noarch --> Running transaction check ---> Package ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Processing Dependency: ruby-irb = 1.8.7.374-4.el6_6 for package: ruby-rdoc-1.8.7.374-4.el6_6.x86_64 --> Running transaction check ---> Package ruby-irb.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: rubygems noarch 1.3.7-5.el6 base 207 k Installing for dependencies: ruby-irb x86_64 1.8.7.374-4.el6_6 base 317 k ruby-rdoc x86_64 1.8.7.374-4.el6_6 base 381 k Transaction Summary ================================================================================ Install 3 Package(s) Total download size: 905 k Installed size: 3.0 M Downloading Packages: (1/3): ruby-irb-1.8.7.374-4.el6_6.x86_64.rpm | 317 kB 00:00 (2/3): ruby-rdoc-1.8.7.374-4.el6_6.x86_64.rpm | 381 kB 00:00 (3/3): rubygems-1.3.7-5.el6.noarch.rpm | 207 kB 00:00 -------------------------------------------------------------------------------- Total 625 kB/s | 905 kB 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : ruby-irb-1.8.7.374-4.el6_6.x86_64 1/3 Installing : ruby-rdoc-1.8.7.374-4.el6_6.x86_64 2/3 Installing : rubygems-1.3.7-5.el6.noarch 3/3 Verifying : ruby-rdoc-1.8.7.374-4.el6_6.x86_64 1/3 Verifying : ruby-irb-1.8.7.374-4.el6_6.x86_64 2/3 Verifying : rubygems-1.3.7-5.el6.noarch 3/3 Installed: rubygems.noarch 0:1.3.7-5.el6 Dependency Installed: ruby-irb.x86_64 0:1.8.7.374-4.el6_6 ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6 Complete! [root@localhost jack]#
4. 安装redis驱动
还是继续不死心,我们继续运行replicas命令命令。
[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError) from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from cluster/redis-trib.rb:25 [root@localhost jack]#
还是有问题,这次貌似是一个gem_original_require没有安装,当然这个一般是说ruby版本太老了,所以现在亲要么升级ruby版本,要么直接安装ruby的redis驱动。
[root@localhost jack]# gem install redis Successfully installed redis-3.3.0 1 gem installed Installing ri documentation for redis-3.3.0... Installing RDoc documentation for redis-3.3.0...
6. 运行replicas命令
终于貌似所有的依赖我们都解决了,接下来就可以真的执行了。
[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 >>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 Adding replica 192.168.161.133:6382 to 192.168.161.133:6379 Adding replica 192.168.161.133:6383 to 192.168.161.133:6380 Adding replica 192.168.161.133:6384 to 192.168.161.133:6381 M: fdae457e803e2e04a7c549c69b44a2beefdae3bc 192.168.161.133:6379 slots:0-5460 (5461 slots) master M: 74285cee0fa65e64b443ecc630e447a8a65ee9f8 192.168.161.133:6380 slots:5461-10922 (5462 slots) master M: 14ed067a1b85044325d5800fa8479a6b4e41a10c 192.168.161.133:6381 slots:10923-16383 (5461 slots) master S: c50b1ff1fe3a00b16703f3b5705d2dafe046240b 192.168.161.133:6382 replicates fdae457e803e2e04a7c549c69b44a2beefdae3bc S: 8f7bd92f7ffb48e327820693a5820b5be7ea5556 192.168.161.133:6383 replicates 74285cee0fa65e64b443ecc630e447a8a65ee9f8 S: 4a85ed078b4c99afad7f3a9a8df09082c681a649 192.168.161.133:6384 replicates 14ed067a1b85044325d5800fa8479a6b4e41a10c 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.161.133:6379) M: fdae457e803e2e04a7c549c69b44a2beefdae3bc 192.168.161.133:6379 slots:0-5460 (5461 slots) master M: 74285cee0fa65e64b443ecc630e447a8a65ee9f8 192.168.161.133:6380 slots:5461-10922 (5462 slots) master M: 14ed067a1b85044325d5800fa8479a6b4e41a10c 192.168.161.133:6381 slots:10923-16383 (5461 slots) master M: c50b1ff1fe3a00b16703f3b5705d2dafe046240b 192.168.161.133:6382 slots: (0 slots) master replicates fdae457e803e2e04a7c549c69b44a2beefdae3bc M: 8f7bd92f7ffb48e327820693a5820b5be7ea5556 192.168.161.133:6383 slots: (0 slots) master replicates 74285cee0fa65e64b443ecc630e447a8a65ee9f8 M: 4a85ed078b4c99afad7f3a9a8df09082c681a649 192.168.161.133:6384 slots: (0 slots) master replicates 14ed067a1b85044325d5800fa8479a6b4e41a10c [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. [root@localhost jack]#
从上面可以看到,trib程序告知我们是否用 6379,6380,6381 作为主, 6382,6383,6384作为从。。然后我就恩准了。。就这样我们的集群就创建好了
文中关于redis的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《redis集群搭建_动力节点Java学院整理》文章吧,也可关注golang学习网公众号了解相关技术文章。
-
412 收藏
-
303 收藏
-
429 收藏
-
178 收藏
-
200 收藏
-
342 收藏
-
361 收藏
-
159 收藏
-
164 收藏
-
221 收藏
-
156 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 灵巧的故事
- 这篇博文真是及时雨啊,很详细,很有用,收藏了,关注up主了!希望up主能多写数据库相关的文章。
- 2023-03-17 00:57:57
-
- 细心的红酒
- 这篇文章内容出现的刚刚好,up主加油!
- 2023-02-27 11:44:10
-
- 热情的萝莉
- 真优秀,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢师傅分享技术文章!
- 2023-02-25 02:20:10
-
- 阳光的自行车
- 这篇文章内容太及时了,细节满满,真优秀,mark,关注楼主了!希望楼主能多写数据库相关的文章。
- 2023-02-15 06:28:41
-
- 明理的小伙
- 太细致了,mark,感谢作者大大的这篇技术贴,我会继续支持!
- 2023-02-05 15:39:06
-
- 寒冷的大碗
- 赞 👍👍,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢老哥分享技术贴!
- 2023-01-14 12:22:36