当前位置:首页 > 问答 > 正文

Redis集群怎么搭建才快又稳,手把手教你一步步弄明白

综合自Redis官方文档、多个技术社区如Stack Overflow、CSDN博客以及运维实践者的经验分享)

想又快又稳地把Redis集群搭起来,其实没那么复杂,咱们今天就不说那些让人头疼的专业词儿,像什么“哈希槽”、“Gossip协议”这些,先把它跑起来,有个直观感受最重要,你照着下面这些步骤做,一步步来,基本不会出错。

第一步:准备“地基”——机器和环境

别急着装软件,集群嘛,最少需要三个主节点(Master),为了保证高可用,每个主节点最好配一个从节点(Slave),这样一共就是6个节点,你手头要是有六台独立的服务器或者虚拟机那最好,如果只是学习测试,在一台机器上开6个不同的端口(比如7001到7006)也完全可以,但记住,生产环境可千万别这么干,不然机器一挂,整个集群就全瘫了,根本谈不上“稳”。

确保每台机器上都装好了相同版本的Redis,版本别太老,建议用5.0以上的,稳定性和功能都更好,防火墙也要检查好,确保集群节点之间用来通信的端口(默认是基础端口+10000,比如你节点端口是7001,那集群总线端口就是17001)要能互相访问。

第二步:给每个节点“安家”——配置文件

给你计划中的每个节点都单独创建一个配置文件,这是保证“稳”的关键一步,可别偷懒用一个配置文件改来改去。

假设我们在一台机器上开6个端口模拟:7001, 7002, 7003(作为主节点),7004, 7005, 7006(分别作为它们的从节点)。

给端口7001创建配置文件 redis-7001.conf,里面至少要有这些核心配置:

port 7001  # 这个节点的端口号
daemonize yes  # 让Redis在后台运行,不占用你的命令行
pidfile /var/run/redis_7001.pid  # 进程ID文件,避免冲突
logfile "/path/to/your/log/redis-7001.log"  # 日志文件,出问题了就靠它查,非常重要
dir /path/to/your/data/7001  # 数据存放目录,每个节点必须不同
cluster-enabled yes  # 开启集群模式,这是核心!
cluster-config-file nodes-7001.conf  # 集群自己生成的配置文件,别动它,每个节点不同
cluster-node-timeout 15000  # 节点超时时间,超过这个时间认为节点挂了,默认15秒
bind 你的服务器IP地址  # 如果是虚拟机或服务器,最好绑定内网IP,安全又高效

把7001的配置复制5份,把里面所有涉及到端口号的地方(7001)分别改成7002到7006,这一步有点枯燥,但必须做对,你可以用简单的sed命令或者文本替换功能快速完成。

第三步:逐个“点火启动”

配置文件都准备好之后,就一个个启动它们。

redis-server /path/to/your/redis-7001.conf
redis-server /path/to/your/redis-7002.conf
...  # 一直到7006

启动后,用 ps -ef | grep redis 看看是不是6个进程都起来了,再用 netstat -tulnp | grep 700 检查下6个端口是不是都在监听,如果没问题,恭喜你,六个“士兵”已经就位,但它们现在还谁也不认识谁,是个散兵游勇的状态。

第四步:让节点“握手成团”——创建集群

这是最关键的一步,把六个独立的Redis实例组建成一个真正的集群,这里我们用Redis自带的命令行工具 redis-cli 来完成。

(来源:Redis官方文档推荐使用--cluster create命令)

执行下面这个命令(注意替换成你的IP和端口):

redis-cli --cluster create 你的IP:7001 你的IP:7002 你的IP:7003 你的IP:7004 你的IP:7005 你的IP:7006 --cluster-replicas 1

简单解释一下:

  • --cluster create:告诉工具我们要创建集群。
  • 后面跟着6个节点的地址。
  • --cluster-replicas 1:这个参数是关键!意思是每个主节点配1个从节点,工具会自动识别,它会把你列出的前三个节点(7001,7002,7003)当成主节点,然后智能地把后三个节点(7004,7005,7006)分别指派为前三个的从节点。

命令执行后,工具会给你显示一个它规划好的“主从分配图”,问你“Is this configuration okay?”,你仔细看一下,比如是不是7004是7001的从节点,7005是7002的从节点等等,确认无误后,输入 yes 回车。

工具就会开始忙碌,它负责在各个节点之间分配数据槽(你可以想象成把数据分成16384份,平均分给三个主节点),并建立主从关系,这个过程很快,完成后你会看到类似[OK] All 16384 slots covered.的提示,这说明集群已经搭建成功,所有数据槽都分配好了!

第五步:验收成果——测试一下

集群建好了,得试试它能不能用,稳不稳。

  1. 连接测试:redis-cli 连接上任意一个节点,但这次要加上 -c 参数,这个参数代表以集群模式连接,非常重要!
    redis-cli -c -h 你的IP -p 7001
  2. 数据重定向测试: 在命令行里设置几个key,set name Johnset age 30,你可能会发现,当你执行命令后,客户端提示你“Redirected to slot [某个数字] located at IP:端口”,这就是集群在正常工作!因为它根据key的名字计算出来这个数据应该存放在另一个主节点上,于是自动帮你跳转过去了,你无需关心数据到底存在哪里。
  3. 高可用测试(验证“稳”): 这是最刺激的一步,随便连接上一个主节点,比如7001,用 cluster nodes 命令查看一下集群状态,记下7001的节点ID,狠一点,直接把这个7001的进程杀掉 kill -9 <redis-7001的进程号>,等待十几秒后,再次用 redis-cli -c 连接上还活着的任意节点(比如7002),执行 cluster nodes 命令,你会神奇地发现,原来7001的从节点7004,现在已经自动升级为新的主节点(Master)了!整个集群依然可以正常读写数据,只是少了一个备份而已,这就实现了高可用,等你把7001进程重新启动,它会自动以7004的从节点身份重新加入集群。

通过以上五步,一个又快又稳的Redis集群就搭建并验证完毕了,核心思想就是:准备配置、启动实例、一键创建、充分测试,先把流程跑通,之后再慢慢去研究背后的原理,这样学习起来印象更深刻,也更不容易出错。

Redis集群怎么搭建才快又稳,手把手教你一步步弄明白