AWS 환경에서 MySQL Infra 설계하기-2부.본론I Goo LeeMySQL PowerGroup Tech Seminar (2016.1)
- 5.AWS 환경에서 MySQL Infra 설계하기-2부.본론 (by 김상필)
- URL : cafe.naver.com/mysqlpg
MariaDB 마이그레이션 - 네오클로바NeoClova사례로 알아보는 MariaDB 마이그레이션
현대적인 IT 환경과 애플리케이션을 만들기 위해 우리는 오늘도 고민을 거듭합니다. 최근 들어 오픈소스 DB가 많은 업무에 적용되고 검증이 되면서, 점차 무거운 상용 데이터베이스를 가벼운 오픈소스 DB로 전환하는 움직임이 대기업의 미션 크리티컬 업무까지로 확산하고 있습니다. 이는 클라우드 환경 및 마이크로 서비스 개념 확산과도 일치하는 움직임입니다.
상용 DB를 MariaDB로 이관한 사례를 통해 마이그레이션의 과정과 효과를 살펴 볼 수 있습니다.
MariaDB로 이관하는 것은 어렵다는 생각을 막연히 가지고 계셨다면 본 자료를 통해 이기종 데이터베이스를 MariaDB로 마이그레이션 하는 작업이 어렵지 않게 수행될 수 있다는 점을 실제 사례를 통해 확인하시길 바랍니다.
웨비나 동영상
https://www.youtube.com/watch?v=xRsETZ5cKz8&t=52s
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...OpenStack Korea Community- 발표자: netmarble 한승진
- 설명: https://event.openinfradays.kr/2018/session2/50_track1
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARKApache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
MySQL Administrator 2021 - 네오클로바NeoClova
MySQL Administrator
Basic course
- MySQL 개요
- MySQL 설치 / 설정
- MySQL 아키텍처 - MySQL 스토리지 엔진
- MySQL 관리
- MySQL 백업 / 복구
- MySQL 모니터링
Advanced course
- MySQL Optimization
- MariaDB / Percona
- MySQL HA (High Availability)
- MySQL troubleshooting
네오클로바
http://neoclova.co.kr/
Understanding of Apache kafka metrics for monitoring SANG WON PARK2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARKApache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARKApache Kafka를 이용하여 이미지 데이터를 얼마나 빠르게(with low latency) 전달 가능한지 성능 테스트.
최종 목적은 AI(ML/DL) 모델의 입력으로 대량의 실시간 영상/이미지 데이터를 전달하는 메세지 큐로 사용하기 위하여, Drone/제조공정 등의 장비에서 전송된 이미지를 얼마나 빨리 AI Model로 전달 할 수 있는지 확인하기 위함.
그래서 Kafka에서 이미지를 전송하는 간단한 테스트를 진행하였고,
이 과정에서 latency를 얼마나 줄여주는지를 확인해 보았다.(HTTP 프로토콜/Socket과 비교하여)
[현재 까지 결론]
- Apache Kafka는 대량의 요청 처리를 위한 throughtput에 최적화 된 솔루션임.
- 현재는 producer의 몇가지 옵션만 조정하여 테스트한 결과이므로,
- 잠정적인 결과이지만, kafka의 latency를 향상을 위해서는 많은 시도가 필요할 것 같음.
- 즉, 단일 요청의 latency는 확실히 느리지만,
- 대량의 처리를 기준으로 평균 latency를 비교하면 평균적인 latency는 많이 낮아짐.
Test Code : https://github.com/freepsw/kafka-latency-test
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source ConsultingARM과 AMD64의 차이에 대해 설명하고
오픈스택에 ARM을 도입하기 위한 커뮤니티 활동을 소개합니다.
1. ARM vs AMD64
2. CISC/RISC 차이
3. 커뮤니티에서 ARM위에 오픈스택을 올리기 위한 노력
- SIG (Special Interest Groups)
- PTG(Project Team Gathering)
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...OpenStack Korea Community- 발표자: netmarble 한승진
- 설명: https://event.openinfradays.kr/2018/session2/50_track1
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARKApache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
MySQL Administrator 2021 - 네오클로바NeoClova
MySQL Administrator
Basic course
- MySQL 개요
- MySQL 설치 / 설정
- MySQL 아키텍처 - MySQL 스토리지 엔진
- MySQL 관리
- MySQL 백업 / 복구
- MySQL 모니터링
Advanced course
- MySQL Optimization
- MariaDB / Percona
- MySQL HA (High Availability)
- MySQL troubleshooting
네오클로바
http://neoclova.co.kr/
Understanding of Apache kafka metrics for monitoring SANG WON PARK2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARKApache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARKApache Kafka를 이용하여 이미지 데이터를 얼마나 빠르게(with low latency) 전달 가능한지 성능 테스트.
최종 목적은 AI(ML/DL) 모델의 입력으로 대량의 실시간 영상/이미지 데이터를 전달하는 메세지 큐로 사용하기 위하여, Drone/제조공정 등의 장비에서 전송된 이미지를 얼마나 빨리 AI Model로 전달 할 수 있는지 확인하기 위함.
그래서 Kafka에서 이미지를 전송하는 간단한 테스트를 진행하였고,
이 과정에서 latency를 얼마나 줄여주는지를 확인해 보았다.(HTTP 프로토콜/Socket과 비교하여)
[현재 까지 결론]
- Apache Kafka는 대량의 요청 처리를 위한 throughtput에 최적화 된 솔루션임.
- 현재는 producer의 몇가지 옵션만 조정하여 테스트한 결과이므로,
- 잠정적인 결과이지만, kafka의 latency를 향상을 위해서는 많은 시도가 필요할 것 같음.
- 즉, 단일 요청의 latency는 확실히 느리지만,
- 대량의 처리를 기준으로 평균 latency를 비교하면 평균적인 latency는 많이 낮아짐.
Test Code : https://github.com/freepsw/kafka-latency-test
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source ConsultingARM과 AMD64의 차이에 대해 설명하고
오픈스택에 ARM을 도입하기 위한 커뮤니티 활동을 소개합니다.
1. ARM vs AMD64
2. CISC/RISC 차이
3. 커뮤니티에서 ARM위에 오픈스택을 올리기 위한 노력
- SIG (Special Interest Groups)
- PTG(Project Team Gathering)
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인VMware Tanzu Korea넷플릭스에서는 높은 속도로 데이터를 제공하기 위해서 뿐만 아니라 멀티 리전의 데이터 가용성을 바탕으로한 전체 서비스 가용성 유지를 위해 캐시를 사용하고 있습니다. 이 앞의 세션에서 보았던 마이크로서비스 구조를 염두해 둘때 한가지 가장 간단한 변화는 외부 클라이언트로 부터 유입되는 단 하나의 요청에 대한 응답을 만들기 위해 다수의 내부 서비스들로 부터 데이터를 확보해야 하며, 이는 다수 서비스들에 대한 요청과 응답으로 이루어지게 됩니다. 내부 네트워크 성능, 데이터 저장소의 응답속도등의 복합적인 영향으로 인해 마이크로 서비스는 쉽게 느려질 수 있으며, 이는 보통 '팬아웃 효과'로 알려져 있습니다. 뿐만 아니라 다수 서비스간의 데이터 정합성 유지, 필요에 따라 각 서비스간 데이터의 다운타임 없는 이동, 증가하는 데이터량에 동시에 증가하는 데이터 소스의 부하, 그리고 이런 것들을 모두 감안한 데이터 복제 등을 처리해야 할 필요가 있습니다. 본 세션에서는 넷플릭스에서는 이런 문제를 어떤 방식으로 해결하는지, 그리고 스프링 부트, 스프링 클라우드를 비롯한 피보탈의 기술을 사용해서 어떻게 빠르고 쉽게 사용할 수 있는지에 대해 알아봅니다.
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...Amazon Web Services Korea발표영상 다시보기: https://youtu.be/hPvBst9TPlI
S3 기반의 데이터레이크에서 대량의 데이터 변환과 처리에 사용될 수 있는 가장 대표적인 솔루션이 Apache Spark 입니다. EMR 플랫폼 환경에서 쉽게 적용 가능한 Apache Spark의 성능 향상 팁을 소개합니다. 또한 데이터의 레코드 레벨 업데이트, 리소스 확장, 권한 관리 및 모니터링과 같은 다양한 데이터 워크로드 관리 최적화 방안을 함께 살펴봅니다.
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study
이 세션에서는 넥슨의 Case study를 통하여 글로벌플랫폼 구축을 위해 기존 플랫폼을 AWS로 Migration하는 과정 및 발생가능한 이슈를 공유합니다. 넥슨이 DB서버를 이전하는 과정 속에서 마주한 기술적 고민과 이슈를 통하여 AWS 활용 시 고려해야 할 부분들에 대해 소개하고 함께 이야기 나누고자 합니다.
ARCUS Cache Cluster의 기술 개요 (2021)JaM2inARCUS 메모리 캐시 클러스터의 개요, 기술 특징, 활용 방안을 소개합니다.
1) ARCUS 캐시 개요
2) ARCUS 기술 특징
3) ARCUS 활용 방안
4) ARCUS 기타 기술
5) 그외 사항
ARCUS 도입기JaM2inThis document discusses using caching annotations in Java code to cache method results returned from a database. It describes adding @ArcusCache and @ArcusCacheKey annotations to cache getCategories method results for 60 seconds. The annotations can generate a cache key automatically based on method parameters rather than requiring a custom key to be passed. Caching improves performance by avoiding repeated database queries if the same method is called with the same parameters during the cache expiration period.
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
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 개발 회사
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