Redis 클러스터 구성

무리

  • Redis에는 세 가지 클러스터 모드가 있습니다.

  • 마스터-슬레이브 모드

  • 센티넬 모드

  • 클러스터 모드

  • 마스터-슬레이브 복제의 단점

마스터 노드가 다운되고 쓰기 서비스를 사용할 수 없게 되면 수동으로 전환하고 마스터 노드를 다시 선택하고 마스터-슬레이브 관계를 수동으로 설정해야 합니다.

  • 센트리 모드의 단점

  • 마스터가 끊기면 Sentinel이 마스터를 선출하는데, 선출하는 동안에는 Redis에 접근할 수 있는 방법이 없으며 일시적으로 접근이 중단됩니다.

  • 센티넬 모드에서는 마스터 노드만 외부에 쓸 수 있고 슬레이브 노드는 읽기만 할 수 있습니다. 단일 Redis 노드가 최대 10W의 QPS를 지원하지만 전자 상거래 프로모션 중에 데이터 쓰기에 대한 압력은 모두 마스터에 있습니다.

  • Redis의 단일 노드 메모리는 너무 크게 설정할 수 없으며 데이터가 너무 크면 마스터-슬레이브 동기화가 매우 느려지고 노드가 시작될 때 시간이 특히 길어집니다.

① Redis 마스터-슬레이브 복제

  • 마스터-슬레이브 복제란 무엇입니까

마스터-슬레이브 복제는 한 Redis 서버의 데이터를 다른 Redis 서버로 복사하는 것을 말합니다. 전자를 마스터노드(master), 후자를 슬레이브노드(slave)라 하며 데이터 복제는 단방향이며 마스터노드에서 슬레이브노드로만 가능하다.

  • 마스터-슬레이브 복제의 역할
  1. 데이터 중복성: 마스터-슬레이브 복제는 데이터의 핫 백업을 구현하며 이는 지속성 이외의 데이터 중복성 방법입니다.
  2. 결함 복구: 마스터 노드에 문제가 있을 때 슬레이브 노드는 서비스를 제공하여 신속한 결함 복구를 달성할 수 있으며 실제로 일종의 서비스 중복입니다.
  3. 로드 밸런싱: 읽기-쓰기 분리와 결합된 마스터-슬레이브 복제를 기반으로 마스터 노드는 쓰기 서비스를 제공할 수 있고 슬레이브 노드는 읽기 서비스를 제공할 수 있습니다(즉, Redis 데이터를 쓸 때 응용 프로그램이 마스터 노드에 연결됨) , 애플리케이션은 Redis 데이터를 읽을 때 슬레이브 노드에 연결) 서버 부하를 공유하기 위해; 특히 적게 쓰고 더 많이 읽는 시나리오에서 여러 슬레이브 노드를 통해 읽기 부하를 공유하면 Redis 서버의 동시성을 크게 높일 수 있습니다.
  4. 고가용성의 초석: 위의 기능 외에도 마스터-슬레이브 복제는 센티넬 및 클러스터 구현을 위한 기반이기도 하므로 마스터-슬레이브 복제는 Redis의 고가용성을 위한 기반입니다.
  • 마스터-슬레이브 복제는 3단계로 나눌 수 있습니다.
  1. 연결 설정 단계(예: 준비 단계)
  2. 데이터 동기화 단계
  3. 명령 전파 단계
  • 마스터-슬레이브 동기화 전략

마스터-슬레이브가 막 연결되면 전체 동기화가 수행되고 전체 동기화 후 증분 동기화가 수행됩니다. 물론 필요한 경우 슬레이브는 언제든지 전체 동기화를 시작할 수 있습니다. Redis 전략은 어떤 ​​일이 있어도 먼저 증분 동기화를 시도하고 실패할 경우 슬레이브 머신에서 전체 동기화를 수행해야 합니다.

독립형 구성

①, 구성 파일 작성

새로운 redis6379.conf

# 修改配置文件
vim redis6379.conf

# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb

새로운 redis6380.conf

# 修改配置文件
vim redis6379.conf

# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb

새로운 redis6381.conf

# 修改配置文件
vim redis6379.conf

# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb

② 시작

# 分别启动三台redis
./redis-server ../redis6379.conf
./redis-server ../redis6380.conf
./redis-server ../redis6381.conf

③ 라이브러리 설정에서

마스터 라이브러리가 아닌 슬레이브 라이브러리 구성

# slaveof <ip> <port> - ip: 主库地址,port: 主库端口
SLAVEOF 127.0.0.1 6379

④ 마스터-슬레이브 상태 확인

slaveof 실행 후 상태 정보 보기

# 查看连接信息
info replication

②, 레디스 센티넬 모드

  • 마스터-슬레이브 스위칭 기술

마스터 서버가 다운되면 수동으로 슬레이브 서버를 마스터 서버로 전환해야 하는데, 이는 수동 개입이 필요하며, 이는 힘들고 일정 시간 동안 서비스를 사용할 수 없게 됩니다. 이것은 권장되는 방법이 아니며 센티널 모드에 우선 순위를 부여하는 경우가 더 많습니다.

  • 센티널 개요

