이 기사는 Redis의 마스터-슬레이브 복제, 센티널 및 클러스터를 안내합니다. 도움이 되기를 바랍니다.
1. Redis 마스터-슬레이브 복제
1. 마스터-슬레이브 복제 개요
마스터-슬레이브 복제는 한 서버의 데이터를 다른 Redis 서버로 복사하는 것을 의미합니다. 전자를 마스터 노드(Master)라고 하고 후자를 슬레이브 노드(Slave)라고 합니다. 데이터 복제는 단방향이며 마스터 노드에서 슬레이브 노드로만 가능합니다.
기본적으로 각 Redis 서버는 마스터 노드이며 마스터 노드는 여러 개의 슬레이브 노드를 가질 수 있지만 슬레이브 노드는 하나의 마스터 노드만 가질 수 있습니다. [관련 권장사항: Redis 동영상 튜토리얼]
2. 마스터-슬레이브 복제의 역할
● 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 ● 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。 ● 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;有其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。 ● 高可用基石: 위 기능 외에도 마스터-슬레이브 복제도 센티널 구현의 기반입니다. 및 클러스터이므로 마스터-슬레이브 복제라고 합니다. 이는 Redis 고가용성의 기초입니다.
3. 마스터-슬레이브 복제 프로세스
(1) 슬레이브 머신 프로세스가 시작되면 마스터 머신에 "동기화 명령" 명령을 보내 동기 연결을 요청합니다. (2) 첫 번째 연결이든 재연결이든 마스터 머신은 백그라운드 프로세스를 시작하고 데이터 스냅샷을 데이터 파일에 저장합니다(RDB 작업 수행). 동시에 마스터는 수정하는 모든 명령도 기록합니다. 데이터를 파일의 데이터 파일에 캐시합니다. (3) 백그라운드 프로세스가 캐싱 작업을 완료한 후 마스터 머신은 데이터 파일을 슬레이브 머신으로 전송합니다. 슬레이브 머신은 데이터 파일을 하드 디스크에 저장한 다음 마스터 머신에 로드합니다. 데이터를 수정합니다. 모든 작업은 슬레이브 시스템으로 함께 전송됩니다. 슬레이브에 오류가 발생하여 가동 중지 시간이 발생하면 정상으로 돌아올 때 자동으로 다시 연결됩니다. (4) 마스터 시스템은 슬레이브 시스템으로부터 연결을 받은 후 전체 데이터 파일을 슬레이브 시스템으로 보냅니다. 마스터가 슬레이브로부터 동시에 여러 동기화 요청을 받으면 마스터는 다음에서 프로세스를 시작합니다. 백그라운드에서 데이터 파일을 저장한 다음 모든 슬레이브 머신에 전송하여 모든 슬레이브 머신이 정상인지 확인합니다.
传入安装包到/opt目录
yum install -y gcc gcc-c++ make
tar zxvf redis-5.0.7.tar.gz -C /opt/
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
cd /opt/redis-5.0.7/utils
./install_server.sh
......
Please select the redis executable path []
#输入/uar/local/redis/bin/redis-server
ln -s /usr/local/redis/bin/* /usr/local/bin/
로그인 후 복사
4.4 redis 구성 파일 수정(마스터 노드 작업)
마스터: 192.168.122.10
[root@master ~]# vim /etc/redis/6379.conf
##70行,修改监听地址为0.0.0.0,表示监听任何地址
bind 0.0.0.0
##137行,开启守护进程
daemonize yes
##172行,指定日志文件目录
logfile /var/log/redis_6379.log
##264行,指定工作日志
dir /var/lib/redis/6379
##700行,开启AOF持久化功能
appendonly yes
1 Sentinel 모드의 핵심 기능마스터-슬레이브 복제를 기반으로 Sentinel은 마스터 노드의 자동 장애 조치를 도입합니다.
2. Sentinel 모드의 원리Sentinel은 마스터-슬레이브 구조의 각 서버를 모니터링하는 데 사용되는 분산 시스템으로, 투표 메커니즘을 통해 새로운 마스터가 선택되고 모든 슬레이브가 연결됩니다. 새로운 마스터에게. 따라서 Sentinel을 실행하는 전체 클러스터의 수는 3개 노드 이상이어야 합니다.
3. 센티넬 모드의 역할● 모니터링: 센티넬은 마스터 노드와 슬레이브 노드가 정상적으로 작동하는지 지속적으로 확인합니다.
● 자동 장애 조치: 마스터 노드가 제대로 작동하지 않으면 Sentinel은 장애가 발생한 마스터 노드의 슬레이브 노드 중 하나를 새 마스터 노드로 업그레이드하고 다른 노드는 자동 장애 조치 작업을 시작합니다. 슬레이브 노드가 새 기본 노드를 복제하도록 변경됩니다.
● 알림 알림: Sentinel은 장애 조치 결과를 클라이언트에 보낼 수 있습니다. 监控:哨兵会不断地检查主节点和从节点是否运作正常。 ● 自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。 ● 通知提醒
4. 센티넬 모드의 구조
센티넬 구조는 센티넬 노드와 데이터 노드의 두 부분으로 구성됩니다.
● 센티넬 노드: 센티넬 시스템은 하나 이상의 노드로 구성됩니다. 특별한 redis 노드에는 데이터가 저장되지 않습니다. ● 데이터 노드: 마스터 노드와 슬레이브 노드는 모두 데이터 노드입니다.
5. Sentinel 모드 작동 방식
Sentinel의 시작은 마스터-슬레이브 모드에 따라 다르므로 Sentinel 모드를 시작하기 전에 마스터-슬레이브 모드를 설치해야 합니다. 모드에서는 Sentinel 모드가 모든 Redis 작업 노드가 정상인지 여부를 모니터링하며, 마스터에 문제가 있는 경우 다른 노드가 마스터 노드와의 연결이 끊겼기 때문에 투표를 진행합니다. 마스터에 실제로 문제가 있다고 판단되면 감시실에 통보되며, 슬레이브 중 하나를 새로운 마스터로 선택합니다.
6. 장애 조치 메커니즘
센티넬 노드는 마스터 노드의 장애 여부를 정기적으로 모니터링합니다. 각 센티넬 노드는 하트비트 감지를 위해 1초마다 마스터 노드, 슬레이브 노드 및 기타 센티넬 노드에 ping 명령을 보냅니다. 마스터 노드가 특정 시간 범위 내에 응답하지 않거나 오류 메시지로 응답하는 경우 센티널은 마스터 노드가 주관적으로(일방적으로) 오프라인 상태인 것으로 간주합니다. 센티넬 노드의 절반 이상이 마스터 노드가 주관적으로 오프라인이라고 믿으면 객관적으로 오프라인이 됩니다.
마스터 노드에 장애가 발생하면 Sentinel 노드는 Raft 알고리즘(선거 알고리즘)을 통해 선출 메커니즘을 구현하여 마스터 노드의 장애 조치 및 알림을 처리할 리더로 Sentinel 노드를 공동 선출합니다. 따라서 Sentinel 클러스터의 호스트 수는 노드 3개 이상이어야 합니다.
리더 센티넬 노드는 장애 조치를 수행합니다.
● 슬레이브 노드를 새 마스터 노드로 업그레이드하고 다른 슬레이브 노드가 새 마스터 노드를 가리키도록 합니다. ● 원래 마스터 노드가 복구되면 슬레이브 노드가 되고 새로운 마스터 노드를 가리킵니다. ● 마스터 노드가 변경되었음을 클라이언트에 알립니다. 목표 오프라인은 마스터 노드에만 적용되는 개념입니다. 슬레이브 노드와 센티널 노드가 실패하면 센티널이 주관적으로 오프라인 상태가 된 후에는 후속 목표 오프라인 및 장애 조치 작업이 발생하지 않습니다.
7. 마스터 노드 선거
센티넬 핑 응답에 응답하지 않는 비정상(오프라인) 슬레이브 노드를 필터링합니다.
구성 파일에서 우선 순위가 가장 높은 슬레이브 노드를 선택합니다(복제 우선 순위, 기본값은 100).