LINE DEVELOPER DAY 2014
Redis cluster 운영
그래서 ?
Dashboard 및 운영도구 개발을 통한 운영 자동화
이런 일들을 합니다
서비스 가용성을 위한 Redis, HBase 쌍두마차 !
Why Redis ?
장점 : 일단 빠르다, NoSQL, 다양한 자료구조(HashSet, SortedSet) 지원한다
단점 : Single Thread (No lock But High performance), 메모리 기반 (Data loss 가능성), MySQL backup 한계점), 완전한 클러스터 솔루션 없음 (In-house 개발)
Redis cluster 운영
Shard 당 master-slave 구조 cluster-manager w/ zookeeper 운영했으나, master-slave 동시에 나가는 경우 발생하더라... 복구용이, 운영자동화 대안이 필수
그래서 ?
Dashboard 및 운영도구 개발을 통한 운영 자동화
MySQL backup 대안 필요로 Storage for Low latency, Big size data, 용도로 HBase 선택
Redis에 적합하지 않은 용도, 거의 대부분의 데이터가 HBase에 적재
Redis에 적합하지 않은 용도, 거의 대부분의 데이터가 HBase에 적재
써보니 Redis + hbase 조합 좋더라
Redis vs. HBase
Mutable or Immutable
Write-intensive or Read-intensive or
Temporary or Persistent : short life-cycle, recoverable
Architecture
Redis + HBase : storage APIs, background re-sync
중요한 데이터 읽고/쓰기
Write 3 times : redis + hbase#1 + hbase#2
Read short redis once
Read 2 hbase
Read 3 redis, hbase(s)
Read 2 hbase
Read 3 redis, hbase(s)
클러스터 부하가...
30g 이상 Redis Busy-save 시에 20분 이상 소요되며 Redis-master freezing.
그래서..
Multi-instance Cache Cluster
Multi-instance Cache Cluster
For read-intensive immutable data
: Cache cluster 생성 후 클러스터 크기 조정
: Cache cluster 생성 후 클러스터 크기 조정
부하가 높은 경우 Replica 상승
For Mutable data
For Mutable data
: Race-condition 등 다양한 문제로 Case by case 로 접근 중
Fail-over
: Active Redis, Backup HBase
Redis 장애 시에 HBase 처리로 로드밸런싱
결국, API 를 통한 서비스 아키텍처와 HBase의 충분한 응답속도 덕분임
Late timeout & ReadHA
: 장애확산은 순식간, 장애는 장애를 부르고, 매일 장애분석/복구의 반복
장애 발생 전에 알 수 없을까?
장애 발생 전에 알 수 없을까?
모니터링 도구 : Not watching, But anticipating
Anticipating : storage api call monitoring 후에 찜찜한 문제시 될 것 같은 request 를 cut 하고, hbase로 triggering - 연결 시도, 실행 시도 전에 Failover, Re-try 함께 시도
Anticipating : storage api call monitoring 후에 찜찜한 문제시 될 것 같은 request 를 cut 하고, hbase로 triggering - 연결 시도, 실행 시도 전에 Failover, Re-try 함께 시도
이제는
Hbase + Redis : 이제 HBase도 충분히 빠르다
Hbase + Redis : 이제 HBase도 충분히 빠르다
Write hbase first, redis later
Read redis first, hbase later
이런 일들을 합니다
수천대 Redis + HBase cluster
Storage libraries or APIs
OSS 디버깅 고치기
Cluster 확장, linux cpu affinity, logs
'컨퍼런스' 카테고리의 다른 글
LINE DEVDAY 2014 - Java Tuning in Production - 신기빈 (0) | 2014.11.27 |
---|---|
LINE DEVDAY 2014 - Big Data - 최철호 (0) | 2014.11.27 |
LINE DEVDAY 2014 - 글로벌 서비스를 위한 네트웍 세션처리와 얼랭 튜닝 - 김남일 (0) | 2014.11.27 |