일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ProjectLoom
- kafka
- Reactive
- spring
- Mirror
- NoClassDefFoundError
- Brooklin
- JVM
- 비동기
- OFFSET
- Reassign
- broker
- swagger
- restdocs
- VictoriaMetrics
- OpenJDK
- springboot
- java
- Zookeeper
- Vmalert
- ExecutableJar
- API문서
- JDK
- webflux
- tsdb
- raft
- Rebalance
- Vmagent
- consumer
- Today
- Total
목록 Kafka (12)
거북이 developer
💬 Kafka 와 Zookeeper 의 관계? 떼려야 뗄 수 없는 관계다. Kafka 는 Zookeeper 를 통해 필요한 Metadata 를 안전하게 저장하고 Cluster 운영을 위한 리더 및 파티션 오너를 선출하고 있다. 이러한 관계로 Kafka 를 운영하기 위해서는 반드시 Zookeeper 가 구축되어야 하고 운영단계에서는 Kafka 가 사용하는 Zookeeper 를 다른 솔루션과 함께 사용하지 말라고 권장하고 있다. 💬 Kafka 는 왜 Zookeeper 와 헤어지려고 하는가? 다음과 같은 몇가지 이유가 있다. 1️⃣ Kafka 를 쓰려면 Zookeeper 도 같이 알아야 한다. - 처음 Kafka 를 배우는 입장에서는 동시에 2가지의 솔루션을 배워야 한다는 것에 진입장벽을 느낄 수 있다. - ..
최근에 흥미로웠던 LinkedIn 에서 Brooklin 을 활용한 Mirror Maker 를 소개하고자 한다. 현재 Kafka Cluster 간 Message 를 Mirroring 하는 방법은 다양하다. 대표적으로 Mirror Maker 라는 오픈소스가 있고(이건 v2 가 release 되었다), Kafka Connector 나 오늘 소개할 Brooklin, 그리고 직접 Consumer 와 Producer 를 구현해서 만들수도 있다. 필자가 Kafka Mirroring 과 관련된 모든 오픈소스를 확인해본건 아니지만, 적어도 위에서 언급한 방법들에 대해서만 한정하자면 모두 공통적으로 Source Cluster 에서 message 를 Consuming 하고, 이를 Target Cluster 로 Publish..
1. Zookeeper 구축 1) Zookeeper 설치 https://archive.apache.org/dist/zookeeper/ 경로에서 원하는 버전의 zookeeper 를 다운받는다. 다운받은 zookeeper 압축파일을 원하는 경로에 해제한다. 2) Zookeeper 설정 zookeeper configuration 을 참고하여 zookeeper 설정 파일을 정의한다. cluster 로 구축해야하므로 설정파일에 zookeeper 로 구축할 각 서버정보를 아래와 같이 정의한다. server.{zookeeper-1.serverId}={zookeeper-host1}:{follower-port}:{leader-election-port} server.{zookeeper-2.serverId}={zookeep..
필요한 상황 Consumer 에 이슈가 발생해서 특정 시점으로 offset 을 돌려서 다시 읽고 싶어요. 지금까지 읽었던 메세지를 다시 읽게 하고 싶을 경우? 사전 확인 사항 - offset 을 어디까지로 reset 할지 확인 특정 offset 으로 reset 을 하고 싶다면 Consumer 에서 남긴 로그를 통해 각 파티션별 reset 하고자 하는 offset 값을 알아야 한다. 특정 시점으로 reset 을 하고 싶다면 reset 하고자 하는 시점을 'yyyy-MM-ddTHH:mm:SS.sss' 포맷으로 정의한다. - 경우에 따라 메세지 처리가 중복으로 발생할 수 있는데 이때 이슈가 없는지 확인한다. 이슈가 없다면 상관없지만 이슈가 있을 경우 Consumer 로직에서 중복처리를 하지 않도록 수정작업이 ..
필요한 상황 신규 broker 장비 추가 broker 장비 이전 특정 토픽을 특정 노드에서만 운영하고 싶을 때 실행 방법 kafka bin 디렉토리 하위에 있는 kafka-reassign-partitions.sh 스크립트를 사용 이동시킬 topic 이 무엇인지 json 포맷으로 정의 예) example-to-move.json {"topics":[{"topic": "example1"},{"topic": "example2"},{"topic": "example3"}],"version":1} --topics-to-move-json-file 옵션으로 위에서 생성한 json 파일을 지정하고, --generate 옵션을 통해 이동시킬 broker 에 대한 파티션 설정값을 자동으로 생성 $ bin/kafka-reass..
내용 정리 Kafka Broker 로그에 간혹가다 아래와 같은 ERROR 로그가 발생한다. ERROR [ReplicaManager broker=23] Error processing append operation on partition test-8 (kafka.server.ReplicaManager) org.apache.kafka.common.errors.OutOfOrderSequenceException: Invalid sequence number for new epoch: 3 (request epoch), 4 (seq. number) ERROR [ReplicaManager broker=22] Error processing append operation on partition test-55 (kafka.s..
개요 및 고려 사항 SCRAM (Salted Challenge Response Authentication Mechanism) 또는 SASL / SCRAM은 PLAIN과 같은 사용자 이름 / 암호 인증을 수행하는 기존 메커니즘의 보안 문제를 해결하는 SASL 메커니즘. Apache Kafka는 SCRAM-SHA-256 및 SCRAM-SHA-512을 지원. Kafka의 SCRAM 구현은 ZooKeeper에 SCRAM 자격 증명을 저장하기 때문에 ZooKeeper가 개인 네트워크에 있을때 사용하는것을 권장 runtime 으로 zookeeper 에 사용자에 대한 SCRAM 자격 증명을 생성할 수 있다. super user 생성 ${KAFKA_HOME}/bin/kafka-configs.sh 를 통해 super u..
개요 Broker 에 아래와 같이 Warn Level 로그가 남겨짐 [2020-07-30 12:40:03,237] WARN [LeaderEpochCache message_action-46] New epoch entry EpochEntry(epoch=27, startOffset=0) caused truncation of conflicting entries ListBuffer(EpochEntry(epoch=26, startOffset=0)). Cache now contains 1 entries. (kafka.server.epoch.LeaderEpochFileCache) 해당 로그가 왜 남겨지고, 해소할 방법은 없는지 탐색. 원인 파악 해당 로그는 partition leader 에 대한 epoch 값이 변경될..