Redis (원격 사전 서버)은 매우 인기 있는 오픈 소스이며 분산형 및 효율적인 인메모리 키-값 데이터베이스/데이터 구조 서버입니다.
다양한 용도에 효과적인 다양한 기능 세트를 제공하여 데이터베이스, 캐싱 레이어, 메시지 브로커 또는 큐로 사용할 수 있습니다. 웹 응용 프로그램, 채팅 및 메시징 응용 프로그램, 게임, 실시간 데이터 분석 등에 적용됩니다.
유연한 데이터 구조, 마스터-슬레이브 비동기 복제를 지원하여 읽기 성능을 확장하고 데이터 손실에 대비합니다. 클라이언트 측 샤딩을 통해 쓰기 성능을 확장하며 인메모리 데이터를 컴팩트한 형식으로 디스크에 쓰기 위한 두 가지 형태의 지속성을 제공합니다. 클러스터링 및 파티셔닝을 지원합니다. 또한 Redis Sentinel, Lua 스크립팅, 트랜잭션 등을 통해 고가용성 배포를 위한 자동 장애 극복 기능을 제공합니다.
NO SQL 또는 비관계형 데이터베이스로, Redis는 모든 데이터가 메모리에 저장되어 있어 애플리케이션에서 쉽게 액세스할 수 있어 전통적인 데이터베이스 시스템(MySQL/MariaDB, PostgreSQL 등)에 비해 성능 상의 이점을 제공합니다. 전통적인 데이터베이스는 모든 데이터를 디스크에 쓰거나 디스크에서 읽어야 하지만 Redis는 그렇지 않습니다.
Redis는 캐싱에 대한 점차적으로 흔한 선택지가 되었는데, 이는 자주 사용되는 데이터를 항상 데이터베이스에 쿼리하는 것이 아니라 캐시된 데이터(응용 프로그램의 주 메모리 공간 내에 저장)를 재사용할 수 있게 합니다. 그래서 이는 애플리케이션 성능을 궁극적으로 향상시키기 위한 RDMS(관계형 데이터베이스 관리 시스템)의 환상적인 동반자입니다.
이 삼부 Redis 튜토리얼 시리즈에서는 복제, Redis Sentinel를 사용한 고가용성 및 Redis Cluster와 같은 Redis의 주요 기능 설정 및 사용 방법을 다룰 것입니다. 이 글은 다음과 같습니다:
이 안내서는 CentOS 8 Linux에서 Redis Replication(클러스터 모드 비활성화) 설정 방법과 Redis 설치, 마스터 및 복제 설정, 복제 테스트 등을 보여줍니다.
중요: 클러스터 모드가 비활성화된 Redis Cluster(즉, 복제 클러스터)는 단일 노드 그룹(예: 마스터 및 한 개 또는 두 개의 복제본)을 갖지만 클러스터 모드가 활성화된 Redis 클러스터는 두 개 이상의 노드 그룹(예: 각각 슬레이브를 가진 세 개의 마스터 또는 두 개의 마스터)으로 구성될 수 있습니다.
전제 조건:
테스트 환경 설정
Redis Master Server: 10.42.0.247 Redis Replica1/Slave1: 10.42.0.21 Redis Replica2/Slave2: 10.42.0.34

위의 설정(단일 읽기/쓰기 주 노드와 2개의 읽기 전용 복제 노드를 갖는)을 사용하면, 각 노드에 클러스터의 모든 데이터를 포함하는 단일 노드 그룹이 있습니다. 슬레이브가 마스터에 연결되면 전체 데이터베이스의 초기 복사본과 이전에 슬레이브에 있던 데이터가 폐기됩니다.
또한, 클라이언트는 마스터에만 쓸 수 있지만 클러스터의 모든 노드에서 읽을 수 있습니다. 그리고 쓰기가 마스터에서 수행되면, 실시간으로 연결된 모든 슬레이브로 전파되어 슬레이브 데이터 세트가 업데이트됩니다.
단계 1: CentOS 8에 Redis 설치
1. 먼저 SSH를 통해 모든 CentOS 8 노드에 로그인한 다음, 다음과 같이 모든 노드(마스터 및 복제본)에 Redis 패키지를 DNF 패키지 관리자를 사용하여 설치합니다.
# dnf install @redis
2. Redis 패키지 설치가 완료되면, Redis 서비스를 시작하고 시스템 부팅마다 자동으로 시작하도록 설정하고 다음과 같이 실행 중인지 확인합니다.
# systemctl start redis # systemctl enable redis # systemctl status redis
3. 또한 Redis 서버가 실행 중인지 확인하려면 다음과 같이 ss 명령어를 사용하여 수신 포트를 확인할 수 있습니다.
# ss -ltpn | grep redis-server

