千家信息网

Redis Cluster集群部署搭建

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,在Oracle的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉。Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品。今天,就分享一下安装Redis集群
千家信息网最后更新 2026年11月03日Redis Cluster集群部署搭建

在Oracle的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉。Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品。今天,就分享一下安装Redis集群的过程。


搭建redis集群,建议至少需要准备3台服务器,共搭建6个节点,3个master,3个slave,并且要求3个master节点不能全部跑到同一台服务器上,保证节点安全,3台服务器的配置相同,使用redistest账号搭建,对应的端口是7000/7001/7002端口

我的集群分配如下,每个节点运行两个端口。第一列做主库,第二列做备库

192.8.8.136:7000  192.8.8.136:7001  192.8.8.137:7001  192.8.8.137:7002192.8.8.138:7002  192.8.8.138:7000

1、使用已经编译完成的安装报安装(就使用文档末尾连接的安装包即可),解压并放到/home/redistest目录下,修改对应的redis.conf文件,并复制出6份,每个节点两个redis目录
[redistest]$ ll
total 13284

drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7000drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7001drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7002-rwxr-xr-x 1 redistest users 5708657 Aug 22 2016 redis-cli-rwxr-xr-x 1 redistest users 7817132 Aug 22 2016 redis-server-rwxr-xr-x 1 redistest users 60578 Aug 9 06:21 redis-trib.rb

2、此时有3个执行文件,redis-server/redis-cli/redis-trib.rb

3、创建7000文件夹,并将redis.conf拷贝到7000文件目录下,注意修改对应的几个关键配置项(主要就是改端口号)

daemonize yes // redis后台运行pidfile /var/run/redis_7000.pid // pid文件,运行多个实例时,需要指定不同的pid文件port 7000 // 监听端口,运行多个实例时,需要指定不同的断奶口tcp-backlog 511tcp-keepalive 0loglevel notice // 日志等级logfile ./redis.log // 日志文件位置databases 16 // 可用数据库数appendonly yes // redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。appendfilename "appendonly.aof" // AOF文件名称appendfsync everysec // 表示对写操作进行累积,每秒同步一次no-appendfsync-on-rewrite yes // AOF 自动重写auto-aof-rewrite-percentage 80-100 // 重写百分比auto-aof-rewrite-min-size 64mb //

注:完整配置,请参考软件包中的redis.conf文件

4、拷贝7000文件夹,粘贴出新文件夹7001/7002,分别将7001/7002文件夹中的redis.conf文件中的7000替换成为7001/7002。

5、切换到root用户,使用yum安装ruby,yum -y install ruby rubygems,并执行gem install redis,这样便完成ruby安装,可以使用redis-trib.rb搭建集群
注:redis-trib.rb是基于ruby开发的,所以必须要安装ruby环境。

yum安装很方便,但是有的风场是无法连接外网的,也就无法使用yum。软件包中已经包含ruby rubygems的软件包,直接安装即可。

ruby的下载路径:https://rubygems.org/gems/redis

然后通过下面命令本地安装ruby

yum -y localinstall ruby rubygemsgem install redis

6、另外两台服务器做同样的配置操作,开启该机器的2个redis节点,当完成3台机器的redis节点搭建后,可以启动redis,并使用ps查看redis运行情况情况

7、开启redis服务
进入7000目录,启动redis

cd 7000../redis-server redis.confcd ..cd 7001../redis-server redis.conf
[redistest@ip-172-18-98-136 redis]$ ps -ef|grep redisredistest   3864     1  0 13:02 ?        00:00:00 ../redis-server *:7000 [cluster]redistest   3869     1  0 13:02 ?        00:00:00 ../redis-server *:7001 [cluster]redistest   3888  3778  0 13:05 pts/3    00:00:00 grep redis

注意:由于redis.conf文件使用的都是相对路径,并且生成的一些文件,如aof文件是不能覆盖重复的,因此标准的开启redis-server的操作是,进入到7000/7001/7002等目录中执行,../redis-server redis.conf,这样各个实例生成的文件就在各自的目录下,互不干扰;当然如果修改redis.conf的配置文件目录,则可以实现在不同的目录下执行redis-server,这个可以灵活掌握和运用

8、redis节点搭建起来后,需要完成redis cluster集群搭建,搭建集群过程中,需要保证6个redis实例都是运行状态。
Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。
输出如下

