InfoGrab Docs

Redis

요약

Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. Mattermost와 함께 Redis를 배포하는 과정은 Redis 서버 설정 과 Mattermost에서 Redis 구성 의 2단계로 구성됩니다.

Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. Mattermost는 규모 확장 시 성능을 향상시키기 위한 외부 캐시로 Redis를 사용합니다. 올바르게 구성하면 Redis는 효율적인 캐싱을 통해 향상된 성능을 제공하여 100,000명 이상의 사용자를 보유한 Mattermost 설치를 지원하는 데 도움이 됩니다.

배포 가이드#

Mattermost와 함께 Redis를 배포하는 과정은 Redis 서버 설정Mattermost에서 Redis 구성 의 2단계로 구성됩니다.

Redis 서버 설정#

  1. Redis 7.x 의 최신 릴리즈를 다운로드하여 설치하세요. 운영 체제별 설치 세부사항은 Redis 문서를 참조하세요.
  2. 환경에 맞게 Redis를 적절히 구성하세요. Redis가 보안이 유지되고 신뢰할 수 있는 시스템에서만 접근 가능한지 확인하세요.
  3. 고가용성 배포의 경우, 향상된 안정성과 성능을 위해 Redis를 클러스터 구성으로 설정하는 것을 고려하세요.

Mattermost에서 Redis 구성#

다음 단계를 따라 Redis 서버를 사용하도록 Mattermost를 구성하세요:

  1. 시스템 콘솔 > 환경 > 캐시 로 이동하세요.
  2. 캐시 유형redis 로 설정하여 Redis 관련 설정을 활성화하세요.
  3. Redis 서버 연결 세부사항을 설정하세요:
  4. a. 앞서 설정한 Redis 서버의 Redis 주소 를 입력하세요(예: redis.example.com:6379).

    b. (선택사항) Redis 서버에 인증이 필요한 경우 Redis 비밀번호 를 입력하세요. c. (선택사항) 사용할 Redis 데이터베이스를 지정하려면 Redis 데이터베이스 를 입력하세요(기본값은 -1이며, Redis의 기본 데이터베이스를 사용합니다).
  5. 구성을 저장하고 Mattermost 서버를 재시작하세요.

또는 config.json 파일에서 Redis를 구성할 수 있습니다:

"CacheSettings": {
    "CacheType": "redis",
    "RedisAddress": "redis.example.com:6379",
    "RedisPassword": "",
    "RedisCachePrefix": "",
    "RedisDB": -1,
    "DisableClientCache": false
}

AWS ElastiCache로 배포#

엔터프라이즈 규모 배포의 경우, AWS ElastiCache for Redis는 배포, 운영, 확장을 단순화하는 완전 관리형 Redis 서비스를 제공합니다.

Mattermost를 AWS ElastiCache와 함께 배포할 때:

  1. Redis OSS 버전 7.1 이상을 선택하여 Redis용 ElastiCache 인스턴스를 생성하세요.
  2. 부하 테스트 결과에 따르면, 100,000명 이상의 사용자를 지원하는 배포의 경우 cache.m7g.2xlarge 인스턴스로 시작하는 것을 권장합니다.
  3. ElastiCache 엔드포인트에 연결하도록 Mattermost 서버를 구성하세요.
  4. Redis는 단일 스레드이고 성능 병목이 일반적으로 메모리 제약보다 CPU 제약이므로 CPU 사용률을 면밀히 모니터링하세요.

성능 고려사항#

Mattermost와 함께 Redis를 사용할 때 다음 성능 고려사항을 참고하세요:

  • 현재 부하 테스트에 따르면 Redis의 메모리 사용량은 상대적으로 낮으며, Redis가 단일 스레드이므로 CPU가 주요 병목이 됩니다.
  • Redis 배포를 계획할 때 확장 결정을 위한 주요 지표로 CPU 사용률을 사용하세요.

구현 세부사항#

Mattermost는 보다 인기 있는 go-redis 대신 rueidis 라이브러리를 사용합니다. 주된 이유는 rueidis가 다음과 같은 더 많은 성능 최적화를 기본적으로 제공하기 때문입니다:

  • 동시 쿼리의 자동 파이프라이닝
  • 클라이언트 측 캐싱
  • MaxFlushDelay와 같은 추가 성능 튜닝 옵션
