웹사이트 검색

CentOS 8에서 Redis 복제(클러스터 모드 비활성화)를 설정하는 방법 - 1부


Redis(원격 사전 서버)는 매우 유명하고 널리 사용되는 오픈 소스이며 빠르고 분산되며 효율적인 인메모리 키-값 데이터베이스/데이터 구조 서버입니다.

데이터베이스, 캐싱 계층, 메시지 브로커 또는 대기열과 같은 광범위한 사용 사례에 효과적인 다양한 기능 세트를 제공합니다. 웹 애플리케이션, 채팅 및 메시징 애플리케이션, 게임, 실시간 데이터 분석 등에 적용할 수 있습니다.

유연한 데이터 구조, 읽기 성능을 확장하고 데이터 손실을 방지하기 위한 마스터-슬레이브 비동기 복제, 쓰기 성능을 확장하기 위한 클라이언트 측 샤딩, 컴팩트 형식으로 메모리 내 데이터를 디스크에 쓰기 위한 두 가지 형태의 지속성, 클러스터링 및 파티셔닝. 또한 Redis Sentinel, Lua 스크립팅, 트랜잭션 등을 통해 고가용성 배포를 위한 자동 장애 조치 기능을 제공합니다.

NO SQL 또는 비관계형 데이터베이스인 Redis는 기존 데이터베이스 시스템(예: MySQL/MariaDB, PostgreSQL 등), 모든 데이터가 메모리에 상주하거나 저장되어 애플리케이션에 쉽게 액세스할 수 있는 반면, 기존 데이터베이스는 모든 데이터를 디스크나 외부 소스에 쓰거나 디스크나 외부 소스에서 읽어야 하기 때문입니다.

Redis는 자주 사용되는 데이터에 대해 항상 데이터베이스를 쿼리하는 대신 캐시된 데이터(애플리케이션의 기본 메모리 공간에 저장된)를 재사용할 수 있도록 하는 캐싱을 위한 선택으로 점점 더 널리 사용되고 있습니다. 따라서 궁극적으로 애플리케이션 성능을 향상시키는 RDMS(관계형 데이터베이스 관리 시스템)의 환상적인 동반자입니다.

세 부분으로 구성된 이 Redis 튜토리얼 시리즈에서는 Redis SentinelRedis Sentinel을 사용하여 복제, 고가용성과 같은 Redis의 주요 기능을 설정하고 사용하는 방법을 다룹니다. >Redis 클러스터, 기사는 다음과 같습니다.

이 가이드에서는 Redis 설치 방법, 마스터 구성 방법을 포함하여 CentOS 8 Linux에서 Redis 복제(클러스터 모드 비활성화)를 설정하는 방법을 보여줍니다. 및 복제본을 생성하고 복제를 테스트합니다.

중요: 클러스터 모드가 비활성화된 Redis 클러스터(예: 복제 클러스터)에는 단일 노드 그룹( 예를 들어 마스터 및 하나 또는 두 개의 복제본) 클러스터 모드가 활성화된 Redis 클러스터는 두 개 이상의 노드 그룹으로 구성될 수 있습니다(예: 각각 슬레이브가 있는 세 개의 마스터 또는 두 개).

전제 조건:

  1. CentOS 8이 설치된 서버

테스트 환경 설정

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. 다음과 같이 ss 명령을 사용하여 수신 포트를 확인하여 Redis 서버가 실행되고 있는지 확인할 수도 있습니다.

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 인스턴스는 바인딩 지시문을 사용하여 루프백 인터페이스에서 연결을 수신하고 수락하도록 구성됩니다. 복제본과 통신하려면 마스터가 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 지시문을 사용하여 설정됩니다. 기본 서버 상세 수준은 loglevel 매개변수를 사용하여 정의된 notice입니다.

loglevel  notice
logfile  /var/log/redis/redis.log

9. systemdCentOS 8의 기본 시스템 및 서비스 관리자이므로 Redis가 다음과 상호작용하도록 구성할 수 있습니다. supervised 매개변수를 systemd로 설정하여 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

13. 그런 다음 방화벽에서 Redis 서버 데이터 포트를 열어 마스터에 대한 인바운드 연결을 허용한 다음 표시된 대로 Firewall-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 주소를 바인딩 지시어에 추가하세요.

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 'linux-console.net'

24. 그런 다음 그림과 같이 데이터가 복제본에 동기화되었는지 확인하세요.

redis-cli
127.0.0.1:6379> get domain

일부 쓰기 손실 위험으로부터 마스터 인스턴스 보호

25. Redis에는 마스터 인스턴스가 사용 가능한 복제본이 충분하지 않은 경우 일부 쓰기가 손실될 위험을 지정된 시간(초)으로 제한할 수 있는 기능이 있습니다.

이는 N개 미만의 복제본이 연결되어 있고 M초 이하의 지연 시간이 있는 경우 min에 의해 제어되는 경우 마스터가 쓰기 허용을 중지할 수 있음을 의미합니다. -replicas-to-writemin-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를 설정하는 방법을 다룰 것입니다. 그때까지는 가만히 계시고 아래의 댓글 양식을 사용하여 생각과 질문을 공유하는 것을 잊지 마세요. 저희에게 연락하실 수 있습니다.