SlideShare a Scribd company logo
[2B5]nBase-ARC Redis Cluster
이규재 수석연구원 / NAVER LABS 
nBase-ARC: Redis Cluster
1. nBase-ARC 소개 2. 오픈 소스 제품과 비교 3. 발전 방향 
CONTENTS
1. nBase-ARC 소개
Scale-out 클러스터 
비용 효율성 
서비스 연속성 
확장/축소 
일반 컴퓨터를 이용해 시스템 구축 
작게 시작해서 크게 성공할 수 있어야 … 
운영 작업이 서비스에 영향을 주어선 안됨 
인터넷 스케일 서비스에 필요한 분산 저장 시스템
nBase-ARC는 
Autonomous 
Redis 
Cluster 
nBase- Labs에서 만드는 Scale-out 클러스터 시리즈 
운영자의 개입 없이 동작하는 (장애 탐지, 장애 처리) 
고속의 In-Memory 연산이 가능한 
Scale-out 클러스터
탄생 배경 (1/2) 
In-memory 기반의 고성능, 고가용 scale-out 클러스터 DB가 필요해짐 
•세션 저장소로 디스크 기반의 클러스터를 사용 
•많은 쓰기 부하를 일정한 응답 속도로 처리해야 하는 요구사항 
•비용 효율적으로 해결 해야 됨 
•Caching이 도움이 되질 않음
탄생 배경 (2/2) 
•Simple 
•Fast 
•Persistent 
•Available 
정부 과제: 페타바이트급 대용량 이기종 클러스터드 DBMS SW 개발 
복제 
Configuration Master
Required Features 
장애 처리 
•장애를 감지해 자동으로 fail-over 해야 한다 
Scale-out 
•장비를 투입해 rebalancing 할 수 있다 
API 
•기존 Redis 클라이언트를 그대로 사용 
분산 방식 
•여러 장비에 데이터를 나누어 처리해야 한다 
가용성 
•데이터 durability, 서비스 availability 
•장애, 운영 작업 등에 의해 서비스가 영향을 받지 않아야 한다 
서비스 연속성
분산 방식 
0 
1 
2 
8191 
PG 0 
PG 1 
PG N 
PGS 1 
PGS 2 
PGS 3 
PGS 4 
PGS 5 
CRC16(key) % 8192 
복제 그룹 
Partition Group 
Partition Number 
Key에 대한 hash 값을 기반으로 하는 분할 방식 채택
가용성 – Redis 복제 
•Redis 복제는 비 동기 복제로 master 장애 발생하면 데이터 유실 
•Slave에 읽기를 하면 이전 데이터를 읽을 수 있음 
•복제 동기화는 sync 방식과 (RDB + replication buffer), psync (일시적 단절 대비 버퍼 유지) 방식을 지원  설정이 어려움 
Client 
Master 
Slave 
request 
response 
request 
복제를 통해 서비스 및 데이터 가용성 확보. 하지만 Redis 복제는 문제
가용성 – 복제 
•Consensus 기반의 복제 방식 구현 (State Machine Replicator) 
Master가 명령어, commit 메시지로 구성된 복제 로그 생성 
•명령어 복제와 실행을 분리. 명령어의 가용성이 확보된 경우 실행 
•어떤 Redis에 읽기를 해도 consistent한 결과 (read offloading) 
Client 
Redis 
Redis 
request 
response 
Master SMR 
Slave SMR 
replicate 
commit 
commit 
LOG (MMAP) 
LOG (MMAP)
가용성 – 복제 (계속) 
•명령어의 가용성은 실행되기 전에 저장되는 로그의 개수로 보장됨 
예를 들어 2인 경우, 두 장비의 로그에 저장된 이후에 실행 
속도를 위해 로그 파일에 대한 연산은 OS buffer 까지 쓰고 리턴 
로그 파일은 1초 (또는 10M) 주기로 디스크로 sync 됨
가용성 – 복제 동기화 
•로그와 결합된 checkpoint (RDB)를 이용해 로컬 데이터를 복구함 
Checkpoint (RDB + log seq.) 
Log 
+ 
• 다른 복제 node로 부터 복구된 부분 이후의 log를 받아서 복제 동기화 가능 
Master 
Slave 
Redis 
Checkpoint 복구 
LOGSEQ 
LOGSEQ’
장애 처리 – Failure detection 
Failure Detection 
Fail over 
+ 
•Heartbeat module(HB)이 응용 레벨 (L7) ping 메시지 전송 
•다수의 HB 운영 
•대상 상태에 대한 결정은 Zookeeper 사용 
대상의 상태  z-node 
대상의 상태에 대한 의견  z-node 하위의 ephemeral z-node
장애 처리 – Fail over 
Failure Detection 
Fail over 
+ 
•Cluster controller에 의해 수행 
복수의 instance를 두며, 장애 시 leader election을 통해 새로운 cluster controller가 동작 
•감시 대상 z-node를 watch 
•상태 변경 발생시 (child event) 클러스터의 상태를 결정하고 fail- over 작업 진행
Scale-out 
•Migration에 의한 데이터 처리 부분 이동 
Dump 
Load 
Log catchup 
2PC
API 
•기존 Redis 클라이언트를 그대로 사용할 수 있어야 한다 
Gateway
서비스 연속성 
•장비 추가, 제거, scale-out, 소프트웨어 업그레이드 
복제 추가, 제거, migration으로 해결됨 
•Gateway 업그레이드, 추가 삭제? 
Gateway에 대한 L4 스위치 구성? 
Gateway lookup 서비스
nBase-ARC 구조 
HB 
HB 
HB 
Cluster Controller 
Leader 
Follower 
Follower 
Configuration Master 
Cluster 
Gateway 
Gateway 
복제 
Zookeeper Ensemble 
Redis 
Redis 
Zone
2. 오픈 소스 제품과 비교
Redis Cluster 
Redis 개발자가 만들고 있는 제품과의 차이점에 대해 설명 
ARC: nBase-ARC 
RC: Redis Cluster
정리 
RC 
ARC 
키 분산 
동일 
복제 
Asynchronous 
Consensus 
Node 복구 
RDB or AOF 
RDB + LOG 
클라이언트 연결 
REDIS 
Gateway 
Migration 
Key 단위 
Key 영역 단위 
Fault detection 
Node간의 gossip 
복수의 HB 
CAP 측면 
CP 
•RC: 고성능+, 장애/단절 발생 시 데이터 유실 
•ARC: 고성능, DB
클라이언트 연결 
R 
R 
R 
R 
R 
Gateway 
Gateway 
Gateway 
R 
R 
R 
R 
R 
Client 
Client 
Client 
Client 
RC 
ARC 
•Redis에 직접 연결 
•Smart client 
키 분산 정보 
Master/slave 여부 
•형상 변경 복잡 
•Gateway로 연결 
Hop이 하나 추가 
•Dummy client 
•형상 변경 쉬움
Partition 발생시 동작 
RC 
ARC 
•Majority 영역의 slave는 master로 promote 됨 
•NODE_TIMEOUT 기반으로 동작하기 때문에 특정 시간에 두 개의 master 존재 가능 
•복제 상의 commit이 일어나기 위한 quorum 존재. Master가 단절 된 경우 동작 중지 
•Configuration master에 의해 fail-over 됨 
M 
S 
M 
S 
Client 
Client
Migration 
RC 
ARC 
MIGRATING SLOT 
IMPORTING SLOT 
SOURCE SLOT 
TARGET SLOT 
Dump Load Log Catch-up 2PC 
WHILE true IF GETKEYSINSLOT MIGRATE key ELSE break 
•Key 단위로 수행 
•느림 
•Slot 영역 단위로 수행 
•빠름
CAP Perspective 
A 
•Partition이 발생하지 않도록 소프트웨어를 만들 수 없음 
•CP 
분할 발생시 consistency 유지 
•AP 
분할 발생시 availability 유지 
이후 merge 해야 함 
C 
P 
RC 
ARC 
•Not AP Major partition만 살아 남음 
•Not CP Write 에 대한 consensus가 없음 
•CP
성능 
•ARC는 latency가 더 크다 
Gateway에 의한 hop 
복제 layer 
•ARC의 경우 CPU를 더 사용한다 
Gateway 
Replicator 
•성능상의 병목은 네트워크에서 생김 
네트워크로 전송되는 데이터의 양 
네트워크로 전송되는 packet의 개수 (interrupt 처리 능력) 
RPS (Receive Packet Steering)/RFS (Receive Flow Steering)등의 네트워크 최적화 설정이 필요함
성능 - ARC Gateway Affinity 
PG 1 Master PGS 
PG 2 Slave PGS 
PG 3 Slave PGS 
PG 1 Slave PGS 
PG 2 Master PGS 
PG 3 Master PGS 
Gateway 
Gateway 
PG 4 Master PGS 
PG 5 Slave PGS 
PG 6 Slave PGS 
PG 4 Slave PGS 
PG 5 Master PGS 
PG 6 Master PGS 
Gateway 
Gateway 
Client (affinity) 
Client (no affinity) 
클러스터의 key mapping 정보를 힌트로 해서 최적의 gateway를 선택하도록 함 (개발 버전) 
네트워크 사용량을 최적화
성능 테스트 환경 
Gateway 
Gateway 
Gateway 
Gateway 
Gateway 
Gateway 
M S 
S M 
M S 
S M 
M S 
S M 
M S 
S M 
M S 
S M 
M S 
S M 
YCSB 
YCSB 
YCSB 
YCSB 
YCSB 
YCSB 
•Load generator 6장비, 클러스터 6대 
•24개의 Redis instance (master 12, slave 12) 
•YCSB 
Scan 명령 제외 (단일 키 sorted set 사용) 
Driver는 Jedis 기반 (nBase-ARC java client, Jedis Client)
시험 결과 - 1K 100% Write 
0 
50000 
100000 
150000 
200000 
250000 
0 
200 
400 
600 
OPS (RC) 
OPS(ARC) 
0 
0.5 
1 
1.5 
2 
2.5 
0 
200 
400 
600 
Latency (RC) 
(ms) 
Latency(ARC)(m 
s) 
•Client 개수를 많이 늘릴 수 없는 문제가 있었음 (RC용 Jedis) 
•CPU 사용량은 RC (10%), ARC (20%) 
•RC는 클라이언트 개수가 늘어나면 성능이 저하 된다 
각 client가 Redis에 직접 연결하기 때문에 connection 개수가 증가 
•ARC의 성능 최대치가 RC의 성능 최대치에 미치지 못하는 이유 
복제 layer에 의해서 작은 크기의 packet 전송이 추가됨 
85 %
시험 결과 - 1K 100% Read 
•CPU 사용량은 RC (10%), ARC (20%) 
•ARC의 경우 Consistent read 를 위한 복제 상의 overhead 
Operation 자체는 복제로 전송되지 않지만 순서를 맞추기 위한 reference data는 전송 
•Read offloading 
0 
100000 
200000 
300000 
400000 
500000 
0 
200 
400 
600 
OPS (RC) 
OPS(ARC) 
0 
0.2 
0.4 
0.6 
0.8 
1 
1.2 
0 
200 
400 
600 
Latency (RC) 
(ms) 
Latency(ARC)( 
ms) 
93 %
시험 – 결론 
•RC: 고성능+, 장애/단절 발생 시 데이터 유실 
•ARC: 고성능, DB
3. 발전 방향 및 오픈 소스
More Autonomous Cluster 
•고속으로 동작하는 시스템이기 때문에 사람이 운영에 개입해야 하는 상황이면 이미 대형 장애 상황 
•현재는 장애 감지 및 처리만 자동화됨. 더욱 필요 
•장비 관리자 (ARC0) 
Local repository management 
Process management 
Heartbeat aggregation
Resource Efficiency 
•장비의 효율적인 사용을 위해 한 장비에 여러 process 구동 
•서로 다른 클러스터의 프로세스가 돌 수 있음 
•Process (클러스터) 사이의 간섭이 없도록 시스템 자원 관리 
네트워크, 디스크, CPU, 메모리 
•장비 관리자 (ARC0) 
System resource management 
System resource monitoring
Global Management 
•Global 환경에 여러 zone 이 구축됨에 따라 체계적이고 자동화된 운영 방식이 필요하다 
HUB 
-Zone registry 
-Resource (e.g. binary) repository 
-User account 
-Global management 
ZONE
오픈 소스 
2015 
준비되는 대로 순차적으로 오픈 할 예정
THANK YOU