단계 2: Redis 마스터 서버 구성
4. Redis는 자체 문서화된 예제 구성 파일인 /etc/redis.conf 구성 파일을 사용하여 구성됩니다. 먼저 원본 파일의 백업을 만든 다음 선택한 명령 줄 편집기로 열어서 편집합니다.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5. 기본적으로 Redis 인스턴스는 bind 지시문을 사용하여 루프백 인터페이스에서 연결을 수신하고 수락하도록 구성됩니다. 레플리카와 통신하려면 마스터는 IPv4 루프백 주소와 해당 LAN IP 주소 즉 10.42.0.247에서 수신하도록 구성되어야 합니다.
bind 127.0.0.1 10.42.0.247
6. 다음으로 보호 모드 매개변수를 no
로 설정하여 아래와 같이 레플리카와 통신을 허용합니다.
protected-mode no
또한 Redis는 port
지시문을 사용하여 설정된 6379 포트에서 수신합니다. 이는 응용 프로그램 API 또는 CLI 클라이언트와 통신하는 데이터 포트입니다.
port 6379

7. 마스터-레플리카 통신을 선택적으로 보안하기 위해 마스터를 requirepass 지시문을 사용하여 보호할 수 있습니다. 이렇게 하면 클라이언트/레플리카가 명령을 실행하거나 복제 동기화 프로세스를 시작하기 전에 인증 암호를 제공해야 합니다. 그렇지 않으면 마스터는 클라이언트/레플리카 요청을 거부합니다(안전한 암호를 설정하는 것을 잊지 마십시오).
우리는 어떻게 작동하는지 보여주기 위해 다음 옵션을 사용할 것입니다.
requirepass Securep@55Here

8. 또한, Redis 로그는 /var/log/redis/redis.log 파일에 저장됩니다. 이는 logfile 지시문을 사용하여 설정되며 기본 서버 상세 수준은 notice로 loglevel 매개변수를 사용하여 정의됩니다.
loglevel notice logfile /var/log/redis/redis.log

9. systemd가 CentOS 8의 기본 시스템 및 서비스 관리자이므로 Redis를 systemd 감시 트리와 상호 작용하도록 설정할 수 있습니다. 이를 위해 supervised 매개변수를 systemd로 설정하십시오.
supervised systemd

10. 필요한 모든 구성을 완료한 후 파일을 저장하고 닫으십시오. 그런 다음 새 변경 사항을 적용하려면 Redis 서비스를 다시 시작하십시오.
# systemctl daemon-reload # systemctl restart redis
11. Redis 서버에 액세스하려면 redis-cli (redis-server의 명령 줄 인터페이스)를 사용해야 합니다. 기본적으로 localhost (127.0.0.1 포트 6379)에 대한 서버에 연결합니다. 클라이언트로부터 보호되는 서버이기 때문에 인증되기 전에 명령을 실행하면 실패해야 합니다.
auth 명령을 사용하여 다음 스크린샷에 표시된대로 인증 암호를 제공하십시오.
# redis-cli 127.0.0.1:6379> client list 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> client list

