테스트 진행 관련
zookeeper version-2를 이동하지 않고,
kafka data log dir (파티션이 저장되는 경로)을 변경 한 뒤 아래 2가지 테스트.
(기존 : /kaf_data , 변경 : /kaf_data_test)
 1) 기존 조회되는 topic으로 데이터 produce/consume
    - 기존의 kafka data log dir에 데이터가 쌓일지, 신규 dir로 데이터가 쌓일지 확인
      (version-2
 metadata 정보 기반이면 기존 data log dir로 쌓지 않을까 예상)

 2) 신규 topic 생성 및 데이터 produce/consume 후 결과 확인 (dir, zookeeper cli metadata )
확인 된 내용
변경된 신규 디렉토리에 기존 디렉토리의 파티션 구성은 동일하게 생성되나 (일반 topic consume topic 둘 다 생성됨)
실제 데이터는 0인 파일들이 같이 생성 된다. 

 --> index, timeindex등 파일 사이즈가 0은 아니지만 log dump를 통해 확인 시 NoSuchElementException 에러 발생(데이터없음)
테스트 결과
1) 기존 조회되는 topic으로 데이터 produce/consume
 - 정상적으로 된다. 각각 파일의 offset들은 0으로 시작한다. (consumer log dump는 캡쳐뜨지 않았다)
 - 위 예상처럼 기존 디렉토리인 /kaf_data에 쌓이지 않고 신규 디렉토리인 /kaf_data_test에 쌓인다.
 - 다만 신기하게도, consumer_offsets 파티션은 /kaf_data에서 생성된 파티션 디렉토리 번호와 똑같은 파티션으로 데이터가 생성된다. 
  ** 테스트 시 기존 consumer group id도 동일하게 테스트 해서 그런건지 아닌지는 나중에 다시 테스트 해봐야 할 것 같지만..

2) 신규 topic 생성 및 데이터 produce/consume 후 결과 확인 (dir, zookeeper cli metadata 등)
  - 신규 토픽은 신규 디렉토리에 잘 생성 됐다. produce/consume 수행시 특이사항 없었음.
  - zookeeper cli 확인 시 topic내용은 정상적으로 들어가있다. 

확인 사항


1. kafka data log 변경 후 기동 / 확인

zookeeper snapshot data version-2의 데이터를 유지하고, kafka data dir을 변경했다.

 - 기존 : /kaf_data

 - 변경 : /kaf_data_test

  /kaf_data_test 는 비어있는 신규 디렉토리로 생성 후 kafka server.properties 의 log.Dirs에 위치를 변경해준다.

  

kafka 기동 후 /kaf_data_test kafka-topics.sh 를 통해 확인 결과

/kafka_data_test 디렉토리에 /kaf_data 와 똑같은 파티션들이 전부 생성 되었고, topic list도 동일하게 조회 됐다.

더보기

(before after 캡쳐는 못뜸)

신규 디렉토리로 기동 후 조회되는 토픽 정보_abbf
신규 디렉토리로 조회되는 파티션 정보_abbf

 

 

 

zookeeper에서 snapshot을 통해 파티션 정보를 복구 한 것 같으나, index, log 등에 대한 실질적인 데이터 항목은 복구하지 못했다.
결론은 껍데기만 복구 한 것이다.

  - index: 기존 디렉토리의 index 파일 크기와 변경된 디렉토리의 index 파일 크기.

    index파일 사이즈가 기존파일과 달라 ./kafka-dump-log.sh 로 수행해본 결과,
    
기존 디렉토리의 index값은 조회가 돠나, 신규파일은 NoSuchElemetExcpetion(존재하지 않는 것을 가져오려 할때 발생)  리턴 됐다.

    참고로 변경 전 사용한 디렉토리의 index파일 사이즈의 조정이 있었다. dump log로는 값은 조회가 됐다.
    근데 왜인지 모르겠지만 index, timeindex파일은 파일 사이즈가 계속 늘어나는 듯한 느낌이 드는데 이것은 기분탓일까..

  - topic partition : 파티션 디렉토리는 복제 됐지만 내부 data는 복제 되지 않았다. (*.log 파일 사이즈 0)

    데이터 복제 가능성이 있다고 생각했는데, 기존 produce 된 데이터에 대한 정보는 *.log파일에 남지 않았다.
  - consumer group id : 기존 데이터에 대한 consumer group id 조회는 안됐는데, consumer group id 정보에 대한 저장이 별도로 있는지까진 확인 필요할 것 같다. 

  ** 세션이 연결 될 때마다 관리가 되는거라면 디렉토리 변경과 무관하게 아무것도 안떠있는 경우 group 정보는 안나올 것 같다는게 내 판단이다. 이건 디렉토리를 원복 하고 기동했을 때 다시 확인해보도록 한다.