More Related Content

What's hot (20)

PDF
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
OpenStack Korea Community
 
PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
PDF
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
NAVER D2
 
PDF
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
Hyunmin Lee
 
PDF
[112]clova platform 인공지능을 엮는 기술
NAVER D2
 
PDF
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
SANG WON PARK
 
PDF
서버인프라 구축 입문 basis of composing server and infra
Hwanseok Park
 
PDF
Redis From 2.8 to 4.x(unstable)
DaeMyung Kang
 
PDF
[234]멀티테넌트 하둡 클러스터 운영 경험기
NAVER D2
 
PDF
Optane DC Persistent Memory(DCPMM) 성능 테스트
SANG WON PARK
 
PDF
Techplanetreview redis
DaeMyung Kang
 
PDF
[252] 증분 처리 플랫폼 cana 개발기
NAVER D2
 
PDF
Redis edu 3
DaeMyung Kang
 
PDF
Apache kafka performance(latency)_benchmark_v0.3
SANG WON PARK
 
PPTX
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
NAVER D2
 
PDF
Understanding of Apache kafka metrics for monitoring
SANG WON PARK
 
PDF
[142]편광을 활용한6 dof 전현기
NAVER D2
 
PDF
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
Ji-Woong Choi
 
PDF
Kafka slideshare
wonyong hwang
 
