Code Monkey home page Code Monkey logo

simple-kafka-deploy's People

Contributors

yunanjeong avatar

Watchers

 avatar

simple-kafka-deploy's Issues

3 노드 미만으로 실행시 비정상 동작 문제

이슈 내용

  • 브로커 1~2개로 실행시, 커넥트에 커넥터 등록할 때 timeout이 발생한다.
  • 다음 토픽들의 replication.factor와 브로커 수가 맞지 않아서 발생한다.
  • __consumer_offsets (기본 internal topic)
  • connect-offset, connect-config, connect-status (커넥트를 브로커와 연결시 기본 생성 topic 3종)

설명

  • 3노드 미만 시 이슈는 대부분 replication.factor와 관련 있다. 기본적으로 클러스터 시스템은 3노드 이상을 상정하기 때문에, default 3개로 설정되어있는 경우가 많다. 문제는 replication.factor와 관련된 옵션설정이 broker, connect, connector 곳곳에 있어서 정확히 문제되는 옵션을 찾기가 힘들다. 에러 로그를 유심히 관찰하자.

__consumer_offsets

  • server.propertiesoffsets.topic.replication.factor 값 체크
    • 브로커 수와 같거나 작게 설정
    • bitnami/kafka 차트의 value에서 extraConfig 섹션으로 server.properties에 내용 추가 가능

connect-offset, connect-config, connect-status

  • connect-distributed.propertiesoffset.storage.replication.factor 값 체크
    • 브로커 수와 같거나 작게 설정
  • connect-distributed.propertiescleanup.policy 값 체크
    • 일반적인 topic들의 기본 설정은 cleanup.policy=delete 인데 (조건 만족시 완전삭제)
    • 커넥트용 토픽들은 cleanup.policy=compact로 해줘야 정상 동작한다. (어떤 key에서 가장 오래된 value만 삭제. 최근껀 남김)
    • 보통 배포용 커넥트 차트에선 compact로 설정되어있기 때문에 문제없다.

헬름의 value 파일에서 헬름 내장 객체 호출 하기

헬름의 value 파일에서 헬름 내장 객체( {{ .Release.Name}} 같은 것 ) 호출 하기

value파일에서 기본적으로 내장 객체를 부를 수는 없다.

  • kafka-connect 차트는 기본 지원하는데, kafka-ui는 지원하지 않음
  • configmap 템플릿에서 tpl 함수를 써야하는 것으로 보인다.
  • 기존 kafka-ui를 수정하기는 좀 그러니까 상위차트에서 override 하는 방식으로 시도 해봐야겠다.

커넥트 설정 자동화

커넥트 설정 자동화 하기

설정할 커넥터가 수십 수백개 될 경우 수작업하기가 번거로울 수 있다.
Connector as Code가 되면 좋을듯하다.
커넥터에 PUT 요청(업데이트)이 잘 안먹었는데, 최근 Apache Kafka 3.6에서 커넥터 관련 패치가 있는 것 같았다.

고려사항

  • 차트에 합칠것인가
  • 별도의 커넥트 설정 자동화 앱을 만든 후 불러와서 사용할 것인가?
  • 오프라인 환경에서도 가능하게 할 것인가

Kafka 차트 버전 업

zookeeper를 끄고 Kraft모드 사용이 default가 됨에 따라, 네트워크 연결 또는 기타 이슈로 차트 버전이 급변하는 중이다.

Apache Kafka 앱과 bitnami/kafka 차트가 어느 정도 안정화될 때 버전을 교체하자.

지금은 어떻게든 네트워크 외부연결이 되도록 value를 설정해두었으나 임시방편에 가깝다.
현재는 replica 개수를 늘리거나, 네트워크 옵션을 조정할 때 여전히 이슈가 발생하는 중이다.

connect 추가하기

방법1

직접 만들기

방법2 Licenseware Helm Chart

  • 장점: Helm hub에 있음. kafka broker 실행도 가능함.
  • 단점: 배포자인 licenseware가 너무 영세한 기업. 최근 업데이트 한달전
  • 이미지: confluent 것을 사용, 단 이미지 선택가능
  • 차트: (https://artifacthub.io/packages/helm/licenseware/kafka-connect)
  • 커넥터 설치방법:
    1. 볼륨마운트
    2. 이미지는 중. value파일=>initContainer=>confluent-cli로 원하는 커넥터를 설치할 수 있음

등등..

방법3

이미지: (https://hub.docker.com/r/confluentinc/cp-kafka-connect)
차트: (https://github.com/confluentinc/cp-helm-charts/blob/master/charts/cp-kafka-connect/README.md)
장점: confluent
단점: 커넥트 차트를 깃허브로만 제공하긴하는데 최근 업데이트 2년전

  • 커넥터 설치방법
    1. 볼륨 마운트
    2. 커스텀스크립트로 자동화된 설치 가능 등등...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.