文章目录
- 一、下载Redis
- 二、创建Redis管理用户
- 三、上传Redis
- 四、安装Redis
- 五、搭建集群
- 1. 创建集群配置目录`redis-cluster/`
- 2. 创建`master 1`节点目录`7001`,复制redis.conf配置文件
- 3. 配置`marst 1`主节点`7001`
- 4. 配置`slave 1`从节点`7002`
- 5. 配置剩余集群节点
- 6. 启动集群所有节点
- 7. 创建集群
- 8. 验证集群
- 9. 查看集群信息
- 10. 关闭集群
- 11. 删除节点
- 12. 查看客户端连接情况
一、下载Redis
官方链接:https://redis.io/downloads/
这里我选择下载了市场使用比较广泛成熟的6.2版本,最新的6.2.14。
二、创建Redis管理用户
创建redisadm用户,作为Redis的运维用户。
$mkdir-p/home/redisadm $groupadd-g60010redisgrp $useraddredisadm-u60010-d/home/redisadm-gredisgrp $chown-Rredisadm:redisgrp /home/redisadm $echo"redisadm:redisadm"|chpasswd三、上传Redis
将Redis安装包上传到linux服务器并解压,可以通过FTP工具连接上传,这里我上传到了/home/redisadm目录下进行安装。
使用root用户进行解压缩,执行命令:
$cd/home/redisadm $tar-zxvfredis-6.2.14.tar.gz四、安装Redis
注意使用root用户安装。进入刚才的Redis解压缩路径操作,我这边是/home/redisadm/redis-6.2.14
进行编译,执行命令:
$make安装环境检查,执行命令:
注意,这一步不能报错,如果报错了需要检查确实什么插件,将插件安装好。$maketest安装,执行命令:
$makeinstall安装成功后,我们可以看到Redis相关命令已经加到/usr/local/bin目录下了。
五、搭建集群
本次我们搭建的Redis集群设计为3台服务器,包含3主3从共6个Redis节点,每个服务器包含1主1从2个Redis节点,分别为master 1、slave1;master 2、slave 2;master 3、slave 3。集群架构如下图:
接下来的集群配置时,我们可以切换成redisadm用户操作了。
1. 创建集群配置目录redis-cluster/
$cd/home/redisadm $mkdir-p/home/redisadm/redis-cluster $ ll2. 创建master 1节点目录7001,复制redis.conf配置文件
$cd/home/redisadm/redis-cluster $mkdir7001$ ll $cp../redis-6.2.14/redis.conf /home/redisadm/redis-cluster/7001/redis.conf $cd7001$ ll3. 配置marst 1主节点7001
主节点7001的配置文件redis.conf修改内容,部分参数阈值可自行调大或减小:
注释去掉绑定监听的IP地址:
#bind 127.0.0.1 -::1关闭本地ip访问安全权限限制,开启远程访问权限:
protected-mode no设置节点监听端口:
port 7001设置空闲连接断开时间,单位s:
timeout 30设置TCP保持活跃时间:
tcp-keepalive 30开启守护进程,redis进程以后台形式启动:
daemonize yes配置不启用任何特定的进程管理监督机制:
supervised no配置指定pid记录文件:
pidfile /home/redisadm/redis-cluster/7001/redis_7001.pid配置日志输出级别:
loglevel verbose配置日志输出文件:
logfile "/home/redisadm/redis-cluster/7001/redis.log"配置logo显示,在启动或运行时会在控制台/界面中显示Logo或版本信息:
always-show-logo yes配置禁用 Redis 的 RDB(快照)持久化功能:
save ""配置快照失败处理策略,当 Redis 执行 BGSAVE 命令生成 RDB 快照失败时,不停止处理写请求,即忽略错误并继续接受数据写入:
stop-writes-on-bgsave-error no配置数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据:
dir /home/redisadm/redis-cluster/7001/设置集群节点间访问密码,与Redis密码一致:
masterauth redisadm配置主从复制RDB文件加载模式,从库(Slave)在加载主库(Master)发送的 RDB 快照文件时,禁用“无盘加载”(Diskless Load)模式,即采用传统的“基于磁盘”的加载方式:
repl-diskless-load disabled设置 Redis 访问密码:
requirepass redisadm设置启动 AOF 持久化机制:
appendonly yes设置 AOF 持久化参数,当 Redis 执行 AOF 文件重写(BGREWRITEAOF)时,暂停执行 fsync 操作,以避免因频繁同步磁盘而阻塞主进程,从而提升性能:
no-appendfsync-on-rewrite yes设置启动集群模式:
cluster-enabled yes设置集群节点信息文件:
cluster-config-file nodes-7001.conf设置集群节点心跳检测的超时时间,单位ms:
cluster-node-timeout 5000设置集群节点槽位覆盖参数,当 Redis Cluster 中存在未分配的槽位(Slot)时,集群将拒绝所有写请求,以确保数据一致性和完整性:
cluster-require-full-coverage yes设置慢查询日志保留条数,用于分析性能瓶颈和调试问题:
slowlog-max-len 500
4. 配置slave 1从节点7002
创建7002目录,从7001目录下复制redis.conf配置文件:
$cd/home/redisadm/redis-cluster/ $mkdir7002$ ll $cp./7001/redis.conf ./7002/redis.conf $cd7002$ ll修改7002目录下redis.conf配置文件,将文件内7001替换为7002,主要涉及以下参数:
port 7002 logfile "/home/redisadm/redis-cluster/7001/redis.log" pidfile /home/redisadm/redis-cluster/7001/redis_7001.pid dir /home/redisadm/redis-cluster/7001/ cluster-config-file nodes-7001.conf
5. 配置剩余集群节点
配置方法与7002一致,替换文件内端口信息。
配置文件复制:因为我这些是在同一个机器上,所以只需要使用cp命令复制到对应的节点文件夹内,修改配置文件就行。
$cp/home/redisadm/redis-cluster/7001/redis.conf /home/redisadm/redis-cluster/7003/redis.conf $cp/home/redisadm/redis-cluster/7001/redis.conf /home/redisadm/redis-cluster/7004/redis.conf $cp/home/redisadm/redis-cluster/7001/redis.conf /home/redisadm/redis-cluster/7005/redis.conf $cp/home/redisadm/redis-cluster/7001/redis.conf /home/redisadm/redis-cluster/7006/redis.conf但是如果有多台机器的时候,就需要使用
scp拷贝过去了:$scp/home/redisadm/redis-cluster/7001/redis.conf redisadm@xxx.xxx.xxx.xxx:/home/redisadm/redis-cluster/7003/redis.conf $scp/home/redisadm/redis-cluster/7001/redis.conf redisadm@xxx.xxx.xxx.xxx:/home/redisadm/redis-cluster/7004/redis.conf $scp/home/redisadm/redis-cluster/7001/redis.conf redisadm@xxx.xxx.xxx.xxx:/home/redisadm/redis-cluster/7005/redis.conf $scp/home/redisadm/redis-cluster/7001/redis.conf redisadm@xxx.xxx.xxx.xxx:/home/redisadm/redis-cluster/7006/redis.conf创建AOF持久化路径:因为是在不同服务器上,所以我们要自己手动创建集群内其他节点的AOF持久化文件目录。比如在服务器1上有2个节点:master 1 (7001)+ slave 1(7002),那我们就创建其余集群节点点目录:
$mkdir-p/home/redisadm/redis-cluster/7003/ $mkdir-p/home/redisadm/redis-cluster/7004/ $mkdir-p/home/redisadm/redis-cluster/7005/ $mkdir-p/home/redisadm/redis-cluster/7006/
6. 启动集群所有节点
执行启动命令:
注意使用redisadm用户启动,不然后面创建集群会报错。$cd/home/redisadm/redis-6.2.14/src $ redis-server /home/redisadm/redis-cluster/7001/redis.conf $ redis-server /home/redisadm/redis-cluster/7002/redis.conf $ redis-server /home/redisadm/redis-cluster/7003/redis.conf $ redis-server /home/redisadm/redis-cluster/7004/redis.conf $ redis-server /home/redisadm/redis-cluster/7005/redis.conf $ redis-server /home/redisadm/redis-cluster/7006/redis.conf检查启动是否成功,可以看到全部端口启动好,并且后面是
[cluster]:$ps-ef|grepredisadm
7. 创建集群
创建集群,使用create创建,cluster-replicas指定从节点个数,前3个节点为master,后3个为则从节点。需要加上redis.conf内设置的密码redisadm,不然会报错。
$ /home/redisadm/redis-6.2.14/src/redis-cli--clustercreate --cluster-replicas1127.0.0.1:7001127.0.0.1:7003127.0.0.1:7005127.0.0.1:7002127.0.0.1:7004127.0.0.1:7006-aredisadm8. 验证集群
连接任意一个节点测试,这里使用7001端口试试。
$ /home/redisadm/redis-6.2.14/src/redis-cli-c-h127.0.0.1-p7001-aredisadm去7001端口对应的从节点查询,自动跳转到了7001主节点:
$ /home/redisadm/redis-6.2.14/src/redis-cli-c-h127.0.0.1-p7002-aredisadm换一个主节点7003查询,自动跳转到了7001主节点:
$ /home/redisadm/redis-6.2.14/src/redis-cli-c-h127.0.0.1-p7003-aredisadm
9. 查看集群信息
查看集群信息:
$ /home/redisadm/redis-6.2.14/src/redis-cli-c-h127.0.0.1-p7001-aredisadm $ cluster info
查看集群节点:
$ cluster nodes10. 关闭集群
$ /home/redisadm/redis-6.2.14/src/redis-cli-h127.0.0.1-p7001-aredisadmshutdown$ /home/redisadm/redis-6.2.14/src/redis-cli-h127.0.0.1-p7002-aredisadmshutdown$ /home/redisadm/redis-6.2.14/src/redis-cli-h127.0.0.1-p7003-aredisadmshutdown$ /home/redisadm/redis-6.2.14/src/redis-cli-h127.0.0.1-p7004-aredisadmshutdown$ /home/redisadm/redis-6.2.14/src/redis-cli-h127.0.0.1-p7005-aredisadmshutdown$ /home/redisadm/redis-6.2.14/src/redis-cli-h127.0.0.1-p7006-aredisadmshutdown11. 删除节点
$ /home/redisadm/redis-6.2.14/src/redis-cli--clusterdel-node127.0.0.1:7002 9ee2e5b61994f18b49d4da84ada22a75225af2fe12. 查看客户端连接情况
查询redis连接情况和最大连接数。
$ info clients $ config get maxclients