PDF
[233]멀티테넌트하둡클러스터 남경완
NAVER D2
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
OpenStack Korea Community
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
NAVER D2
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
Hyunmin Lee
 
[112]clova platform 인공지능을 엮는 기술
NAVER D2
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
SANG WON PARK
 
서버인프라 구축 입문 basis of composing server and infra
Hwanseok Park
 
Redis From 2.8 to 4.x(unstable)
DaeMyung Kang
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
NAVER D2
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
SANG WON PARK
 
Techplanetreview redis
DaeMyung Kang
 
[252] 증분 처리 플랫폼 cana 개발기
NAVER D2
 
Redis edu 3
DaeMyung Kang
 
Apache kafka performance(latency)_benchmark_v0.3
SANG WON PARK
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
NAVER D2
 
Understanding of Apache kafka metrics for monitoring
SANG WON PARK
 
[142]편광을 활용한6 dof 전현기
NAVER D2
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
Ji-Woong Choi
 
Kafka slideshare
wonyong hwang
 
[233]멀티테넌트하둡클러스터 남경완
NAVER D2
 

Viewers also liked (20)

PDF
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
NoSQLmatters
 
PDF
美团点评沙龙 飞行中换引擎--美团配送业务系统的架构演进之路
美团点评技术团队
 
PPT
Redis 常见使用模式分析
vincent253
 