주요 구현 파일은 다음과 같습니다:
  • platform/services/cache/provider.go - 라이브러리 초기화 코드 포함
  • platform/services/cache/redis.go - 캐시 인터페이스 구현 포함

자주 묻는 질문(FAQ)#

Redis를 사용해야 하나요?#

Redis는 소규모 Mattermost 배포에는 필수가 아니지만, 대규모 설치에는 강력히 권장됩니다.

  • 설치 규모가 100K 사용자 이상인 경우 Redis를 강력히 권장합니다. Redis는 데이터베이스 부하를 줄이고 일반적인 작업을 최적화하여 성능을 크게 향상시킵니다.
  • 설치 규모가 100K 사용자 미만인 경우 Redis는 권장되지 않습니다.
발생하는 캐시 무효화 비율을 나타내는 sum(rate(mattermost_cache_mem_invalidation_total[5m])) 지표를 모니터링하는 것이 좋습니다. 단일 캐시 무효화는 HA 클러스터의 모든 노드에 메시지를 전송하여 모든 노드에서 데이터베이스 호출이 발생합니다. 따라서 이 지표는 클러스터의 노드 수와 함께 Redis를 사용할 적절한 시기를 결정하는 데 활용해야 합니다.

예를 들어, 클러스터에 10개 이상의 노드가 있고 무효화 비율이 10을 초과하는 경우 Redis 추가를 고려해야 합니다.

Redis를 Mattermost 서버와 같은 머신에 설치해야 하나요?#

프로덕션 배포의 경우, Redis를 Mattermost 서버와 별도의 머신에서 실행하는 것을 권장합니다. 이 분리를 통해 더 나은 리소스 할당과 시스템 안정성 향상이 가능합니다.

어떤 Redis 지표를 모니터링해야 하나요?#

Mattermost와 함께 Redis를 실행할 때 다음 지표를 모니터링하세요:

  • CPU 사용률(주요 병목)
  • 메모리 사용량
  • 연결된 클라이언트
  • 캐시 히트율
  • 작업 지연 시간
  • cache_nameoperation 레이블이 있는 Mattermost의 mattermost_db_cache_time Grafana 지표. 이를 통해 Redis 성능을 추가로 모니터링할 수 있습니다.

Redis

원문 보기
요약

Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. Mattermost와 함께 Redis를 배포하는 과정은 Redis 서버 설정 과 Mattermost에서 Redis 구성 의 2단계로 구성됩니다.

Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. Mattermost는 규모 확장 시 성능을 향상시키기 위한 외부 캐시로 Redis를 사용합니다. 올바르게 구성하면 Redis는 효율적인 캐싱을 통해 향상된 성능을 제공하여 100,000명 이상의 사용자를 보유한 Mattermost 설치를 지원하는 데 도움이 됩니다.

배포 가이드#

Mattermost와 함께 Redis를 배포하는 과정은 Redis 서버 설정Mattermost에서 Redis 구성 의 2단계로 구성됩니다.

Redis 서버 설정#

  1. Redis 7.x 의 최신 릴리즈를 다운로드하여 설치하세요. 운영 체제별 설치 세부사항은 Redis 문서를 참조하세요.
  2. 환경에 맞게 Redis를 적절히 구성하세요. Redis가 보안이 유지되고 신뢰할 수 있는 시스템에서만 접근 가능한지 확인하세요.
  3. 고가용성 배포의 경우, 향상된 안정성과 성능을 위해 Redis를 클러스터 구성으로 설정하는 것을 고려하세요.

Mattermost에서 Redis 구성#

다음 단계를 따라 Redis 서버를 사용하도록 Mattermost를 구성하세요:

  1. 시스템 콘솔 > 환경 > 캐시 로 이동하세요.
  2. 캐시 유형redis 로 설정하여 Redis 관련 설정을 활성화하세요.
  3. Redis 서버 연결 세부사항을 설정하세요:
  4. a. 앞서 설정한 Redis 서버의 Redis 주소 를 입력하세요(예: redis.example.com:6379).

    b. (선택사항) Redis 서버에 인증이 필요한 경우 Redis 비밀번호 를 입력하세요. c. (선택사항) 사용할 Redis 데이터베이스를 지정하려면 Redis 데이터베이스 를 입력하세요(기본값은 -1이며, Redis의 기본 데이터베이스를 사용합니다).
  5. 구성을 저장하고 Mattermost 서버를 재시작하세요.

