SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
ARCUS Offline Meeting
2015. 05. 20 – 1회
JaM2in
Index
JaM2in
 ARCUS [ɑ́:rkəs] : 아커스
 아치형 구름
 ARCUS Memory Cache Cloud
 Memcached & ZooKeeper 기반으로 기능 확장 및 개선한
Memory Cache Cloud
 2009년 부터 NAVER에서 개발하여 NAVER 서비스에 적용
 2014년 5월 ARCUS Open Source - Apache License 2.0
 ARCUS URL - http://naver.github.io/arcus/
JaM2in
 잼투인㈜ : 2014.8 ~ 현재
 NAVER의 ARCUS 핵심 개발자가 창업한 회사
 NoSQL/DBMS 연구개발 전문가로 인력 구성 중
 페이스북) https://www.facebook.com/jam2in
 ARCUS 개발/컨설팅/기술지원 전문회사
 단기 - ARCUS 개선, 컨설팅, 기술지원, …
 중기 – NoSQL, …
 장기 - Analytics, …
Back-end System SW (ARCUS, …)
 Back-end System SW 발전 방향성
 전문 개발 조직에서 globally competent product 개발하고,
 여러 회사들은 적은 비용으로 고품질의 SW를 함께 이용하는 것이
 관련 산업이 동반 성장하는 데 유리
 당연한 것 같은 데, 그 동안은 왜 못했나 ?
 제품과 기술
• 의사결정, 연구&개발, 인력, 커뮤니케이션, …
 동반 성장
Back-end System SW (ARCUS, …)
 국산 System SW 사용의 이점
 개발자와 직접 커뮤니케이션 가능
• 기술 호기심, 상세 기술 사항, 응용의 challenge 논의, …
 SW 요구 사항 전달 및 반영이 쉬움
 근접한 고품질의 컨설팅/기술지원
 국산 Open Source SW
 Contribution이 훨씬 쉬움
JaM2in 역할
 고품질의 SW 개발 – back-end data solution
 globally competent SW
 ARCUS 사용의 확산
 기술 전파, 논의 및 공유에 꾸준히 참여
 관련 회사들의 성장에 도움되도록 기술적 지원 (동등 관계로)
 개발, 컨설팅, Challenge 논의, …
작지만 System SW 개발 회사
JaM2in 인력
 박준현
 DBMS Storage System Expert, NoSQL, …
 ARCUS Server/Client/Tool 개발, 컨설팅, 기술지원, …
 김영성
 DBMS Storage System Expert, …
 Replication의 Arcus Server Part, 컨설팅
 최욱환
 DBMS/NoSQL 초급 개발자
 Replication의 Arcus Client Part, 기술지원
JaM2in 채용
 도구 개발자 1명 (중급 이상)
 Java, Javascript, Python, Graph charts, Web services, …
 Client 개발자 1명 (초급 이상)
 Java/C, Distributed systems, …
 Server 개발자 1명 (중급 이상)
 C, DBMS/NoSQL/Distributed systems, …
 Storage engine, Query processor, …
ARCUS 버전
 Community 버전
 현재 오픈 되어 있는 ARCUS(http://naver.github.io/arcus/)
 이 버전의 개발 작업도 계속 진행
 Enterprise 버전
 상반기) Replication & Migration
 하반기) Key-Value Database, …
ARCUS 개발 상황
 Replication
 고 가용성 을 위한 master-slave 방식의 cache data 이중화 기능
 대략 80% 개발 상태. 향후 개발 완료 및 테스트.
 오늘 주요 발표 주제
 Migration
 Cache cloud에서 cache node 추가/삭제 시 cache data를 다른
cache node로 이동시켜 두어, cache miss가 발생하지 않도록 하
는 기능
 Design 상태이며, 6월말까지 개발 계획으로 달려볼 생각
ARCUS Replication
Index
 개발 배경
 ARCUS Replication 개요
 세부 사항
 Architecture
 Master/Slave 주요 구성 요소
 Replication 과정
 Replication Status
 이중화 대상 데이터
 Arcus 운용 with Replication
 Cache Cloud 설정 with Replica Group
 Master/Slave Role 결정 및 Failover
 Slave 구축 과정
 Commands