PDF
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术团队
 
PDF
Redis 101
Geoff Hoffman
 
PDF
Highly scalable caching service on cloud - Redis
Krishna-Kumar
 
PPTX
Redis/Lessons learned
Tit Petric
 
PDF
深入了解Redis
iammutex
 
PDF
Using Redis at Facebook
Redis Labs
 
PDF
람다아키텍처
HyeonSeok Choi
 
PDF
Redis edu 1
DaeMyung Kang
 
PDF
Managing user's data with Spring Session
David Gómez García
 
PDF
Redis cluster
iammutex
 
PDF
[2B3]ARCUS차별기능,사용이슈,그리고카카오적용사례
NAVER D2
 
PDF
Managing Redis with Kubernetes - Kelsey Hightower, Google
Redis Labs
 
PDF
Scaling Redis Cluster Deployments for Genome Analysis (featuring LSU) - Terry...
Redis Labs
 
PPTX
이것이 레디스다.
Kris Jeong
 
PDF
Redis everywhere - PHP London
Ricard Clau
 
PDF
네이버 오픈세미나 백엔드_아키텍쳐
NAVER D2
 
PDF
分布式Key Value Store漫谈
Tim Y
 
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
NoSQLmatters
 
美团点评沙龙 飞行中换引擎--美团配送业务系统的架构演进之路
美团点评技术团队
 
Redis 常见使用模式分析
vincent253
 
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术团队
 
Redis 101
Geoff Hoffman
 
Highly scalable caching service on cloud - Redis
Krishna-Kumar
 
Redis/Lessons learned
Tit Petric
 
