Redis 클러스터링의 세 가지 방법은 무엇입니까

WBOY
풀어 주다: 2023-05-26 14:37:13
앞으로
1439명이 탐색했습니다.

Redis에는 마스터-슬레이브 복제, 센티넬 모드 및 클러스터 클러스터의 세 가지 클러스터링 방법이 있습니다.

마스터-슬레이브 복제

Redis 클러스터링의 세 가지 방법은 무엇입니까

기본 원칙

새 슬레이브 서버가 구축되면 슬레이브 서버는 SYNC 명령을 수신한 후 마스터 서버에 SYNC 명령을 전송하고 BGSAVE 명령을 수행합니다. 실행하는 동안 모든 명령은 BGSAVE 명령이 실행되면 생성된 RDB 파일이 슬레이브 서버로 전송됩니다. 마스터 서버는 Redis 명령 프로토콜 형식으로 데이터를 버퍼링합니다. 영역 명령은 슬레이브 서버로 전송됩니다. 이후 마스터 서비스가 명령을 실행할 때마다 슬레이브 서버와 동기화됩니다. 여러 슬레이브 서버가 마스터 서버에 SYNC 명령을 보내더라도 마스터 서버는 다음 동기화 요청을 처리하기 위해 하나의 BGSAVE 명령만 실행합니다. 마스터 서버는 슬레이브 서버를 여러 개 가질 수 있고, 슬레이브 서버도 슬레이브 서버를 가질 수 있어 그래프와 같은 구조를 형성합니다. 복제 기능은 하나 이상의 동기화 요청이 있어도 마스터 서버를 차단하지 않습니다. 명령 요청을 처리합니다.

지속성 스위치

마스터-슬레이브 복제 모드가 구성되면 마스터 서버의 지속성 기능을 켜야 합니다. 마스터 서버의 지속성 기능이 꺼지면 마스터 서버가 다시 시작되면 모든 슬레이브가 활성화됩니다. Sentinel 모드에서 구성된 경우에도 서버 데이터가 손실됩니다. 메인 서버가 자동으로 프로세스를 빠르게 시작하여 Sentinel 모드에서 새 메인 서버가 선택되지 않은 경우 메인 서비스를 시작하면 서버에서도 데이터 손실이 발생합니다. 하위 서버.

Configuration

마스터-슬레이브 복제 모드를 구성하려면 Slaveof 명령을 사용하거나 conf 구성 파일에 추가하거나 redis에서 명령을 실행하세요.

SLAVEOF host port
로그인 후 복사

Sentinel 모드

Redis 클러스터링의 세 가지 방법은 무엇입니까

기본 원리

Redis의 Sentinel 시스템은 주로 다음 세 가지 작업을 수행합니다.

모니터링: Sentinel은 마스터 및 슬레이브 서버의 실행 상태를 지속적으로 확인합니다.

알림: Redis 서버에 오류가 발생하면 API 또는 기타 애플리케이션을 통해 알림을 보낼 수 있습니다.

자동 오류 마이그레이션: 마스터 서버가 정상적으로 작동할 수 없는 경우 Sentinel은 자동 오류 마이그레이션을 수행하고 오류가 발생한 마스터 서버의 슬레이브 서버를 선택합니다. 새로운 마스터 서버를 사용하면 나머지 슬레이브 서버가 자동으로 선택된 새 서버의 데이터를 연결하고 복제합니다.

Redis의 Sentinel 시스템은 분산 시스템으로, 시스템 내에 하나 이상의 Sentinel을 구성할 수 있습니다.

Start

redis-sentinel을 사용하여 시작

redis-sentinel sentinel.confy
로그인 후 복사

redis-server를 사용하여 시작할 수도 있습니다

redis-server sentinel.conf --sentinelyy
로그인 후 복사

위의 두 가지 방법 모두 sentinel을 시작하려면 구성 파일을 지정해야 합니다. 그렇지 않으면 시작되지 않습니다. 시작:

Redis 클러스터링의 세 가지 방법은 무엇입니까

구성