또는 config.json 파일에서 Redis를 구성할 수 있습니다:

"CacheSettings": {
    "CacheType": "redis",
    "RedisAddress": "redis.example.com:6379",
    "RedisPassword": "",
    "RedisCachePrefix": "",
    "RedisDB": -1,
    "DisableClientCache": false
}

AWS ElastiCache로 배포#

엔터프라이즈 규모 배포의 경우, AWS ElastiCache for Redis는 배포, 운영, 확장을 단순화하는 완전 관리형 Redis 서비스를 제공합니다.

Mattermost를 AWS ElastiCache와 함께 배포할 때:

  1. Redis OSS 버전 7.1 이상을 선택하여 Redis용 ElastiCache 인스턴스를 생성하세요.
  2. 부하 테스트 결과에 따르면, 100,000명 이상의 사용자를 지원하는 배포의 경우 cache.m7g.2xlarge 인스턴스로 시작하는 것을 권장합니다.
  3. ElastiCache 엔드포인트에 연결하도록 Mattermost 서버를 구성하세요.
  4. Redis는 단일 스레드이고 성능 병목이 일반적으로 메모리 제약보다 CPU 제약이므로 CPU 사용률을 면밀히 모니터링하세요.

성능 고려사항#

Mattermost와 함께 Redis를 사용할 때 다음 성능 고려사항을 참고하세요:

  • 현재 부하 테스트에 따르면 Redis의 메모리 사용량은 상대적으로 낮으며, Redis가 단일 스레드이므로 CPU가 주요 병목이 됩니다.
  • Redis 배포를 계획할 때 확장 결정을 위한 주요 지표로 CPU 사용률을 사용하세요.

구현 세부사항#

Mattermost는 보다 인기 있는 go-redis 대신 rueidis 라이브러리를 사용합니다. 주된 이유는 rueidis가 다음과 같은 더 많은 성능 최적화를 기본적으로 제공하기 때문입니다:

  • 동시 쿼리의 자동 파이프라이닝
  • 클라이언트 측 캐싱
  • MaxFlushDelay와 같은 추가 성능 튜닝 옵션
주요 구현 파일은 다음과 같습니다:
  • platform/services/cache/provider.go - 라이브러리 초기화 코드 포함
  • platform/services/cache/redis.go - 캐시 인터페이스 구현 포함

자주 묻는 질문(FAQ)#

Redis를 사용해야 하나요?#

Redis는 소규모 Mattermost 배포에는 필수가 아니지만, 대규모 설치에는 강력히 권장됩니다.

  • 설치 규모가 100K 사용자 이상인 경우 Redis를 강력히 권장합니다. Redis는 데이터베이스 부하를 줄이고 일반적인 작업을 최적화하여 성능을 크게 향상시킵니다.
  • 설치 규모가 100K 사용자 미만인 경우 Redis는 권장되지 않습니다.
발생하는 캐시 무효화 비율을 나타내는 sum(rate(mattermost_cache_mem_invalidation_total[5m])) 지표를 모니터링하는 것이 좋습니다. 단일 캐시 무효화는 HA 클러스터의 모든 노드에 메시지를 전송하여 모든 노드에서 데이터베이스 호출이 발생합니다. 따라서 이 지표는 클러스터의 노드 수와 함께 Redis를 사용할 적절한 시기를 결정하는 데 활용해야 합니다.

예를 들어, 클러스터에 10개 이상의 노드가 있고 무효화 비율이 10을 초과하는 경우 Redis 추가를 고려해야 합니다.

Redis를 Mattermost 서버와 같은 머신에 설치해야 하나요?#

프로덕션 배포의 경우, Redis를 Mattermost 서버와 별도의 머신에서 실행하는 것을 권장합니다. 이 분리를 통해 더 나은 리소스 할당과 시스템 안정성 향상이 가능합니다.

어떤 Redis 지표를 모니터링해야 하나요?#

Mattermost와 함께 Redis를 실행할 때 다음 지표를 모니터링하세요:

  • CPU 사용률(주요 병목)
  • 메모리 사용량
  • 연결된 클라이언트
  • 캐시 히트율
  • 작업 지연 시간
  • cache_nameoperation 레이블이 있는 Mattermost의 mattermost_db_cache_time Grafana 지표. 이를 통해 Redis 성능을 추가로 모니터링할 수 있습니다.