Sentinel 모드는 특별한 모드입니다.먼저 Redis는 센티넬 명령을 제공합니다.Sentinel은 독립적인 프로세스입니다.프로세스로서 독립적으로 실행됩니다. 원칙은 Sentinel이 명령을 보내고 Redis 서버의 응답을 기다리면서 실행 중인 여러 Redis 인스턴스를 모니터링한다는 것입니다.

  • 센티넬 역할
  1. 클러스터 모니터링: Redis 마스터 및 슬레이브 프로세스가 정상적으로 작동하는지 모니터링하는 역할
  2. 메시지 알림: Redis 인스턴스가 실패하면 Sentinel이 관리자에게 알람 알림으로 메시지를 보내는 역할을 합니다.
  3. 장애 조치: 마스터 노드가 끊기면 자동으로 슬레이브 노드로 전환됩니다.
  4. 구성 센터: 장애 조치가 발생하면 클라이언트에 새 마스터 주소를 알립니다.

센티넬 빌딩

① 센티넬을 생성합니다.

새로운 sentinel-26379.conf 파일 생성

다른 클라이언트도 구성해야 합니다.

  • 매개변수:
  1. 센티넬 모니터 mymaster 192.168.92.128 6379 2 구성의 의미는 센티넬 노드가 마스터 노드 192.168.92.128:6379를 모니터링하고 마스터 노드의 이름은 mymaster이며 마지막 2의 의미는 실패 판단과 관련됩니다. 마스터 노드의: 최소 2개의 Sentinel 노드가 동의하여 기본 노드의 장애를 판단하고 장애 조치를 수행합니다.

    파일 수정

    vim sentinel-26379.conf

    내용 수정

    포트

    포트 26379

    실행 중인 데몬

    데몬화 예

    로그 파일

    로그 파일 "26379.log"

    모니터링되는 마스터 노드 이름(mymaster) 마스터 노드 ip(192.168.66.11) 마스터 노드 포트(6379) 전체 노드의 절반+1(2)

    감시 모니터 mymaster 192.168.66.11 6379 2

② 센티널 시작

# 启动哨兵
cd /.../src
./redis-sentinel ../sentinel-26379.conf

# 查看状态
./redis-cli -p 26379
info sentinel

③, 클러스터 모드

Redis 클러스터는 다중 마스터-슬레이브 노드 그룹으로 구성된 분산 서비스 클러스터로 복제, 고가용성 및 단편화의 특성을 가지고 있습니다. Redis 클러스터 구성에는 최소 3개의 마스터 노드가 필요하며, 여기서는 총 6개의 Redis 노드에 대해 각각 슬레이브 노드가 연결된 3개의 마스터 노드를 구성합니다.

클러스터 구성

① 클러스터 파일 구성

  • redis.conf 파일의 다음 내용 수정 [모든 클라이언트를 구성해야 함]

    redis.conf 파일의 다음 내용을 수정합니다.

    정력 /.../redis.conf

    내용 수정

    포트 8001
    데몬화 예
    pidfile "/var/run/redis_8001.pid" .

    데이터 파일의 저장 위치를 ​​지정하십시오. 다른 디렉토리 위치를 지정해야 합니다. 그렇지 않으면 데이터가 손실됩니다.

    디렉토리 /usr/local/redis/redis-cluster/8001/

    클러스터 모드 시작

    클러스터 지원 예

    클러스터 노드 정보 파일, 여기서 800x는 포트에 해당하는 것이 가장 좋습니다.

    클러스터 구성 파일 nodes-8001.conf

    노드 오프라인 시간 초과

    클러스터 노드 제한 시간 5000

    IP 정보에 액세스하기 위해 바인드 바인딩 제거

    바인드 127.0.0.1

    보호 모드 비활성화

    보호 모드 아니오

    AOF 파일 시작

    부록 예

    암호를 설정하려면 다음 구성을 추가해야 합니다.

    Redis 액세스 비밀번호 설정

    필수 패스 itxiong

    위의 내용과 일치하도록 클러스터 노드 간의 액세스 암호를 설정합니다.

    masterauth itxiong

② 클러스터 생성

  • 매개변수:
  1. -a:비밀번호

  2. –클러스터 복제본:

    • –cluster-replicas 1: 1개의 슬레이브가 1개의 마스터에 연결되어 있음을 나타냅니다.
    • –cluster-replicas 2: 2개의 슬레이브가 1개의 마스터에 연결되어 있음을 나타냅니다.

    시작하다

    /usr/local/redis/src/redis-cli -a redis-pw –
    클러스터 생성 --cluster-replicas 1 192.168.66.101:8001 192.168.66.101:8002 192.168.66.102:8001 192.168.66.102:8002 192.16 8.66.103: 8001 192.168.66.103:8002

③ 도움말 명령어 보기

  • 매개변수:
  1. create: 클러스터 환경 생성 host1:port1 ... hostN:portN

  2. 호출: redis 명령을 실행할 수 있습니다.

  3. add-node: 클러스터에 노드를 추가합니다. 첫 번째 매개변수는 새 노드의 ip:port이고 두 번째 매개변수는 클러스터에 있는 기존 노드의 ip:port입니다.

  4. del-node: 노드 제거

  5. 리샤드: 리샤드

  6. check: 클러스터의 상태를 확인합니다.

    도움말 보기

    src/redis‐cli --클러스터 도움말

④ 클러스터 확인

모든 클라이언트에 연결

  • 매개변수:
  1. ‐a는 서버 암호를 나타냅니다.

  2. -c는 클러스터 모드를 의미합니다.

  3. -h는 IP 주소를 지정합니다.

  4. -p는 포트 번호를 나타냅니다.

    클라이언트 연결

    /usr/local/redisd/src/redis-cli -a redis-pw -c -h 192.168.66.101 -p 8001

⑤ 클러스터 정보 보기

cluster info

추천

출처blog.csdn.net/qq_56571862/article/details/128904404