深入了解Redis
iammutex
 
Using Redis at Facebook
Redis Labs
 
람다아키텍처
HyeonSeok Choi
 
Redis edu 1
DaeMyung Kang
 
Managing user's data with Spring Session
David Gómez García
 
Redis cluster
iammutex
 
[2B3]ARCUS차별기능,사용이슈,그리고카카오적용사례
NAVER D2
 
Managing Redis with Kubernetes - Kelsey Hightower, Google
Redis Labs
 
Scaling Redis Cluster Deployments for Genome Analysis (featuring LSU) - Terry...
Redis Labs
 
이것이 레디스다.
Kris Jeong
 
Redis everywhere - PHP London
Ricard Clau
 
네이버 오픈세미나 백엔드_아키텍쳐
NAVER D2
 
分布式Key Value Store漫谈
Tim Y
 
Ad

Similar to [2B5]nBase-ARC Redis Cluster (20)

PPTX
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Kyunghun Jeon
 
PDF
ARCUS offline meeting 2015. 05. 20 1회
JaM2in
 
PDF
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
PDF
Redis Active 전환 조사를 위한 자료 조사 및 상용화 방안 확인
ssuser02861b
 
PDF
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
흥배 최
 
PDF
Redis From 2.8 to 4.x
DaeMyung Kang
 
PDF
[오픈소스컨설팅]파일럿진행예제 on AWS
Ji-Woong Choi
 
PDF
Tdc2013 선배들에게 배우는 server scalability
흥배 최
 
PPTX
Scalable web architecture and distributed systems
eva
 
PPTX
Scalable web architecture and distributed systems
현종 김
 
PDF
안정적인 서비스 운영 2013.08
Changyol BAEK
 
PPTX
OpenStack
ULUG
 
PDF
Kubernetes
Kyung Koo Yoon
 
PDF
1st-BE-sideproject-GDGonCampus_KyungHee_Univ.pdf
dpfls5645
 
PDF
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
 
PDF
안정적인 서비스 운영 2014.03
Changyol BAEK
 
PDF
20140806 AWS Meister BlackBelt - Amazon Redshift (Korean)
Amazon Web Services Korea
 
PDF
Internet Scale Service Arichitecture
DaeMyung Kang
 
PDF
오픈소스컨설팅 클러스터제안 V1.0
sprdd
 
PDF
Redis
DaeMyung Kang
 
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Kyunghun Jeon
 
ARCUS offline meeting 2015. 05. 20 1회
JaM2in
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
Redis Active 전환 조사를 위한 자료 조사 및 상용화 방안 확인
ssuser02861b
 
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
흥배 최
 
Redis From 2.8 to 4.x
DaeMyung Kang
 
[오픈소스컨설팅]파일럿진행예제 on AWS
Ji-Woong Choi
 
Tdc2013 선배들에게 배우는 server scalability
흥배 최
 
Scalable web architecture and distributed systems
eva
 
Scalable web architecture and distributed systems
현종 김
 
안정적인 서비스 운영 2013.08
Changyol BAEK
 
OpenStack
ULUG
 
Kubernetes
Kyung Koo Yoon
 
1st-BE-sideproject-GDGonCampus_KyungHee_Univ.pdf
dpfls5645
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
 
안정적인 서비스 운영 2014.03
Changyol BAEK
 
20140806 AWS Meister BlackBelt - Amazon Redshift (Korean)
Amazon Web Services Korea
 
Internet Scale Service Arichitecture
DaeMyung Kang
 
오픈소스컨설팅 클러스터제안 V1.0
sprdd
 
Ad

More from NAVER D2 (20)

PDF
[211] 인공지능이 인공지능 챗봇을 만든다
NAVER D2
 
PDF
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
NAVER D2
 
PDF
[215] Druid로 쉽고 빠르게 데이터 분석하기
NAVER D2
 
PDF
[245]Papago Internals: 모델분석과 응용기술 개발
NAVER D2
 
PDF
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
NAVER D2
 
PDF
[235]Wikipedia-scale Q&A
NAVER D2
 
PDF
[244]로봇이 현실 세계에 대해 학습하도록 만들기
NAVER D2
 
PDF
[243] Deep Learning to help student’s Deep Learning
NAVER D2
 
