Redis
Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. Mattermost와 함께 Redis를 배포하는 과정은 Redis 서버 설정 과 Mattermost에서 Redis 구성 의 2단계로 구성됩니다.
Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. Mattermost는 규모 확장 시 성능을 향상시키기 위한 외부 캐시로 Redis를 사용합니다. 올바르게 구성하면 Redis는 효율적인 캐싱을 통해 향상된 성능을 제공하여 100,000명 이상의 사용자를 보유한 Mattermost 설치를 지원하는 데 도움이 됩니다.
배포 가이드#
Mattermost와 함께 Redis를 배포하는 과정은 Redis 서버 설정 과 Mattermost에서 Redis 구성 의 2단계로 구성됩니다.
Redis 서버 설정#
- Redis 7.x 의 최신 릴리즈를 다운로드하여 설치하세요. 운영 체제별 설치 세부사항은 Redis 문서를 참조하세요.
- 환경에 맞게 Redis를 적절히 구성하세요. Redis가 보안이 유지되고 신뢰할 수 있는 시스템에서만 접근 가능한지 확인하세요.
- 고가용성 배포의 경우, 향상된 안정성과 성능을 위해 Redis를 클러스터 구성으로 설정하는 것을 고려하세요.
Mattermost에서 Redis 구성#
다음 단계를 따라 Redis 서버를 사용하도록 Mattermost를 구성하세요:
- 시스템 콘솔 > 환경 > 캐시 로 이동하세요.
- 캐시 유형 을
redis로 설정하여 Redis 관련 설정을 활성화하세요. - Redis 서버 연결 세부사항을 설정하세요:
- 구성을 저장하고 Mattermost 서버를 재시작하세요.
a. 앞서 설정한 Redis 서버의 Redis 주소 를 입력하세요(예: redis.example.com:6379).
또는 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와 함께 배포할 때:
- Redis OSS 버전 7.1 이상을 선택하여 Redis용 ElastiCache 인스턴스를 생성하세요.
- 부하 테스트 결과에 따르면, 100,000명 이상의 사용자를 지원하는 배포의 경우
cache.m7g.2xlarge인스턴스로 시작하는 것을 권장합니다. - ElastiCache 엔드포인트에 연결하도록 Mattermost 서버를 구성하세요.
- 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_name및operation레이블이 있는 Mattermost의mattermost_db_cache_timeGrafana 지표. 이를 통해 Redis 성능을 추가로 모니터링할 수 있습니다.
