다양한 하둡에코 소프트웨어 성능을 검증하려는 목적으로 성능 테스트 환경을 구성해보았습니다. ELK, JMeter를 활용해 구성했고 Kafka에 적용해 보았습니다.
프로젝트에서 요구되는 성능요건을 고려해 다양한 옵션을 조정해 시뮬레이션 해볼수 있습니다.
처음 적용한 뒤 2년 정도가 지났지만, kafka 만이 아니다 다른 Hadoop eco 및 Custom Solution에도 유용하게 활용 가능하겠습니다.
Geb is a browser automation framework built on Groovy and WebDriver. It allows writing tests using jQuery-like selectors to find page elements and interact with them. The document provides details on setting up Geb dependencies and examples of Geb scripts for testing a login page by filling out and submitting forms and asserting page titles. It also shows how to write Geb tests using the Spock testing framework.
다양한 하둡에코 소프트웨어 성능을 검증하려는 목적으로 성능 테스트 환경을 구성해보았습니다. ELK, JMeter를 활용해 구성했고 Kafka에 적용해 보았습니다.
프로젝트에서 요구되는 성능요건을 고려해 다양한 옵션을 조정해 시뮬레이션 해볼수 있습니다.
처음 적용한 뒤 2년 정도가 지났지만, kafka 만이 아니다 다른 Hadoop eco 및 Custom Solution에도 유용하게 활용 가능하겠습니다.
Geb is a browser automation framework built on Groovy and WebDriver. It allows writing tests using jQuery-like selectors to find page elements and interact with them. The document provides details on setting up Geb dependencies and examples of Geb scripts for testing a login page by filling out and submitting forms and asserting page titles. It also shows how to write Geb tests using the Spock testing framework.
LENA는 Web Server, Web Application Server, Session Sever, Manager로 구성되어 있으며, Cluster Architecture를 통해 가용성
저비용 고효율 운영중심의 WAS를 제공
Session Clustering
Active-Standby/Active-Active Session Server 모드
Standalone Mode
Embedded Mode
장애 사전(예측) 진단
Server 설정 백업 및 복원
Server Cluster Snapshot
Server Patch 복원
Server 간 Compare/Sync/Restore
Multi-Server 관리 및 운영 관점의 편의 제공
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를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
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 단위 성능을 기준으로 예측이 가능할 것 같다.
2. AP 서버
• 서버가 멈추는 요인
• 사람의 실수.
• 물리적인 고장.
• 메모리 장애.
• 장애 발생 시 자동으로 failover, 복구 시
failback
• failover : 고장난 서버를 자동적으로 분리.
• failback : 서버가 복구 되면 원상태로 복귀.
3. 다중성 확보 – AP 서버
로드 밸런서 로드 밸런서
AP 서버 1 AP 서버 2 AP 서버 1 AP 서버 2
X
failover
failback
4. DB 서버
• 마스터의 다중화는 어려움.
• 멀티 마스터 구성
• 마스터간의 레플리케이션. (서로간의 슬레이브구성)
• 데이터 간 일치하지 않는 부분 발생.
• 동기화 처리 ( slave에서 쓰여진것을 확인 하고 client
에게 응답).
• 성능면에서 리스크.
5. 멀티 마스터
• 기본적으로 Active/Standby 2대로 구성
• failover 발생 시 (standby 서버 기준)
• VRRP(Virtual Router Redundancy Protocol)라는 프
로토콜을 이용하여 Active 마스터 감시.
• 장애 발생을 발견하면 자신이 Active 마스터로 승격.
6. 멀티 마스터 구성
LVS
마스터 DB
(Active)
마스터 DB
(Standby)
10.0.0.1(real ip)
10.0.0.3(VIP) 10.0.0.2(real ip)
상호간
레플리케이션
감시(VRRP)
LVS
마스터 DB
(Standby)
마스터 DB
(Active)
10.0.0.1(real ip)
10.0.0.2(real ip)
10.0.0.3(VIP)
상호간
레플리케이션
감시(VRRP)
장애 발생
7. 스토리지
• 애플리케이션 데이터를 영속적, 일시적 저장하는
기능.
• 스토리지 선택 고려사항 (액세스 패턴)
• 평균크기, 최대크기, 신규추가빈도, 갱신빈도, 삭제빈
도, 참조빈도.
• 용량이 큰 HDD 사용 시, 저장된 파일 수가 많아
져서 I/O 병목 현상에 원인.
8. 스토리지 종류
• RDBMS
• MySQL, PostgreSQL
• 분산 key-value 스토어
• memcached, TokyoTyrant
• 분산 파일 시스템
• MogileFS, GlusterFS, Lustre
• 기타
• NFS 계 분산 파일 시스템, DRBD, HDFS
9. MogileFS
• 작은 대량의 파일을 다룰 목적으로 Perl로 구현
된 분산 파일 시스템.
• KB~MB 크기의 파일
• 파일 추가에 적합
• 추가 후 갱신 되지 않고 참조용.
• 하나의 파일은 3중으로 다중화.
• 일부 스토리지 서버가 고장 나도 서비스는 정상적으로
가능.
• Client Server간 Http 통신 사용
• PUT, GET
10. MogileFS 구성
• 애플리케이션(클라이언트)
• 파일을 저장하고 로드하는 주체.
• 구현 필요.
• Tracker
• 클라이언트 요청에 대한 처리를 관리.
• DB
• 메타데이터 정보를 관리.
• 스토리지
• 파일을 저장하는 장소.
12. 자원 효율 상반관계
• 한계에 이를 때까지 메모리 튜닝
• 안정성 <-> 자원 효율
• 메모리 소비 올라가면 ->성능 저하(스왑) -> 장애
• 메모리는 7할 정도 까지만 사용
• 한계에 이를 때까지 CPU 사용
• 안정성 <-> 속도
• 서버 1대 다운 -> 처리 능력 초과 -> 장애
• CPU를 7할 정도까지만 사용.
13. 시스템 불안정 요인
• 애플리케이션/서비스 레벨 -> 부하증가
• 기능 추가
• 메모리 누수
• 지뢰
• 사용자의 액세스 패턴
• 데이터량 증가
• 위부연계 추가
• 하드웨어 -> 처리능력 저하
• 메모리, HDD 장애
• NIC 장애
14. 애플리케이션/서비스 레벨
• 기능 추가 / 메모리 누수
• 새로운 기능으로 인한 부하증가.
• Perl 은 메모리 누수를 완전 배제 하기 어려움(스왑 발생).
• 지뢰
• 특정 URL 호출 메모리 누수 및 무한 루프 발생.
• 사용자의 액세스 패턴
• 특정 URL 에 트래픽이 몰려 서비스 다운.
• 데이터량 증가
• 당초 예상했던 데이터량 보다 늘어나서 부하의 증가.
• 데이터 설계 미흡으로 인한 테이블 레코드 증가.
• 외부연계 추가
• 외부 시스템 장애로 서비스 장애
15. 하드웨어 레벨
• 메모리, HDD, NIC 장애
• 일상적으로 발생하는 장애
• 로드밸런서 에서 적절한 항목에 대해 헬스체크.
16. 시스템 안정화 대책
• 적절한 버퍼 유지
• 메모리량, CPU 사용 7할 유지
• 불안정 요인 제거
• 부하가 높아질 것 같은 SQL은 다른 DB 이용해서 처
리.
• 이상 동작 시의 자율제어
• 자동 DoS 판정
• 자동 재 시작
• 자동 쿼리제거