>웹 프론트엔드 >JS 튜토리얼 >노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]

노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]

青灯夜游
青灯夜游앞으로
2022-03-30 20:23:433774검색

노드에서 Redis 클러스터 기능을 어떻게 사용하나요? 다음 글에서는 node 기반의 Redis 클러스터 구성에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]

nodejsnodejs中使用redis集群功能,没有找到一篇比较完整且通俗易懂的文章,因此自己在开发调试的过程中也走了不少弯路。

本文会详细介绍了在本地如何搭建redis集群、在客户端如何使用集群、在搭建过程中遇到的问题和错误汇总并说明,以避免下次使用的时候再走弯路,提高开发、工作效率。

使用集群的背景是:在Redis单例模式下随着用户量、访问量的提高,qps值急剧上涨??,大量的io操作导致某一时刻占满cpu(100%),随时有宕机的危险,同时通过批量处理redis等方式也是治标不治本,无法突破服务器性能的瓶颈。因此使用集群方案或增加redis实例就势在必行。

名词解释--集群

集群一般是指服务器集群,区别于分布式系统,是将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。(在redis3.0之前一般使用的都是 哨兵模式,但 哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般)

redis集群要求

由于投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群,因此Redis集群至少需要3个节点。

要保证集群的高可用、需要每个节点都有从节点(也就是备份节点),所以Redis集群至少需要6台服务器。 (三主三从、三存三取、高可用、可备份)

当然,我们在本地调试时不可能用这么多服务器,因此我们可以在本地模拟运行6个redis实例,事实上生产环境的Redis集群搭建和这里基本上一样。

mac 环境下搭建本地redis集群

1. 下载安装redis

可以在官网选择安装,也可以用命名行安装

#安装
brew install redis
#启动
redis-server
#进入redis客户端
redis-cli

2. 通过redis配置集群环境

首先要找到redis配置文件的位置

  • brew list redis # 查看redis安装的位置
  • cd /opt/homebrew/Cellar/redis/6.2.4 # 根据位置进入版本号所在的文件夹
  • open . # 打开文件夹
  • Xcode.app打开homebrew.mxcl.redis.plist, 即可找到redis.conf所在的位置,如下所示:

노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]

노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]

创建六个服务配置文件

cd /opt/homebrew/etc/(上一步找到的配置文件目录)

# 需要在 /opt/homebrew/etc/ 路径下
mkdir -p redis/cluster/7000
mkdir -p redis/cluster/7001
mkdir -p redis/cluster/7002
mkdir -p redis/cluster/7003
mkdir -p redis/cluster/7004
mkdir -p redis/cluster/7005

修改配置文件

/opt/homebrew/etc/redis.conf路径下的配置文件不用去修改, 只要将其copy到上面创建的 redis/cluster/7000目录下,然后再修改,步骤如下

  • 先复制一份配置文件修改
cd /opt/homebrew/etc/ # 进入配置文件目录
cp redis.conf redis/cluster/7000/7000.conf
code redis/cluster/7000/7000.conf # 用编辑器打开或者用vim打开配置文件来进行修改
  • 进入到7000.conf后,修改以下属性
# Redis端口号(7000-7005每个配置文件都要修改)
port 7000  

# 开启集群模式运行
cluster-enabled yes   

# 集群内部配置文件配置文件路径,默认nodes-6379.conf(7000-7005每个配置文件都要修改)
cluster-config-file nodes-7000.conf 

# 节点间通信的超时时间
cluster-node-timeout 5000  

# 数据持久化
appendonly yes
  • 将7000.conf复制到每个redis服务的目录下
cd /opt/homebrew/etc/redis/cluster # 进入配置文件目录

cp 7000/7000.conf 7001/7001.conf
cp 7000/7000.conf 7002/7002.conf
cp 7000/7000.conf 7003/7003.conf
cp 7000/7000.conf 7004/7004.conf
cp 7000/7000.conf 7005/7005.conf
  • 再修改7001.conf-7005.conf每个配置文件的port和cluster-config-file属性

注意:每个配置文件必需配置不一样的port和cluster-config-file值(否则集群不会生效),上面是以端口区分。

通过find /opt/homebrew -name nodes-7000.confredis 클러스터 기능 사용과 관련하여 비교적 완전하고 이해하기 쉬운 글을 찾지 못해서 여기에 있습니다. 개발과 디버깅 과정에서도 우회를 많이 했습니다. 이 글에서는

로컬에서 Redis 클러스터를 구축하는 방법, 클라이언트에서 클러스터를 사용하는 방법, 구축 과정에서 직면하는 문제와 오류
를 정리하고 설명하여 다음에 우회하지 않고 개선할 수 있도록 자세히 소개하겠습니다. 개발, 업무 효율성.

클러스터를 사용하게 된 배경은 Redis 싱글톤 모드에서 사용자 수와 방문수가 증가함에 따라 qps 값이 급격하게 오르고?? 많은 양의 io 작업으로 인해 특정 순간에 가 가득 차면 >cpu(100%), 언제든지 다운타임이 발생할 위험이 있습니다. 동시에 redis 및 기타 방법의 일괄 처리는 증상만 치료할 뿐, 그렇지 않습니다. 근본 원인을 해결하고, 서버 성능의 병목 현상을 돌파할 수 없습니다. 따라서 클러스터 솔루션을 사용하거나 Redis 인스턴스를 추가하는 것이 필수적입니다.