sentinel.conf 파일에는 최소한 하나의 구성이 필요합니다.

sentinel monitor mymaster 127.0.0.1 6379 2
로그인 후 복사

별칭이 mymaster인 호스트를 모니터링하며 주소는 127.0.0.1이고 포트는 6379입니다. 이 마스터를 판단하려면 서버가 유효하지 않기 때문에 최소 2명의 감시자의 동의가 필요합니다.

메인 서버의 장애에 동의하기 위해 센티넬을 아무리 많이 설정하더라도 결함 마이그레이션을 지원하려면 시스템에 여러 개의 센티널이 필요합니다. 몇 개의 센티널만 정상적으로 실행되는 경우 결함 마이그레이션을 수행할 수 없습니다.

Fault Migration

Sentinel이 메인 서버가 오프라인임을 발견한 경우를 주관적 오프라인이라고 합니다. 여러 Sentinel이 메인 서버가 오프라인임을 확인하고 메인 서버가 오프라인임을 확인하는 명령을 통해 서로 통신하는 경우에만 해당됩니다. 주관적 오프라인이라고 합니다. 마스터 서버가 객관적으로 오프라인인 경우에만 리더 Sentinel이 선출됩니다. 선출 후에는 마스터 서버로 업그레이드할 슬레이브 서버를 선출하기 위해 새로운 마스터 서버가 선출됩니다. 그리고 선택한 슬레이브 서버에 Slaveof no one 명령을 전송하여 마스터 서버로 만듭니다. 게시 및 구독 기능을 통해 새 구성이 업데이트를 위해 다른 Sentinel에 브로드캐스트되고, 오프라인 마스터 서버에 Slaveof 명령이 전송됩니다. 새 마스터 서버를 복제합니다. 모든 슬레이브 서버가 새 마스터 서버 복제를 시작하면 리더 Sentinel이 이 오류 마이그레이션을 종료합니다.

Redis 인스턴스가 재구성되면 마스터 서버, 슬레이브 서버 또는 다른 마스터 서버의 슬레이브 서버로 설정되었는지 여부에 관계없이 Sentinel은 재구성된 인스턴스에 CONFIG REWRITE 명령을 보내 이러한 구성이 유지되도록 합니다. 하드 디스크.

클러스터

Redis 클러스터링의 세 가지 방법은 무엇입니까

之前的主从复制,哨兵模式都难以再现扩容,而Redis cluster集群实现了对Redis的水平扩容,即启动N个Redis节点,每个节点又可以有自己的从服务器,将数据均匀分布的存储在这N个结点上,每个节点存储数据的1/N。Redis cluster集群就是一个可以在多个Redis节点之间进行数据共享的设施;Redis cluster集群采用的是无中心化配置,即节点A无法处理,会将请求转发只节点B进行处理。

键分布模型

Redis集群中的键空间被分割为16384个槽位。Redis采用CRC16算法对16384个槽位进行分配,每个主节点负责其中一部分。为了保证高可用,cluster模式也引入了主从复制模式,一个主节点对应一个或多个从节点,当主节点发生宕机时,可进行故障转移,将子节点升级为主节点。

配置cluster集群

Redis 集群由多个运行在集群模式(cluster mode)下的 Redis 实例组成, 实例的集群模式需要通过配置来开启,以下是一个包含了最少选项的集群配置文件示例:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
로그인 후 복사

cluster-enabled:打开集群模式
cluster-config-file:节点配置文件名,无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新
cluster-node-timeout:节点失联时间,当超过此毫秒,集群将自动切换主从节点。

要让集群正常运作至少需要三个主节点,而每个主节点都应该正确配置一个或者多个从节点。

启动集群

使用redis-cli --cluster create命令将节点合并成一个集群

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-replicas 1 这个指的是从机的数量,表示我们希望为集群中的每个主节点创建一个从节点。

进入集群模式只需要使用redis-cli -c命令

redis-cli -c -p 7000
로그인 후 복사

无中心话节点,所以进入任意一个端口号的主节点即可。

위 내용은 Redis 클러스터링의 세 가지 방법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