개발 배경
 장애 또는 운용 상의 이유로 cache node가 down되는 경우 cache
node에서 담당하던 item들에 대해서는 cache miss가 발생하게 된다.
 경우에 따라 cache miss가 다량 발생하여 back-end DB 서버에 부하가
갑자기 몰릴 수 있다.
 Data availability가 중요한 서비스에서는 cache miss 자체가 문제가 될
수 있다.
Replication을 통하여 증대 필요
ARCUS Replication 개요
 Master-Slave 구조 (2 replica)
 Sync ↔ Async
• 작업 종류 또는 시스템 상황에 따라 전환
 복제에 따른 연산 수행 시간
 Client ⇔ Master ⇔ Slave
 Latency 2배 정도 증가
 Throughput 80~90% 정도
 Read on Slave
 Write는 항상 Master에서 처리
 Read는 데이터 특성/Replication 상태 고려하여 Master 또는 Slave에서
수행될 수 있도록 응용에서 지정 ⇐ Client API 변경 참조
Replica Group
Architecture
Consistent hash ring
Application
Client library
Client 1
Application
Client library
Client 2
Coordination
Service
Configuration
Server state
Controller state
Replication
Key=“item1”
Key=“item2” A
B
C
D
Master Slave
Master/Slave 주요 구성 요소
 Master 구성 요소
 master thread
 msg channel for communicating with slave
 cset(change set) log : cache 변경 로그
 Slave 구성 요소
 slave thread
 msg channel for communicating with master
Replication 과정
1. Client가 Master에게 연산 수행 요청
2. Master에서는 요청된 연산을 Worker thread를 통하여 수행. Cache에 반영
3. Cache에 연산 반영 후 수정 내역을 cset에 log로 추가. Waiting for Sync
4. Master thread는 추가된 log를 가져와서 msg로 변환
5. 변환된 msg를 MSG Channel에 전달
6. Slave의 MSG Channel로 전송
7. Master로부터 전송받은 msg를 Slave thread로 전달
Cache
cset
(Log)
Master
Worker
thread
Slave
Master
thread
Application
Client library
Client
1
2 3
4
5
11
12
13
10
6
9
7
8
8. Slave thread는 전달된 msg에 포함된 변경 내역을 Cache에 반영
9. 반영 결과를 ACK msg로 만들어 MSG Channel에 전달
10. Master의 MSG Channel로 전송
11. Slave로부터 전송된 ACK msg를 Master thread로 전달
12. ACK msg를 기다리는 Worker thread를 깨움
13. 깨어난 Worker thread는 연산 수행 결과를 Client에 응답
Worker
thread
MSG
Channel
MSG
Channel
Cache
Slave
thread
Replication Status
주요 Status 종류 설 명
ASYNC Slave 구축 시에는 Async로 동작
Sync 상태에서 too long waiter 발생 시
Worker thread는 cset log 기록 후 이중화될 때까지 기다리지 않고 바
로 client에 응답
SYNC Async 상태에서 다음 조건이 일정 기간 동안 유지 시
- 이중화 메시지 전송 후 응답이 일정 시간 이내로 수신
- 재전송이 없는 상태
- cset log 개수가 일정 개수 이하로 유지
NACK cset overflow로 인하여 더 이상 이중화가 의미없는 경우
Slave로부터 NACK를 받은 경우
⇒ slave cache 재구축
INVALID HANDSHAKE
START
SLAVE_BUILD
ASYNC SYNC
NACK
이중화 대상 데이터
 이중화 대상
 Write : 사용자에 의해 수정되는 데이터
 Eviction : 관리 상의 이유로 cache에서 삭제되는 데이터
 이중화 비대상
 Expire : 유효 기간 만료로 인하여 cache에서 삭제되는 데이터
• Slave에서도 거의 동시에 Expire되기 때문에 이중화 불필요
• master/slave의 base time을 기반으로 이중화 시 expire time 조정됨.
 이중화 여부 선택 가능
 LRU Update
Arcus 운용 with Replication
 Cache Cloud 구성
 Replica Group 등록
 Replica Group 구동 (Master/Slave)
 Master 구동
 Slave 구동 : Master Cache 기반 Slave Cache 구축
 Switchover
 Master/Slave Role Change
 시스템 점검/버전 업그레이드/node 재배치 등 작업 시 필요
 Slave Shutdown
 Master Shutdown