12. 레플리카에 연결하려면 (다음 섹션에서 설명된대로 구성한 후) -h
및 -p
옵션을 사용하여 레플리카 IP 주소/호스트 이름 및 포트를 지정하십시오 (레플리카 방화벽에서 포트 6379이 열려 있어야 합니다).
# redis-cli -h 10.42.0.21 -p 6379
다음으로 방화벽에서 마스터로의 들어오는 연결을 허용하기 위해 Redis 서버 데이터 포트를 열고, 이후 방화벽 규칙을 다시 불러오려면 방화벽-cmd 명령을 사용하십시오.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --reload
단계 3: Redis 복제/슬레이브 서버 구성
14. 즉시 Redis 인스턴스를 복제로 설정하려면 redis-cli 유틸리티를 사용하고 REPLICAOF 명령을 호출하십시오.
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. 복제 연결을 영구적으로 만들려면 구성 파일에서 다음 변경 사항을 수행해야 합니다. 먼저 원본 파일을 백업한 다음 편집을 위해 엽니다.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
16. 클라이언트가 데이터를 읽기 위해 복제에 연결할 수 있도록 하려면 복제 IP 주소를 bind 지시문에 추가하십시오.
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Redis 인스턴스를 복제로 설정하기
17. Redis 인스턴스를 복제로 구성하려면 replicaof 매개변수를 사용하고 마스터 노드의 IP 주소(또는 호스트명)와 포트를 값으로 설정하십시오.
replicaof 10.42.0.247 6379
마스터에 인증하도록 복제 설정하기
18. 다음으로, 마스터 인스턴스가 비밀번호로 보호되므로, 마스터에 인증하도록 복제 구성에서 비밀번호를 설정해야 합니다. 이를 위해 masterauth 매개변수를 사용하십시오.
masterauth Securep@55Here
19. 또한, 레플리카가 마스터와의 연결을 잃거나 복제가 진행 중일 때, 레플리카는 클라이언트 요청에 “오래된” 데이터로 응답하도록 구성됩니다. 그러나 첫 동기화인 경우 데이터 집합이 비어 있을 수 있습니다. 이 동작은 replica-serve-stale-data 매개변수에 의해 제어됩니다.
또한, Redis 2.6부터 레플리카는 기본적으로 읽기 전용이며, 이는 replica-read-only 매개변수에 의해 제어됩니다. 응용 프로그램 요구 사항에 맞게 다른 레플리카 구성 조정을 할 수 있습니다.
20. 필요한 모든 변경 사항을 완료한 후 모든 레플리카에서 Redis 서비스를 다시 시작하십시오.
# systemctl restart redis
21. 또한, 방화벽에서 마스터 및 클라이언트에서 레플리카로의 연결을 허용하기 위해 포트 6379를 열고 방화벽 규칙을 다시로드하십시오.
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp # firewall-cmd --reload
단계 4: 마스터-레플리카 복제 상태 확인
22. 마스터-레플리카 복제 구성이 완료되면 다음과 같이 설정이 잘 작동하는지 확인할 수 있습니다.
마스터에서 다음 명령을 실행하십시오.
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> info replication

23. 또한, 다음과 같이 레플리카/슬레이브에서 복제 상태를 확인하십시오.
# redis-cli 127.0.0.1:6379> info replication


23. 이제 마스터 인스턴스에 키-값을 설정하여 복제를 테스트하고 데이터가 레플리카로 동기화되었는지 확인하겠습니다.
마스터에서 다음을 수행하십시오:
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> set domain 'www.tecmint.com'

24. 그런 다음 데이터가 레플리카로 동기화되었는지 확인하십시오.
# redis-cli 127.0.0.1:6379> get domain

마스터 인스턴스가 일부 쓰기를 잃는 위험으로부터 보호하기
25. Redis에는 충분한 복제본이 없으면 마스터 인스턴스에 일부 쓰기를 잃는 위험을 제한하는 기능이 있습니다. 지정된 초 수.
이는 마스터가 연결된 복제본이 N 개보다 적고 M 초 이하의 지연이 발생하면 min-replicas-to-write 및 min-replicas-max-lag 옵션을 사용하여 등록을 중지할 수 있다는 것을 의미합니다. 각각 제어됩니다.
값을 설정하려면 /etc/redis.conf에서 설정 요구 사항에 따라 값을 주석 처리하고 설정하십시오. 다음 스크린 샷에 표시된 대로 이 구성은 마지막으로 복제본으로 핑 한 후 10 초 이내에 2개 이하의 온라인 복제본이있는 경우 마스터가 쓰기를 중단한다는 것을 의미합니다.
min-replicas-to-write 2 min-replicas-max-lag 10

나머지 /etc/redis.conf 구성 파일에서 더 많은 옵션을 찾을 수 있으며 자세한 내용은 Redis 설명서에서 복제에 대해 읽을 수 있습니다.
다음 기사에서 CentOS 8에서 Sentinel을 사용하여 Redis를 고 가용성으로 설정하는 방법을 다룰 예정입니다. 그때까지 잠겨
Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/