신규 디렉토리로 consumer group id 조회한 내용_abbf


b1HostnameCreate 토픽은 GCP에서 클러스터링 구성 후 produce/consume 이력이 있는 파티션이다.

broker1~3번 중 1번 서버에서 확인 했으며,

해당 파티션 기준으로 /kaf_data(구) 와 /kaf_data_test(신) 의 파일 리스트에 대해 파일화 한 후 sdiff 로 확인해봤다.

더보기
구(좌/kaf_data), 신(우/kaf_data_test) 의 토픽 파티션 디렉토리 내 파일 내용 비교_abbf

 

consume 파티션에서 가져간 offset (__consume_offsets) 같은 경우,
기존 /kaf_data 디렉토리 사용 시 consumer_group_id 테스트로 consumer_offsets 40번째 파티션에 데이터가 있지만,
/kaf_data_test 에서는 consumer_offsets 안에 데이터가 없다.

더보기
consumer_offsets 에 대한 비교_abbf

2. topic 신규 생성

토픽은 신규 디렉토리로 정상적으로 생성 완료 되었다.

기존 디렉토리에서는 조회가 되지 않았다

### 추가 진행 테스트 시 기존 데이터 디렉토리 복구하면 생기지 않을까?

신규 topic 생성 및 구 디렉토리와 비교_abbf

 


3. data produce & consume

3-1. 기존 데이터에 대해 consume이 가능 여부

  → kafka에서 현재 바라보고 있는 data가 신규 데이터 영역이고, 복제된 파티션 내 로그데이터 정보는 없기 때문에 기존 데이터의 consume은 불가능하다.

 

3-2. 기존에 생성한 topic에 대해 데이터 produce & consume 가능 여부

 1> topic partitions :  데이터는 정상적으로 인입. 전부 offset이 0부터 시작함.

                                  따라서 데이터는 새로운 파일에 새롭게 쓰여짐.

더보기

## topic명 : b1HostnameCreate  (기존 /kaf_data 디렉토리에서 topic produce/consume 한 디렉토리임)

broker1~3번 서버의 신규 디렉토리의 구 버전 파티션_abbf

 

 ## 데이터 정상 produce/consume 됨.

consumer group 모니터링1_abbf
consumer group 모니터링2 - 데이터 정상 처리_abbf
data dump log_abbf

 

 

☆★☆★

2> consumer partitions : 기존의 같은 consumer_offsets의 파티션에 데이터가 쓰여졌다.

     zookeeper의 snapshot의 정보가 어디까지 저장되어있는지는 모르겠으나,

     기존 b1HostnameCreate consume 시 사용 되었던 consumer_offsets의 같은 파티션에 데이터가 남아있다.
     3-3 항목을 우선적으로 테스트 하느라 현재 각 브로커별 /kaf_data_test 디렉토리에 2개의 consumer_offsets이 있는
    상황이긴 하나, b1HostnameCreate 에 대한 consumer_offsets 디렉토리는 아래와 같고, 신규 디렉토리에서 테스트 시

     동일한 디렉토리에 데이터가 생성 되는 것을 확인 했다. 

더보기
기존 (/kaf_data) 변경 (/kaf_data_test)
broker1 : __consumer_offsets-40
broker2 : __consumer_offsets-35
broker3 : __consumer_offsets-30
broker1 : __consumer_offsets-40
broker2 : __consumer_offsets-35
broker3 : 
__consumer_offsets-30


 

☆★☆★

 

3-3. 신규 topic에 대해 데이터 핸들링이 정상적으로 되는지

    producer/consumer API로 데이터 테스트 완료 하였고 정상적으로 빠져 ㅣLAG이 0임을 확인 할 수 있다.

   

  zookeeper cli 상에서도 해당 토픽이 znode에 정상적으로 등록 되어있음을 알 수 있다.

  version-2를 보존하고 디렉토리를 원복 했을때 NewDirTopic01에 대한 정보가 올라오는지 확인 해보면 될 것 같다.

zkCli check_abbf


4. 추가 진행 예정

1) 기존 /kaf_data  dir 원복 시 /kaf_data_test 에 생성된 파티션이 동일하게 복구/복제가 되는지 확인
 - 
대상 파티션명 : NewDirTopic01

2) 데이터 복구 (log, index) 여부 확인 및 data produce&consume 가능 여부 확인
 → 
아마 초기 확인처럼 껍데기만 복구가 되어 기존 데이터를 consume 할 순 없을 것 같다는 판단은 든다.

3) /kaf_data_test 에서 b1HostnameCreate produce/consume 테스트 진행 시 consumer group id 변경하면 기존 consumer_offsets 쓰는지 확인 할 것.

728x90

+ Recent posts