Cache Cloud 설정 with Replica Group
/arcus_repl
/arcus_repl/cache_list
/arcus_repl/cache_list/test
# ephemeral znode = <group>^M^<ip:port-hostname> // created by cache node
# ephemeral znode = <group>^S^<ip:port-hostname> // created by cache node
/arcus_repl/cache_server_group
/arcus_repl/cache_server_group/test
/arcus_repl/cache_server_group/test/g0
/arcus_repl/cache_server_group/test/g0/lock
# ephemeral/sequence znode = <nodeip:port>^<listenip:port>^<sequence>
# ephemeral/sequence znode = <nodeip:port>^<listenip:port>^<sequence>
/arcus_repl/cache_server_mapping
/arcus_repl/cache_server_mapping/127.0.0.1:11215
/arcus_repl/cache_server_mapping/127.0.0.1:11215/test^g0^127.0.0.1:20125
/arcus_repl/cache_server_mapping/127.0.0.1:11216
/arcus_repl/cache_server_mapping/127.0.0.1:11216/test^g0^127.0.0.1:20126
Master/Slave Role 결정 및 Failover
 Coordination Service 이용
 Master 분산 lock을 획득한
cache node가 Master
 Master Failure 시 Slave가
Master lock을 획득함으로써 자동
Failover 수행
 Failover
 Master-Slave Sync 시 Failover
후 바로 서비스 가능
 Master-Slave Sync가 아닌 경우
data loss
Coordination
Service
Application
Client library
Client 1
Replica Group
Master Slave
Slave Cache 구축 과정
 Async 상태에서 수행하여 서비스 영향 최소화
 Master thread를 통하여 서비스 중에 Slave Cache 구축을 처리
 이중화와 Slave Cache 구축을 같이 수행
 Slave Cache 구축 속도 조절 가능
 Slave Cache 구축 시 network 리소스 등을 너무 많이 사용하여 이중화나 서비스 성
능에 영향을 주는 상황을 방지
Master Cache Slave Cache
Slave로 전달된 item에 대한 연산 이중화 수행
Slave로 아직
전달되지 않은
item에 대한 연산
cset log
Slave 구축
Commands
 stats replication [detail | config | ack_latency | all]
 각종 통계 및 설정 항목 확인
 replication <config_name> <config_value>
 동적으로 설정 변경
 replication switchover
 Master/Slave Role Change
Arcus Java Client
Replication Ver.
Index
 ARCUS Ketama Hashing
 memcached
 ReplicaGroup
 Read On Slave
 API Read on slave
 Switchover / Failover
ARCUS Ketama Hashing - memcached
 memcached node 정보를 유지
 1 memcached node
160 hash points
 memcached node 의 socket
address 를 이용해 hash ring 구성
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
ARCUS Ketama Hashing - ReplicaGroup
 Master / Slave memcached node 로
구성된 Replica Group 정보를 유지
 1 Replica Group (Master - Slave)
160 hash points
 Replica Group 이름을 이용해
hash ring 을 구성
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Replica Group
M S
Replica Group
M S
Read on Slave
 Read operation 을 수행할 Master / Slave 지정
 ConnectionFactoryBuiler 에서 setReadOn 로 설정
 Master / Slave / RR (RoundRobin) : 기본값 Master
final String ARCUS_ADMIN = "10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181";
final String SERVICE_CODE = "test";
ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
cfb.setReadOn(ReadOn.SLAVE);
ArcusClient.arcusClient =
ArcusClient.createArcusCLient(ARCUS_ADMIN, SERVICE_CODE, cfb);
API Read On Slave
 특정 API 를 대상으로 Read on 을 지정
 서비스 영향 최소화를 위한 부하 분산 목적
 약간의 오차가 허용되는 질의
 Read API 에 대해서만 가능