[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb create --replicas 1 192.8.8.136:7000 192.8.8.137:7001 192.8.8.138:7002 192.8.8.137:7002 192.8.8.136:7001  192.8.8.138:7000 >>> Creating cluster>>> Performing hash slots allocation on 6 nodes...Using 3 masters:192.8.8.138:7002192.8.8.137:7001192.8.8.136:7000Adding replica 192.8.8.137:7002 to 192.8.8.138:7002Adding replica 192.8.8.138:7000 to 192.8.8.137:7001Adding replica 192.8.8.136:7001 to 192.8.8.136:7000M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000   slots:10923-16383 (5461 slots) masterM: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001   slots:5461-10922 (5462 slots) masterM: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002   slots:0-5460 (5461 slots) masterS: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002   replicates 6f9c383ec47461c2a86265f5db506e10397605d8S: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001   replicates 6780f0fadd82825d04e524fd81fa710403e7152eS: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000   replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399Can 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 clusterWaiting for the cluster to join.....>>> Performing Cluster Check (using node 192.8.8.136:7000)M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000   slots:10923-16383 (5461 slots) masterM: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001   slots:5461-10922 (5462 slots) masterM: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002   slots:0-5460 (5461 slots) masterM: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002   slots: (0 slots) master   replicates 6f9c383ec47461c2a86265f5db506e10397605d8M: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001   slots: (0 slots) master   replicates 6780f0fadd82825d04e524fd81fa710403e7152eM: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000   slots: (0 slots) master   replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.

其中Master的节点是:192.8.8.136:7000/192.8.8.137:7001/192.8.8.138:7002分布在不同的服务器上,该集群的搭建的实现了负载均衡,至此redis集群的搭建过程基本完毕;

9、检查集群状态

[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb check 192.8.8.136:7000>>> Performing Cluster Check (using node 192.8.8.136:7000)M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000   slots:10923-16383 (5461 slots) master   1 additional replica(s)M: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002   slots:0-5460 (5461 slots) master   1 additional replica(s)S: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001   slots: (0 slots) slave   replicates 6780f0fadd82825d04e524fd81fa710403e7152eS: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002   slots: (0 slots) slave   replicates 6f9c383ec47461c2a86265f5db506e10397605d8M: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001   slots:5461-10922 (5462 slots) master   1 additional replica(s)S: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000   slots: (0 slots) slave   replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb info 192.8.8.136:7000192.8.8.136:7000 (6780f0fa...) -> 0 keys | 5461 slots | 1 slaves.192.8.8.138:7002 (6f9c383e...) -> 0 keys | 5461 slots | 1 slaves.192.8.8.137:7001 (b00521fd...) -> 0 keys | 5462 slots | 1 slaves.[OK] 0 keys in 3 masters.0.00 keys per slot on average.

10 、检查集群信息

./redis-trib.rb info 192.8.8.136:7000

11、如果在执行./redis-trib.rb create --replicas 过程中,长时间没有完成,或者遇到其他错误。如果需要重新执行配置集群的话。
需要关闭redis实例,删除7000/7001/7002目录下,除了redis.conf文件之外的全部文件,再启动redis实例,并再次执行./redis-trib.rb create即可。

12、连接数据库,查询数据

[root@localhost src]# redis-cli -c -p 7000127.0.0.1:7000> cluster meet 127.0.0.1 7000OK

至此,redis集群已经大家完成,下面我们需要完成redis随着操作系统启动,减少后续维护的成本。

13、编辑文件/home/redistest/startAll.sh,注意,要写全路径

/home/redistest/redis/redis-server /home/redistest/redis/7000/redis.conf/home/redistest/redis/redis-server /home/redistest/redis/7001/redis.conf

命令行,加入/etc/rc.local文件夹下,需要以redistest用户启动redis

su - redistest -c /home/redistest/startAll.sh


软件包过大,无法在blog中上传,已经上传到51cto下载中心,请到下载中心下载。

http://down.51cto.com/data/2334650


文件 集群 目录 节点 实例 服务 运行 配置 数据 文件夹 服务器 不同 数据库 端口 软件 软件包 过程 状态 路径 下载中心 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 上海卓越科技互联网 西安纸贵互联网科技有限公司 互联网公司 科技公司 互联网科技排名 鑫亿盛互联网科技 电子科技大学互联网 美国互联网前沿科技 青岛中康互联网医疗科技有限公司 互联网科技与大数据专业 米聚互联网科技南京有限公司排面 领航科技大厦互联网公司 互联网科技融合创新 信承诺互联网科技有限公司 上海万顺科技互联网有限公司招聘 互联网科技手抄报图片 互联网科技收购价值 科技信息时代互联网发展 众联互联网络科技 互联网科技创业有什么好项目 广州互联网络科技有限公司 伴你行互联网科技有限公司 哈尔滨新华互联网科技学院 中国的互联网科技企业的崛起 互联网大会黑科技排名 互联网在线教育科技创业 合肥互联网科技公司公章图片 互联网金融科技公司的优势 互联网相关科技技术 科技互联网专业务虚会材料
0