Redis#

plans-img Enterprise 플랜 에서 사용 가능

deployment-img Cloudself-hosted 배포

Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. Mattermost는 대규모에서 성능을 향상시키기 위해 Redis를 외부 캐시로 사용합니다. 적절히 구성된 경우, Redis는 효율적인 캐싱을 통해 향상된 성능을 제공하여 100,000명 이상의 사용자가 있는 Mattermost 설치를 지원할 수 있습니다.

배포 가이드#

Mattermost와 함께 Redis를 배포하는 것은 다음 2단계를 포함합니다: Redis 서버 설정Mattermost에서 Redis 구성.

Redis 서버 설정#

  1. Redis 7.x 의 최신 릴리스를 다운로드하고 설치하세요. 운영 체제별 설치 세부 정보는 Redis 문서를 참조하세요.

  2. 환경에 맞게 Redis를 적절히 구성하세요. Redis가 보안이 유지되고 신뢰할 수 있는 시스템에서만 접근 가능하도록 하세요.

  3. 고가용성 배포를 위해 향상된 안정성과 성능을 위해 클러스터 구성으로 Redis를 설정하는 것을 고려하세요.

Mattermost에서 Redis 구성#

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

  1. 시스템 콘솔 > 환경 > 캐시 로 이동하세요.

  2. Redis 관련 설정을 활성화하려면 캐시 유형redis 로 설정하세요.

  3. Redis 서버 연결 세부 정보를 설정하세요:

  1. 이전에 설정한 Redis 서버의 Redis 주소 를 입력하세요(예: redis.example.com:6379).

  2. (선택 사항) Redis 서버에 인증이 필요한 경우 Redis 비밀번호 를 입력하세요.

  3. (선택 사항) 사용할 Redis 데이터베이스를 지정하려면 Redis 데이터베이스 를 입력하세요(기본값은 -1로, Redis의 기본 데이터베이스를 사용함).

  1. 구성을 저장하고 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 서비스를 제공합니다.

AWS ElastiCache로 Mattermost를 배포할 때:

  1. Redis OSS 버전 7.1 이상을 선택하여 Redis용 ElastiCache 인스턴스를 생성하세요.

  2. 부하 테스트 결과를 기반으로, 100,000명 이상의 사용자를 지원하는 배포에는 cache.m7g.2xlarge 인스턴스로 시작하는 것을 권장합니다.

  3. Mattermost 서버가 ElastiCache 엔드포인트에 연결되도록 구성하세요.

  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 배포에는 필요하지 않지만, 대규모 설치에는 강력히 권장됩니다. - 설치에 10만 명 이상의 사용자가 있는 경우 Redis를 강력히 권장합니다. Redis는 데이터베이스 부하를 줄이고 일반적인 작업을 최적화하여 성능을 크게 향상시킵니다. - 설치에 10만 명 미만의 사용자가 있는 경우 Redis는 권장되지 않습니다.

캐시 무효화가 발생하는 비율을 나타내는 sum(rate(mattermost_cache_mem_invalidation_total[5m])) 메트릭을 주시하는 것이 좋습니다. 단일 캐시 무효화는 HA 클러스터의 모든 노드에 메시지를 보내 모든 노드에서 데이터베이스 호출이 발생하게 합니다. 따라서 이 메트릭과 클러스터의 노드 수를 함께 사용하여 Redis를 사용하기에 적절한 시점을 결정해야 합니다.

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

Mattermost 서버와 동일한 시스템에 Redis를 설치해야 하나요?#

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

어떤 Redis 메트릭을 모니터링해야 하나요?#

Mattermost와 함께 Redis를 실행할 때 다음 메트릭을 모니터링하세요:

  • CPU 사용률(주요 병목 현상)

  • 메모리 사용량

  • 연결된 클라이언트

  • 캐시 적중률

  • 작업 지연 시간

  • Redis의 성능을 추가로 모니터링하는 데 사용할 수 있는 cache_nameoperation 레이블이 있는 Mattermost의 mattermost_db_cache_time Grafana 메트릭