final String ARCUS_ADMIN = "10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181";
final String SERVICE_CODE = "test";
ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
Map<APIList, ReadOn> apiList = new HashMap<APIList, ReadOn>();
apiList.put(APIList.asyncBopGetItemCount, ReadOn.SLAVE);
cfb.setAPIReadOnList(apiList);
ArcusClient.arcusClient =
ArcusClient.createArcusCLient(ARCUS_ADMIN, SERVICE_CODE, cfb);
Switchover
 write operation
 Cache server 로부터 switchover 완료 메시지를 받으면,
 기존 master node의 write queue의 operation을
신규 master(기존 slave)로 이동
Master Slave
Operation
move
Write Queue
ReplicaGroup
Failover
 Master node 비정상 종료
 기존 Slave node 가 Master node 로 변경
 Replica group 전체 비정상 종료
 ARCUS Ketama Hash 변경
 추가 고려 사항들
 node 비정상 종료 탐지 시점
• Zookeeper watcher / ARCUS Client
 Master node 비정상 종료 시 write operation 수행 위치
• master / slave
Q & A
Thank You!

Contenu connexe

Tendances

Cubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 Replication
CUBRID
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
sprdd
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
sprdd
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선
NAVER D2
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서
Yong-uk Choe
 

Tendances (20)

MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
Cubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 Replication
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
 
About memcached
About memcachedAbout memcached
About memcached
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
 
Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선
 
Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서
 
Scalable web architecture
Scalable web architectureScalable web architecture
Scalable web architecture
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMT
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3
 

Similaire à ARCUS offline meeting 2015. 05. 20 1회

