Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache 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를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
리눅스 pacemaker 기반의 High Availaiblity 구성방법에 대해 설명합니다. pacemaker를 사용하는 다른 리눅스 기반도 구성이 가능합니다.
Pacemaker 기반 Linux High Availability 입문용으로는 적합하지 않을 수 있습니다. Pacemaker 기반 Linux High Availability를 한 번도 설치 및 구성을 하지 않은 리눅스 관리자라면 설치 문서를 먼저 참고하십시오.
RHEL7 및 CentOS 7을 중심으로 레드햇 계열의 리눅스에 적합한 내용으로 작성되었습니다.
다양한 하둡에코 소프트웨어 성능을 검증하려는 목적으로 성능 테스트 환경을 구성해보았습니다. ELK, JMeter를 활용해 구성했고 Kafka에 적용해 보았습니다.
프로젝트에서 요구되는 성능요건을 고려해 다양한 옵션을 조정해 시뮬레이션 해볼수 있습니다.
처음 적용한 뒤 2년 정도가 지났지만, kafka 만이 아니다 다른 Hadoop eco 및 Custom Solution에도 유용하게 활용 가능하겠습니다.
엄청난 동시 접속 수로 고사양이 요구되는 게임 '배틀그라운드'! 속도가 중요한 게임 서비스에서 가장 필요한 고성능 서버입니다. 배틀그라운드 사례 뿐아니라 SK텔레콤도 선정하여 사용하고 있는 네이버클라우드플랫폼 베어메탈 서버에 대해 소개합니다 | Battlegrounds is a game that requires a lot of simultaneous access! High-performance servers most needed for speed-critical gaming services. In addition to the case of Battlegrounds, SK Telecom has selected and used Naver Cloud Platform Bare Metal Server.
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
클라이언트 개발자들은 직접 서버와 네트워크를 다루지는 않더라도 컴퓨터 네트워크의 특징에 대해서는 알고 있어야 한다. 본 강연은 클라이언트 개발자들이 반드시 알아야 하는 컴퓨터 네트워크 관련 용어와 특징을 소개한다. 아울러 스마트폰 무선 네트워크 관련해서 주안점도 다룬다.
http://www.ubuntu-kr.org/viewtopic.php?f=2&t=16175
내 용
발표 1 우분투로 슈퍼컴 만들기 = 김성윤
발표 2 geogebra (수학 그래프+도형 툴) = 미남imsu(구임수)
자기 소개 및 자유 이야기
발표 3 : 우분투에서 임베디드 리눅스 개발 환경 구축하기 = 뻔뻔강사(유명환)
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
Apache 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
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache 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를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
리눅스 pacemaker 기반의 High Availaiblity 구성방법에 대해 설명합니다. pacemaker를 사용하는 다른 리눅스 기반도 구성이 가능합니다.
Pacemaker 기반 Linux High Availability 입문용으로는 적합하지 않을 수 있습니다. Pacemaker 기반 Linux High Availability를 한 번도 설치 및 구성을 하지 않은 리눅스 관리자라면 설치 문서를 먼저 참고하십시오.
RHEL7 및 CentOS 7을 중심으로 레드햇 계열의 리눅스에 적합한 내용으로 작성되었습니다.
다양한 하둡에코 소프트웨어 성능을 검증하려는 목적으로 성능 테스트 환경을 구성해보았습니다. ELK, JMeter를 활용해 구성했고 Kafka에 적용해 보았습니다.
프로젝트에서 요구되는 성능요건을 고려해 다양한 옵션을 조정해 시뮬레이션 해볼수 있습니다.
처음 적용한 뒤 2년 정도가 지났지만, kafka 만이 아니다 다른 Hadoop eco 및 Custom Solution에도 유용하게 활용 가능하겠습니다.
엄청난 동시 접속 수로 고사양이 요구되는 게임 '배틀그라운드'! 속도가 중요한 게임 서비스에서 가장 필요한 고성능 서버입니다. 배틀그라운드 사례 뿐아니라 SK텔레콤도 선정하여 사용하고 있는 네이버클라우드플랫폼 베어메탈 서버에 대해 소개합니다 | Battlegrounds is a game that requires a lot of simultaneous access! High-performance servers most needed for speed-critical gaming services. In addition to the case of Battlegrounds, SK Telecom has selected and used Naver Cloud Platform Bare Metal Server.
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
클라이언트 개발자들은 직접 서버와 네트워크를 다루지는 않더라도 컴퓨터 네트워크의 특징에 대해서는 알고 있어야 한다. 본 강연은 클라이언트 개발자들이 반드시 알아야 하는 컴퓨터 네트워크 관련 용어와 특징을 소개한다. 아울러 스마트폰 무선 네트워크 관련해서 주안점도 다룬다.
http://www.ubuntu-kr.org/viewtopic.php?f=2&t=16175
내 용
발표 1 우분투로 슈퍼컴 만들기 = 김성윤
발표 2 geogebra (수학 그래프+도형 툴) = 미남imsu(구임수)
자기 소개 및 자유 이야기
발표 3 : 우분투에서 임베디드 리눅스 개발 환경 구축하기 = 뻔뻔강사(유명환)
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
Apache 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
Brief introduction about the ideas of the Blockchain technology.
Written in Korean.
Starts with Hash function, Hashcash, proof-of-work, and how Blockchain adopted and extended the idea.
클라우드 상에서 논리적으로 격리된 고객 전용 네트워크를 제공하는 VPC에 대해 살펴보고 스토리지 암호화, 감사 등 보안을 위한 다양한 기능들을 소개해드립니다 | Explore VPC providing a logically siloed customer-only network on the cloud and introduce a range of security features including storage encryption and auditing.
실전! AWS 하이브리드 네트워킹 (AWS Direct Connect 및 VPN 데모 세션) - 강동환, AWS 솔루션즈 아키텍트:: A...Amazon Web Services Korea
발표영상 다시보기: https://youtu.be/yMgwrkqfcbg
AWS Cloud와 On-Premise를 하나로 연결하는 다양한 Network 연결 방식을 실제 Demo를 통해 심도 있게 알아 봅니다. VPN, Direct Connect, Direct Connect Gateway, Public VIF, Transit Gateway등을 직접 구성하는 Demo를 통해 여러분께 적용 가능한 다양한 시나리오를 직접 확인 할 수 있습니다.
2. DNS 라운드로빈과 로드밸런서의 차이
• DNS Round Robin
– DNS를 이용해서 하나의 서비스에 여러 대의
서버를 분산시키는 방법.
– 웹 서버 마다 공인 IP 할당.
– 균등하게 분산 안됨.
– 웹 서버가 다운되어도 감지 못함.
3. DNS 라운드로빈과 로드밸런서의 차이
• Load Balancer
– 하나의 IP주소에 대해 요청을 복수의 서버로
분산.
– 공인 IP를 가진 가상적인 서버로 동작하여 요
청의 대해 실제 웹 서버로 중계 역할.
– 여러 대의 리얼 서버중 한 대를 선택해서 중계.
– 고가의 장비 및 유지 보수 비용이 큼.
• 비용 절약으로인한 OSS(opensource
software) 구축
4. IPVS-리눅스로 로드밸런서 구성
• 리눅스로 특별한 S/W 없이 라우터 운용가능.
• IPVS(IP Virtual Server)라는 부하 분산 기능을 제공
하는 모듈도 포함.
• 로드밸런서 종류와 IPVS 기능
– L4 스위치
• 트랜스 포트 계층까지 의 정보를 분석.
• IP, Port에 따라 분산대상 서버지정.
– L7 스위치
• 애플리케이션 계층까지 정보를 분석.
• URL에 따라 분산대상 서버 지정.
– IPVS에 내장되어 있는 것은 L4 스위치에 해당.
• L7 스위치는 이용불가.
5. 스케쥴링 알고리즘
• rr(round-robin)
– 차례대로 처리.
• wrr(weighted round-robin)
– rr + 가중치.
• lc(least-connection)
– 접속수가 가장 적은 서버 선택.
• wlc(weighted least-connection)
– lc + 가중치.
• sed(shortest expected delay)
– 응답속도가 가장 빠른 서버 선택.
• nq(never queue)
– sed와 동일 그러니 active 수가 0인 서버 최우선으로 선택.
6. 스케쥴링 알고리즘
• sh(source hashing)
– source ip 주소 해시 값 계산 후 분산 서버 선택.
• dh(destination hashing)
– 목적지 ip 주소 해시 값 계산 후 분산 서버 선택.
• lblc(locality-based least-connection)
– 접속수가 가중치로 지정한 값을 넘기 전까지 동일한 서버
선택.
• lblcr(locality-based least-connection with
replication)
– lblc + 모든 서버의 접속수가 가중치로 지정한 값을 넘는
경우 접속수가 가장 적은 서버 선택.
7. IPVS 사용하기
• ipvsadm
– IPVS에서 제공하는 명령툴.
– 가상서버를 정의하고 리얼 서버를 할당.
– 접속상황,전송률, 통계정보를 제공.
• Keepalived
– IPVS를 이용하여 가상서버를 구축.
– 리얼 서버의 상태 체크.(다운 시 부하분산 제외)
• HTTP_GET, SSL_GET, TCP_CHECK, SMTP_CHECK,
MISC_CHECK
8. L4스위치와 L7스위치
L4 스위치
L7 스위치
• L4스위치는 클라이언트가 통신하는 곳은 리얼 서버.
• L7 스위치에 클라이언트와 리얼 서버 각각의 TCP
세션을 전개.
9. NAT와 DSR
• NAT(Network Address Translation)
– 한 네트워크 컴퓨터의 IPv4 주소를 다른 네트워크 컴
퓨터의 IPv4 주소로 변환.
• DSR(Direct Server Return)
– 로드밸런서 사용시 리얼서버에서 클라이언트로 되돌아
가는 경우 목적지의 주소가 스위치 주소가 아닌 클라
이언트 주소로 전달하는 개념.
– 로드밸런서 병목, 높은 트래픽이 있는 경우 DSR로 권
장.
13. 다중화 프로토콜 VRRP
• 라우터나 로드밸러서 벤더들의 독자적인
다중화 프로토콜
– 서로 다른 벤더간 호환 불가.
• HSRP(Hot standby Routing Protocol)기
반으로 벤더에 의존하지 않는 다중화 프로
토콜 VRRP(Virtual Router Redundancy
Protocol) 개발.
14. VRRP 패킷
• 마스터 노드가 정기적으로 VRRP 패킷을 멀티캐스팅
(224.0.0.18)주소로 송신.
– 마스터가 정상 작동임을 알리는 메시지(Advertisement)
• 백업 노드는 VRRP 패킷을 수신하는 동안은 대기중, 일정
시간 수신 하지 못하면 마스터 노드 다운으로 판단 장애
극복 시작.
15. 가상 라우터 ID
로드 밸런서 A 로드 밸런서 B
(Active) VRRP (Backup)
VRRP 패킷을 송신 224.0.0.18
로드 밸런서 C 로드 밸런서 D
(Active) (Backup)
VRRP
• Virtual Rtr ID.
• VRRP 패킷은 멀티 캐스팅주소로 송신
– 주소 변경 불가.
• 인스턴스를 구분하기 위한 용도.
16. 우선순위(Priority)
• Priority.
• VRRP 구조적으로 100대의 백업 노드를 가
질수 있음.
• 백업 노드가 2대 이상 작동 시 우선순위
부여.
• 수치적으로 높을수록 우선순위가 높음.
• 사용범위는 1~255, 기본값은 100
17. 선점형 모드(Preemptive Mode)
• 선점형 모드 유효화
– 자신의 Priority보다 낮은 값을 수신하면
master상태로 변경.
– Default mode.
• 선전형 모드 무효화
– 자신의 Priority 보다 낮은 값을 수신하더라도
현 상태를 유지.
18. 가상 MAC주소
• VRRP에는 가상 MAC주소가 정의.
• 장애극복 시 IP주소뿐만 아니라, MAC주소
도 함께 인계.
– MAC 주소를 인계하지 않을 경우, 통신 상대
가 되는 모든 장비의 ARP 테이블의 변경 필요.
• Physical/Virtual 2가지 mode
– Default mode Virtual.
19. Keepalived의 구조상의 문제
• Keepalived의 VRRP는 가상 MAC주소를 허용하지 않
음.
• 장애극복 시 ARP 엔트리가 갱신되지 않는 장비가 있
을 경우, APR 캐시가 clear가 되까지 통신되지 않을
위험성 소지.
• gratuitous ARP의 지연송신
– 마스터 상태로 변경 후 GARP를 송신 시 네트워크 상태 불
안정, 일시적인 트래픽이 집중되어 통신이 안될 수 있음.
– 수 초 정도 기다린 후 GARP 송신.
– grap_master_delay로 설정.
– Default value 5초.
21. VRRP의 설정
• lv1의 예
lv2는 102으로 변경
• lv1과 lv2에서 keepalived를 기동하면 lv1에 VIP가 할당 ifconfig로는 확인 불가,
ip 명령으로 확인.
22. VRRP의 동작확인
• 동작 확인
a. lv1을 shutdown 한다. lv2=Master(O)
b. lv1을 기동한다. lv1=Master, lv2=Backup(O)
c. lv1의 eth0 케이블을 뺀다. lv1=Backup,
lv2=Master(O)
d. lv1의 eth0 케이블을 꽂는다. lv1=Master,
lv2=Backup(O)
e. lv1의 eth1 케이블을 뺀다. lv1=Master,
lv2=Backup
• VRRP 패킷은 eth0으로만 전송 eth1의 lan cable을 빼더
라도 이상동작 확인 불가.
23. VRRP 인스턴스 분리
<-VRPP마다 고유한 값
<-lv2는 102으로 변경
<-VRPP마다 고유한 값
<-lv2는 102으로 변경
24. VRRP 인스턴스 동기화
• vrrp_sync_group
• 여러 VRRP 인스턴스에서 상태를 동기화
시키기 위한 설정.
• 그룹 내 하나의 인스턴스가 Backup이 되
는 경우 연동 해서 다른 인스턴스 또한
Backup이 된다.