용어 설명 - 클러스터

클러스터는 일반적으로 서버 클러스터를 말하며, 분산 시스템과 달리 여러 개의 서버가 모여 있는 그룹입니다. 동일한 서비스를 제공하기 위해 함께 제공되는 서버는 하나인 것 같습니다. 클러스터는 병렬 컴퓨팅

높은 컴퓨팅 속도를 달성하려면 여러 대의 컴퓨터를 사용할 수도 있습니다 Backup🎜, 그러면 기계가 고장나도 전체 시스템이 계속 정상적으로 작동할 수 있습니다. (🎜redis3.0 이전에는 🎜 🎜Sentinel 모드를 많이 사용했지만 🎜 🎜Sentinel의 구성은 다소 복잡하고 성능이나 고가용성은 모든 면에서 평균 수준입니다 🎜)🎜

redis 클러스터 요구 사항

🎜투표 내결함성 메커니즘에서는 노드가 다운되었다고 생각하기 위해 노드의 절반 이상이 필요하므로 노드가 다운되어 2개의 노드가 클러스터를 형성할 수 없으므로 Redis 클러스터에는 최소 3개가 필요합니다. 노드. 🎜🎜클러스터의 고가용성을 보장하려면 각 노드에 슬레이브 노드(즉, 백업 노드)가 있어야 하므로 Redis 클러스터에는 최소 6개의 서버가 필요합니다. 🎜(3개의 마스터와 3개의 슬레이브, 3개의 입금과 3개의 검색, 고가용성, 백업)🎜🎜🎜물론 로컬에서 디버깅할 때 너무 많은 서버를 사용하는 것은 불가능하므로 6개의 redis예제, 🎜사실 프로덕션 환경의 Redis 클러스터 설정은 기본적으로 여기와 같습니다. 🎜🎜<h2 data-id="heading-3">Mac 환경에서 로컬 Redis 클러스터 구축</h2> <h3 data-id="heading-4">🎜1 redis를 다운로드하고 설치할 수 있습니다🎜🎜🎜 공식 웹사이트에서 설치를 선택하고 명명된 라인을 사용하여 install🎜<pre class="brush:js;toolbar:false;"># start.sh 文件 #!/bin/sh redis-server /opt/homebrew/etc/redis/cluster/7000/7000.conf &amp; redis-server /opt/homebrew/etc/redis/cluster/7001/7001.conf &amp; redis-server /opt/homebrew/etc/redis/cluster/7002/7002.conf &amp; redis-server /opt/homebrew/etc/redis/cluster/7003/7003.conf &amp; redis-server /opt/homebrew/etc/redis/cluster/7004/7004.conf &amp; redis-server /opt/homebrew/etc/redis/cluster/7005/7005.conf &amp; # stop.sh 文件 #!/bin/sh redis-cli -p 7000 shutdown &amp; redis-cli -p 7001 shutdown &amp; redis-cli -p 7002 shutdown &amp; redis-cli -p 7003 shutdown &amp; redis-cli -p 7004 shutdown &amp; redis-cli -p 7005 shutdown &amp;</pre><h3 data-id="heading-5">🎜2할 수도 있습니다. redis🎜🎜🎜🎜를 통해 클러스터 환경을 구성합니다. redis 구성 파일🎜🎜<ul> <li> <code>brew list redis # redis 설치 위치 확인
  • cd /opt/homebrew/Cellar/redis/6.2. 4 # 위치에 따라 버전 번호를 입력하세요. 폴더
  • open .# 폴더 열기
  • Xcode.app를 사용하여 <code>homebrew.mxcl.redis .plist를 열면 아래와 같이 redis.conf의 위치를 ​​찾을 수 있습니다.
  • 🎜 노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]🎜🎜노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]🎜🎜🎜6개의 서비스 구성 파일 생성 🎜🎜🎜cd /opt/homebrew/ etc/(이전 단계에서 찾은 구성 파일 디렉터리)🎜
    redis-cli -p 7000 # 单个客户端启动
    redis-server 7000/7000.conf  # 启动单个服务端
    redis-cli -p 7000 shutdown # 关闭服务端
    sudo chmod +x start.sh # 开启脚本执行权限
    
    # 设置redis主从关系(三主三从)
    redis-cli --cluster create  --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
    
    cluster nodes #查看集群节点情况(进入某个客户端执行)
    cluster info #查看集群信息(进入某个客户端执行)
    
    查看所有key值:keys *
    
    删除指定索引的值:del key
    
    清空整个 Redis 服务器的数据:flushall 
    
    清空当前库中的所有 key:flushdb
    🎜🎜구성 파일을 수정하세요🎜🎜🎜/경로 아래의 구성 파일 opt/homebrew/etc/redis.conf는 수정할 필요가 없으며, 위에서 생성한 redis/cluster/7000 디렉터리에 복사한 후 수정하면 됩니다. 다음과 같습니다🎜

    위 내용은 노드에서 redis 클러스터 기능을 사용하는 방법 자세히 알아보기 [세부 구성]의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제