[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
VMware Tanzu Korea
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
Amazon Web Services Korea
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
NAVER D2
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
[오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기 [오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기
Chanyeol yoon
 

Similaire à ARCUS offline meeting 2015. 05. 20 1회 (20)

[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
NoSQL
NoSQLNoSQL
NoSQL
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트::  AWS Summit Online Ko...EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트::  AWS Summit Online Ko...
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
 
An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demo
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
 
[오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기 [오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
SEP Overview - 이비플러스(주)
SEP Overview - 이비플러스(주)SEP Overview - 이비플러스(주)
SEP Overview - 이비플러스(주)
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 

Plus de JaM2in (7)

ARCUS Cache Cluster의 기술 개요 (2021)
ARCUS Cache Cluster의 기술 개요 (2021)ARCUS Cache Cluster의 기술 개요 (2021)
ARCUS Cache Cluster의 기술 개요 (2021)
 
ARCUS 메모리 캐시 클러스터의 기술 개요 (2020).
ARCUS 메모리 캐시 클러스터의 기술 개요 (2020).ARCUS 메모리 캐시 클러스터의 기술 개요 (2020).
ARCUS 메모리 캐시 클러스터의 기술 개요 (2020).
 
[잼투인] ARCUS 기술 개요 및 활용 방안 (2019)
[잼투인] ARCUS 기술 개요 및 활용 방안 (2019)[잼투인] ARCUS 기술 개요 및 활용 방안 (2019)
[잼투인] ARCUS 기술 개요 및 활용 방안 (2019)
 
ARCUS 도입기
ARCUS 도입기ARCUS 도입기
ARCUS 도입기
 
ARCUS Spring 1.11.4
ARCUS Spring 1.11.4ARCUS Spring 1.11.4
ARCUS Spring 1.11.4
 
ARCUS persistence
ARCUS persistenceARCUS persistence
ARCUS persistence
 
ARCUS 기술 소개 자료
ARCUS 기술 소개 자료ARCUS 기술 소개 자료
ARCUS 기술 소개 자료
 

ARCUS offline meeting 2015. 05. 20 1회

  • 1. ARCUS Offline Meeting 2015. 05. 20 – 1회 JaM2in
  • 4.  ARCUS [ɑ́:rkəs] : 아커스  아치형 구름  ARCUS Memory Cache Cloud  Memcached & ZooKeeper 기반으로 기능 확장 및 개선한 Memory Cache Cloud  2009년 부터 NAVER에서 개발하여 NAVER 서비스에 적용  2014년 5월 ARCUS Open Source - Apache License 2.0
  • 5.  ARCUS URL - http://naver.github.io/arcus/
  • 6. JaM2in  잼투인㈜ : 2014.8 ~ 현재  NAVER의 ARCUS 핵심 개발자가 창업한 회사  NoSQL/DBMS 연구개발 전문가로 인력 구성 중  페이스북) https://www.facebook.com/jam2in  ARCUS 개발/컨설팅/기술지원 전문회사  단기 - ARCUS 개선, 컨설팅, 기술지원, …  중기 – NoSQL, …  장기 - Analytics, …
  • 7. Back-end System SW (ARCUS, …)  Back-end System SW 발전 방향성  전문 개발 조직에서 globally competent product 개발하고,  여러 회사들은 적은 비용으로 고품질의 SW를 함께 이용하는 것이  관련 산업이 동반 성장하는 데 유리  당연한 것 같은 데, 그 동안은 왜 못했나 ?  제품과 기술 • 의사결정, 연구&개발, 인력, 커뮤니케이션, …  동반 성장
  • 8. Back-end System SW (ARCUS, …)  국산 System SW 사용의 이점  개발자와 직접 커뮤니케이션 가능 • 기술 호기심, 상세 기술 사항, 응용의 challenge 논의, …  SW 요구 사항 전달 및 반영이 쉬움  근접한 고품질의 컨설팅/기술지원  국산 Open Source SW  Contribution이 훨씬 쉬움
  • 9. JaM2in 역할  고품질의 SW 개발 – back-end data solution  globally competent SW  ARCUS 사용의 확산  기술 전파, 논의 및 공유에 꾸준히 참여  관련 회사들의 성장에 도움되도록 기술적 지원 (동등 관계로)  개발, 컨설팅, Challenge 논의, … 작지만 System SW 개발 회사
  • 10. JaM2in 인력  박준현  DBMS Storage System Expert, NoSQL, …  ARCUS Server/Client/Tool 개발, 컨설팅, 기술지원, …  김영성  DBMS Storage System Expert, …  Replication의 Arcus Server Part, 컨설팅  최욱환  DBMS/NoSQL 초급 개발자  Replication의 Arcus Client Part, 기술지원
  • 11. JaM2in 채용  도구 개발자 1명 (중급 이상)  Java, Javascript, Python, Graph charts, Web services, …  Client 개발자 1명 (초급 이상)  Java/C, Distributed systems, …  Server 개발자 1명 (중급 이상)  C, DBMS/NoSQL/Distributed systems, …  Storage engine, Query processor, …
  • 12. ARCUS 버전  Community 버전  현재 오픈 되어 있는 ARCUS(http://naver.github.io/arcus/)  이 버전의 개발 작업도 계속 진행  Enterprise 버전  상반기) Replication & Migration  하반기) Key-Value Database, …
  • 13. ARCUS 개발 상황  Replication  고 가용성 을 위한 master-slave 방식의 cache data 이중화 기능  대략 80% 개발 상태. 향후 개발 완료 및 테스트.  오늘 주요 발표 주제  Migration  Cache cloud에서 cache node 추가/삭제 시 cache data를 다른 cache node로 이동시켜 두어, cache miss가 발생하지 않도록 하 는 기능  Design 상태이며, 6월말까지 개발 계획으로 달려볼 생각
  • 15. Index  개발 배경  ARCUS Replication 개요  세부 사항  Architecture  Master/Slave 주요 구성 요소  Replication 과정  Replication Status  이중화 대상 데이터  Arcus 운용 with Replication  Cache Cloud 설정 with Replica Group  Master/Slave Role 결정 및 Failover  Slave 구축 과정  Commands
  • 16. 개발 배경  장애 또는 운용 상의 이유로 cache node가 down되는 경우 cache node에서 담당하던 item들에 대해서는 cache miss가 발생하게 된다.  경우에 따라 cache miss가 다량 발생하여 back-end DB 서버에 부하가 갑자기 몰릴 수 있다.  Data availability가 중요한 서비스에서는 cache miss 자체가 문제가 될 수 있다. Replication을 통하여 증대 필요
  • 17. ARCUS Replication 개요  Master-Slave 구조 (2 replica)  Sync ↔ Async • 작업 종류 또는 시스템 상황에 따라 전환  복제에 따른 연산 수행 시간  Client ⇔ Master ⇔ Slave  Latency 2배 정도 증가  Throughput 80~90% 정도  Read on Slave  Write는 항상 Master에서 처리  Read는 데이터 특성/Replication 상태 고려하여 Master 또는 Slave에서 수행될 수 있도록 응용에서 지정 ⇐ Client API 변경 참조
  • 18. Replica Group Architecture Consistent hash ring Application Client library Client 1 Application Client library Client 2 Coordination Service Configuration Server state Controller state Replication Key=“item1” Key=“item2” A B C D Master Slave
  • 19. Master/Slave 주요 구성 요소  Master 구성 요소  master thread  msg channel for communicating with slave  cset(change set) log : cache 변경 로그  Slave 구성 요소  slave thread  msg channel for communicating with master
  • 20. Replication 과정 1. Client가 Master에게 연산 수행 요청 2. Master에서는 요청된 연산을 Worker thread를 통하여 수행. Cache에 반영 3. Cache에 연산 반영 후 수정 내역을 cset에 log로 추가. Waiting for Sync 4. Master thread는 추가된 log를 가져와서 msg로 변환 5. 변환된 msg를 MSG Channel에 전달 6. Slave의 MSG Channel로 전송 7. Master로부터 전송받은 msg를 Slave thread로 전달 Cache cset (Log) Master Worker thread Slave Master thread Application Client library Client 1 2 3 4 5 11 12 13 10 6 9 7 8 8. Slave thread는 전달된 msg에 포함된 변경 내역을 Cache에 반영 9. 반영 결과를 ACK msg로 만들어 MSG Channel에 전달 10. Master의 MSG Channel로 전송 11. Slave로부터 전송된 ACK msg를 Master thread로 전달 12. ACK msg를 기다리는 Worker thread를 깨움 13. 깨어난 Worker thread는 연산 수행 결과를 Client에 응답 Worker thread MSG Channel MSG Channel Cache Slave thread
  • 21. Replication Status 주요 Status 종류 설 명 ASYNC Slave 구축 시에는 Async로 동작 Sync 상태에서 too long waiter 발생 시 Worker thread는 cset log 기록 후 이중화될 때까지 기다리지 않고 바 로 client에 응답 SYNC Async 상태에서 다음 조건이 일정 기간 동안 유지 시 - 이중화 메시지 전송 후 응답이 일정 시간 이내로 수신 - 재전송이 없는 상태 - cset log 개수가 일정 개수 이하로 유지 NACK cset overflow로 인하여 더 이상 이중화가 의미없는 경우 Slave로부터 NACK를 받은 경우 ⇒ slave cache 재구축 INVALID HANDSHAKE START SLAVE_BUILD ASYNC SYNC NACK
  • 22. 이중화 대상 데이터  이중화 대상  Write : 사용자에 의해 수정되는 데이터  Eviction : 관리 상의 이유로 cache에서 삭제되는 데이터  이중화 비대상  Expire : 유효 기간 만료로 인하여 cache에서 삭제되는 데이터 • Slave에서도 거의 동시에 Expire되기 때문에 이중화 불필요 • master/slave의 base time을 기반으로 이중화 시 expire time 조정됨.  이중화 여부 선택 가능  LRU Update
  • 23. Arcus 운용 with Replication  Cache Cloud 구성  Replica Group 등록  Replica Group 구동 (Master/Slave)  Master 구동  Slave 구동 : Master Cache 기반 Slave Cache 구축  Switchover  Master/Slave Role Change  시스템 점검/버전 업그레이드/node 재배치 등 작업 시 필요  Slave Shutdown  Master Shutdown
  • 24. Cache Cloud 설정 with Replica Group /arcus_repl /arcus_repl/cache_list /arcus_repl/cache_list/test # ephemeral znode = <group>^M^<ip:port-hostname> // created by cache node # ephemeral znode = <group>^S^<ip:port-hostname> // created by cache node /arcus_repl/cache_server_group /arcus_repl/cache_server_group/test /arcus_repl/cache_server_group/test/g0 /arcus_repl/cache_server_group/test/g0/lock # ephemeral/sequence znode = <nodeip:port>^<listenip:port>^<sequence> # ephemeral/sequence znode = <nodeip:port>^<listenip:port>^<sequence> /arcus_repl/cache_server_mapping /arcus_repl/cache_server_mapping/127.0.0.1:11215 /arcus_repl/cache_server_mapping/127.0.0.1:11215/test^g0^127.0.0.1:20125 /arcus_repl/cache_server_mapping/127.0.0.1:11216 /arcus_repl/cache_server_mapping/127.0.0.1:11216/test^g0^127.0.0.1:20126
  • 25. Master/Slave Role 결정 및 Failover  Coordination Service 이용  Master 분산 lock을 획득한 cache node가 Master  Master Failure 시 Slave가 Master lock을 획득함으로써 자동 Failover 수행  Failover  Master-Slave Sync 시 Failover 후 바로 서비스 가능  Master-Slave Sync가 아닌 경우 data loss Coordination Service Application Client library Client 1 Replica Group Master Slave
  • 26. Slave Cache 구축 과정  Async 상태에서 수행하여 서비스 영향 최소화  Master thread를 통하여 서비스 중에 Slave Cache 구축을 처리  이중화와 Slave Cache 구축을 같이 수행  Slave Cache 구축 속도 조절 가능  Slave Cache 구축 시 network 리소스 등을 너무 많이 사용하여 이중화나 서비스 성 능에 영향을 주는 상황을 방지 Master Cache Slave Cache Slave로 전달된 item에 대한 연산 이중화 수행 Slave로 아직 전달되지 않은 item에 대한 연산 cset log Slave 구축
  • 27. Commands  stats replication [detail | config | ack_latency | all]  각종 통계 및 설정 항목 확인  replication <config_name> <config_value>  동적으로 설정 변경  replication switchover  Master/Slave Role Change
  • 29. Index  ARCUS Ketama Hashing  memcached  ReplicaGroup  Read On Slave  API Read on slave  Switchover / Failover
  • 30. ARCUS Ketama Hashing - memcached  memcached node 정보를 유지  1 memcached node 160 hash points  memcached node 의 socket address 를 이용해 hash ring 구성 … … … … … … … … … … … … … … … … … …
  • 31. ARCUS Ketama Hashing - ReplicaGroup  Master / Slave memcached node 로 구성된 Replica Group 정보를 유지  1 Replica Group (Master - Slave) 160 hash points  Replica Group 이름을 이용해 hash ring 을 구성 … … … … … … … … … … … … … … … … … … Replica Group M S Replica Group M S
  • 32. Read on Slave  Read operation 을 수행할 Master / Slave 지정  ConnectionFactoryBuiler 에서 setReadOn 로 설정  Master / Slave / RR (RoundRobin) : 기본값 Master final String ARCUS_ADMIN = "10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181"; final String SERVICE_CODE = "test"; ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder(); cfb.setReadOn(ReadOn.SLAVE); ArcusClient.arcusClient = ArcusClient.createArcusCLient(ARCUS_ADMIN, SERVICE_CODE, cfb);
  • 33. API Read On Slave  특정 API 를 대상으로 Read on 을 지정  서비스 영향 최소화를 위한 부하 분산 목적  약간의 오차가 허용되는 질의  Read API 에 대해서만 가능 final String ARCUS_ADMIN = "10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181"; final String SERVICE_CODE = "test"; ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder(); Map<APIList, ReadOn> apiList = new HashMap<APIList, ReadOn>(); apiList.put(APIList.asyncBopGetItemCount, ReadOn.SLAVE); cfb.setAPIReadOnList(apiList); ArcusClient.arcusClient = ArcusClient.createArcusCLient(ARCUS_ADMIN, SERVICE_CODE, cfb);
  • 34. Switchover  write operation  Cache server 로부터 switchover 완료 메시지를 받으면,  기존 master node의 write queue의 operation을 신규 master(기존 slave)로 이동 Master Slave Operation move Write Queue ReplicaGroup
  • 35. Failover  Master node 비정상 종료  기존 Slave node 가 Master node 로 변경  Replica group 전체 비정상 종료  ARCUS Ketama Hash 변경  추가 고려 사항들  node 비정상 종료 탐지 시점 • Zookeeper watcher / ARCUS Client  Master node 비정상 종료 시 write operation 수행 위치 • master / slave
  • 36. Q & A Thank You!