PDF
[234]Fast & Accurate Data Annotation Pipeline for AI applications
NAVER D2
 
PDF
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
NAVER D2
 
PDF
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
NAVER D2
 
PDF
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
NAVER D2
 
PDF
[224]네이버 검색과 개인화
NAVER D2
 
PDF
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
NAVER D2
 
PDF
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
NAVER D2
 
PDF
[213] Fashion Visual Search
NAVER D2
 
PDF
[232] TensorRT를 활용한 딥러닝 Inference 최적화
NAVER D2
 
PDF
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
NAVER D2
 
PDF
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
NAVER D2
 
PDF
[223]기계독해 QA: 검색인가, NLP인가?
NAVER D2
 
[211] 인공지능이 인공지능 챗봇을 만든다
NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
NAVER D2
 
[235]Wikipedia-scale Q&A
NAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
NAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
NAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
NAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
NAVER D2
 
[224]네이버 검색과 개인화
NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
NAVER D2
 
[213] Fashion Visual Search
NAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
NAVER D2
 

[2B5]nBase-ARC Redis Cluster

  • 2. 이규재 수석연구원 / NAVER LABS nBase-ARC: Redis Cluster
  • 3. 1. nBase-ARC 소개 2. 오픈 소스 제품과 비교 3. 발전 방향 CONTENTS
  • 5. Scale-out 클러스터 비용 효율성 서비스 연속성 확장/축소 일반 컴퓨터를 이용해 시스템 구축 작게 시작해서 크게 성공할 수 있어야 … 운영 작업이 서비스에 영향을 주어선 안됨 인터넷 스케일 서비스에 필요한 분산 저장 시스템
  • 6. nBase-ARC는 Autonomous Redis Cluster nBase- Labs에서 만드는 Scale-out 클러스터 시리즈 운영자의 개입 없이 동작하는 (장애 탐지, 장애 처리) 고속의 In-Memory 연산이 가능한 Scale-out 클러스터
  • 7. 탄생 배경 (1/2) In-memory 기반의 고성능, 고가용 scale-out 클러스터 DB가 필요해짐 •세션 저장소로 디스크 기반의 클러스터를 사용 •많은 쓰기 부하를 일정한 응답 속도로 처리해야 하는 요구사항 •비용 효율적으로 해결 해야 됨 •Caching이 도움이 되질 않음
  • 8. 탄생 배경 (2/2) •Simple •Fast •Persistent •Available 정부 과제: 페타바이트급 대용량 이기종 클러스터드 DBMS SW 개발 복제 Configuration Master
  • 9. Required Features 장애 처리 •장애를 감지해 자동으로 fail-over 해야 한다 Scale-out •장비를 투입해 rebalancing 할 수 있다 API •기존 Redis 클라이언트를 그대로 사용 분산 방식 •여러 장비에 데이터를 나누어 처리해야 한다 가용성 •데이터 durability, 서비스 availability •장애, 운영 작업 등에 의해 서비스가 영향을 받지 않아야 한다 서비스 연속성
  • 10. 분산 방식 0 1 2 8191 PG 0 PG 1 PG N PGS 1 PGS 2 PGS 3 PGS 4 PGS 5 CRC16(key) % 8192 복제 그룹 Partition Group Partition Number Key에 대한 hash 값을 기반으로 하는 분할 방식 채택
  • 11. 가용성 – Redis 복제 •Redis 복제는 비 동기 복제로 master 장애 발생하면 데이터 유실 •Slave에 읽기를 하면 이전 데이터를 읽을 수 있음 •복제 동기화는 sync 방식과 (RDB + replication buffer), psync (일시적 단절 대비 버퍼 유지) 방식을 지원  설정이 어려움 Client Master Slave request response request 복제를 통해 서비스 및 데이터 가용성 확보. 하지만 Redis 복제는 문제
  • 12. 가용성 – 복제 •Consensus 기반의 복제 방식 구현 (State Machine Replicator) Master가 명령어, commit 메시지로 구성된 복제 로그 생성 •명령어 복제와 실행을 분리. 명령어의 가용성이 확보된 경우 실행 •어떤 Redis에 읽기를 해도 consistent한 결과 (read offloading) Client Redis Redis request response Master SMR Slave SMR replicate commit commit LOG (MMAP) LOG (MMAP)
  • 13. 가용성 – 복제 (계속) •명령어의 가용성은 실행되기 전에 저장되는 로그의 개수로 보장됨 예를 들어 2인 경우, 두 장비의 로그에 저장된 이후에 실행 속도를 위해 로그 파일에 대한 연산은 OS buffer 까지 쓰고 리턴 로그 파일은 1초 (또는 10M) 주기로 디스크로 sync 됨
  • 14. 가용성 – 복제 동기화 •로그와 결합된 checkpoint (RDB)를 이용해 로컬 데이터를 복구함 Checkpoint (RDB + log seq.) Log + • 다른 복제 node로 부터 복구된 부분 이후의 log를 받아서 복제 동기화 가능 Master Slave Redis Checkpoint 복구 LOGSEQ LOGSEQ’
  • 15. 장애 처리 – Failure detection Failure Detection Fail over + •Heartbeat module(HB)이 응용 레벨 (L7) ping 메시지 전송 •다수의 HB 운영 •대상 상태에 대한 결정은 Zookeeper 사용 대상의 상태  z-node 대상의 상태에 대한 의견  z-node 하위의 ephemeral z-node
  • 16. 장애 처리 – Fail over Failure Detection Fail over + •Cluster controller에 의해 수행 복수의 instance를 두며, 장애 시 leader election을 통해 새로운 cluster controller가 동작 •감시 대상 z-node를 watch •상태 변경 발생시 (child event) 클러스터의 상태를 결정하고 fail- over 작업 진행
  • 17. Scale-out •Migration에 의한 데이터 처리 부분 이동 Dump Load Log catchup 2PC
  • 18. API •기존 Redis 클라이언트를 그대로 사용할 수 있어야 한다 Gateway
  • 19. 서비스 연속성 •장비 추가, 제거, scale-out, 소프트웨어 업그레이드 복제 추가, 제거, migration으로 해결됨 •Gateway 업그레이드, 추가 삭제? Gateway에 대한 L4 스위치 구성? Gateway lookup 서비스
  • 20. nBase-ARC 구조 HB HB HB Cluster Controller Leader Follower Follower Configuration Master Cluster Gateway Gateway 복제 Zookeeper Ensemble Redis Redis Zone
  • 21. 2. 오픈 소스 제품과 비교
  • 22. Redis Cluster Redis 개발자가 만들고 있는 제품과의 차이점에 대해 설명 ARC: nBase-ARC RC: Redis Cluster
  • 23. 정리 RC ARC 키 분산 동일 복제 Asynchronous Consensus Node 복구 RDB or AOF RDB + LOG 클라이언트 연결 REDIS Gateway Migration Key 단위 Key 영역 단위 Fault detection Node간의 gossip 복수의 HB CAP 측면 CP •RC: 고성능+, 장애/단절 발생 시 데이터 유실 •ARC: 고성능, DB
  • 24. 클라이언트 연결 R R R R R Gateway Gateway Gateway R R R R R Client Client Client Client RC ARC •Redis에 직접 연결 •Smart client 키 분산 정보 Master/slave 여부 •형상 변경 복잡 •Gateway로 연결 Hop이 하나 추가 •Dummy client •형상 변경 쉬움
  • 25. Partition 발생시 동작 RC ARC •Majority 영역의 slave는 master로 promote 됨 •NODE_TIMEOUT 기반으로 동작하기 때문에 특정 시간에 두 개의 master 존재 가능 •복제 상의 commit이 일어나기 위한 quorum 존재. Master가 단절 된 경우 동작 중지 •Configuration master에 의해 fail-over 됨 M S M S Client Client
  • 26. Migration RC ARC MIGRATING SLOT IMPORTING SLOT SOURCE SLOT TARGET SLOT Dump Load Log Catch-up 2PC WHILE true IF GETKEYSINSLOT MIGRATE key ELSE break •Key 단위로 수행 •느림 •Slot 영역 단위로 수행 •빠름
  • 27. CAP Perspective A •Partition이 발생하지 않도록 소프트웨어를 만들 수 없음 •CP 분할 발생시 consistency 유지 •AP 분할 발생시 availability 유지 이후 merge 해야 함 C P RC ARC •Not AP Major partition만 살아 남음 •Not CP Write 에 대한 consensus가 없음 •CP
  • 28. 성능 •ARC는 latency가 더 크다 Gateway에 의한 hop 복제 layer •ARC의 경우 CPU를 더 사용한다 Gateway Replicator •성능상의 병목은 네트워크에서 생김 네트워크로 전송되는 데이터의 양 네트워크로 전송되는 packet의 개수 (interrupt 처리 능력) RPS (Receive Packet Steering)/RFS (Receive Flow Steering)등의 네트워크 최적화 설정이 필요함
  • 29. 성능 - ARC Gateway Affinity PG 1 Master PGS PG 2 Slave PGS PG 3 Slave PGS PG 1 Slave PGS PG 2 Master PGS PG 3 Master PGS Gateway Gateway PG 4 Master PGS PG 5 Slave PGS PG 6 Slave PGS PG 4 Slave PGS PG 5 Master PGS PG 6 Master PGS Gateway Gateway Client (affinity) Client (no affinity) 클러스터의 key mapping 정보를 힌트로 해서 최적의 gateway를 선택하도록 함 (개발 버전) 네트워크 사용량을 최적화
  • 30. 성능 테스트 환경 Gateway Gateway Gateway Gateway Gateway Gateway M S S M M S S M M S S M M S S M M S S M M S S M YCSB YCSB YCSB YCSB YCSB YCSB •Load generator 6장비, 클러스터 6대 •24개의 Redis instance (master 12, slave 12) •YCSB Scan 명령 제외 (단일 키 sorted set 사용) Driver는 Jedis 기반 (nBase-ARC java client, Jedis Client)
  • 31. 시험 결과 - 1K 100% Write 0 50000 100000 150000 200000 250000 0 200 400 600 OPS (RC) OPS(ARC) 0 0.5 1 1.5 2 2.5 0 200 400 600 Latency (RC) (ms) Latency(ARC)(m s) •Client 개수를 많이 늘릴 수 없는 문제가 있었음 (RC용 Jedis) •CPU 사용량은 RC (10%), ARC (20%) •RC는 클라이언트 개수가 늘어나면 성능이 저하 된다 각 client가 Redis에 직접 연결하기 때문에 connection 개수가 증가 •ARC의 성능 최대치가 RC의 성능 최대치에 미치지 못하는 이유 복제 layer에 의해서 작은 크기의 packet 전송이 추가됨 85 %
  • 32. 시험 결과 - 1K 100% Read •CPU 사용량은 RC (10%), ARC (20%) •ARC의 경우 Consistent read 를 위한 복제 상의 overhead Operation 자체는 복제로 전송되지 않지만 순서를 맞추기 위한 reference data는 전송 •Read offloading 0 100000 200000 300000 400000 500000 0 200 400 600 OPS (RC) OPS(ARC) 0 0.2 0.4 0.6 0.8 1 1.2 0 200 400 600 Latency (RC) (ms) Latency(ARC)( ms) 93 %
  • 33. 시험 – 결론 •RC: 고성능+, 장애/단절 발생 시 데이터 유실 •ARC: 고성능, DB
  • 34. 3. 발전 방향 및 오픈 소스
  • 35. More Autonomous Cluster •고속으로 동작하는 시스템이기 때문에 사람이 운영에 개입해야 하는 상황이면 이미 대형 장애 상황 •현재는 장애 감지 및 처리만 자동화됨. 더욱 필요 •장비 관리자 (ARC0) Local repository management Process management Heartbeat aggregation
  • 36. Resource Efficiency •장비의 효율적인 사용을 위해 한 장비에 여러 process 구동 •서로 다른 클러스터의 프로세스가 돌 수 있음 •Process (클러스터) 사이의 간섭이 없도록 시스템 자원 관리 네트워크, 디스크, CPU, 메모리 •장비 관리자 (ARC0) System resource management System resource monitoring
  • 37. Global Management •Global 환경에 여러 zone 이 구축됨에 따라 체계적이고 자동화된 운영 방식이 필요하다 HUB -Zone registry -Resource (e.g. binary) repository -User account -Global management ZONE
  • 38. 오픈 소스 2015 준비되는 대로 순차적으로 오픈 할 예정