Giter Site home page Giter Site logo

kafka2's People

Contributors

jjangga0214 avatar onlybooks avatar peterko5236 avatar soonyubi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

kafka2's Issues

snapshot 파일관련 질문입니다!

책 p166을 통해 중복 없는 전송을 실습하고 있습니다!
snapshot 파일이 생성되어야하는데 확인할 수 없습니다ㅠ
메시지 전송 후 /data/kafka-logs/test04-0/에 index, timeindex, log, leader-epoch-checkpoint 4개의 파일만 찾을 수 있었습니다.
그래서 다른 브로커를 확인해봤지만 없었습니다
test04토픽의 리더브로커를 인스턴스 중지 후 재실행(ansible인스턴스에서 kafka실행)하고 모든 브로커를 확인했지만 snapshot파일이 생성되지않았습니다.

따로 확인할 부분이 있을까요?

실습하고있는 환경은 AWS이며 총 7대의 ec2(ansible, kafka3대, zookeeper3대)를 띄운채 실습중입니다!

334p 오타인 건가요??

참고란 에서 사용할 서버의 IP와 호스트를 ... 
...
peter-kafka03:172.31.8.78
peter-zk03: 172.31.3.173
...

중간 문단에서, 여기서는 실습에서 사용하는 서버를 최소화하고자 카프카가 설치된 peter-kafka03(172.31.3.173 ) ...

참고란에서는 peter-kafka03의 ip는 172.31.8.78 로 나와있어서요. 그 이후 실습 커맨트 라인도 호스트가 zk03의 ip로 되어있긴 합니다

정확히 한번 전송 실습과 관련하여 질문이 있습니다.

책 p179부분에서 나왔던 내용입니다.

jar를 실행해서 메시지 전송 후 consumer가 메시지받은 것까지 확인을하고 트랜잭션 로그도 확인했습니다.
근데 kafka-logs에 test05-0디렉토리랑 그 하위의0000.log파일이 생성되어있지않았습니다.

따로 놓친 부분이 있을까요?


실습을 끊어서 하다보니 자동 토픽생성이 되었습니다. 그래서 log파일이 생성되지 않았던 것 같습니다

`leader-epoch-checkpoint` 파일 내용의 포맷에 대한 질문



1. 서론

안녕하세요. 작가님 책을 읽으면서 카프카에 대해 깊게 개념을 이해하고 있는 중입니다.
책을 보는 도중 설명이 나오지 않는 부분이 있어서 이렇게 깃허브 이슈를 등록해서 여쭤보고자 합니다.

2. 질문

2.1. 질문에 대한 정보

  • 펴낸날 : 2021년 10월 29일 초판 1쇄 / 2022년 1월 14일 2쇄 발행
  • 관련 목차 : 4.1.5 리더에포크와 복구
  • 질문에 해당하는 페이지 : 137

2.2. 질문 내용

리더를 선출할 때마다 leader epoch가 증가하고, leader-epoch-checkpoint 파일 내용에 오프셋 내용이 덧붙여지는 것은 이해했습니다.
아래는 책에 나온 leader-epoch-checkpoint 파일 내용입니다. (일부러 장애를 발생시켜 리더를 선출시킨 상황)

0
3
0 0
1 1
2 2

두 번째 라인 의 값인 3은 현재 leader epoch 번호이고,
그 아래부터는 leader epoch 값에 따라 당연히 세 줄이 추가되었고, 여기부터는 2개의 열로 다음에 받을 오프셋 위치 등이 기록됩니다.

제가 이해가 안가는 것은 첫 번째 라인 입니다.
이 값은 계속 0으로 고정되어 있고, 책에는 이 부분에 대한 설명을 찾을 수 없었습니다.
구글에 검색하면 2개의 열과 오프셋에 대한 내용 뿐이라서 어쩔 수 없이 직접 Apache Kafka 깃허브의 소스를 보게 되었습니다.

아래는 leader-epoch-checkpoint 파일 생성과 관련된 Kafka 3.4.0scala, java 파일입니다.

위 내용을 요약하자면,

  • CheckpointFile.javawrite() 메소드에서 epoch와 collection 등을 받아서 파일을 기록하고 있습니다.
  • 첫 번째 라인은 버전.
  • 두 번째 라인은 collection의 사이즈. 즉, 현재 leader epoch의 번호
  • 세 번째 라인부터는 루프로 collection에서 오프셋 등을 기록합니다.

사실 분석하지 않아도 친절하게 LeaderEpochCheckpointFile.scala의 55~65 라인에 파일 내용에 대해서 주석을 달아주었는데요.

/**
 * This class persists a map of (LeaderEpoch => Offsets) to a file (for a certain replica)
 *
 * The format in the LeaderEpoch checkpoint file is like this:
 * -----checkpoint file begin------
 * 0                <- LeaderEpochCheckpointFile.currentVersion
 * 2                <- following entries size
 * 0  1     <- the format is: leader_epoch(int32) start_offset(int64)
 * 1  2
 * -----checkpoint file end----------
 */

여기서 말하는 첫번째 라인에 해당되는 LeaderEpochCheckpointFile.currentVersion이 무엇을 뜻하는지 도무지 이해가 가지 않습니다.
이것을 대충 건너뛰고 다음 장으로 넘어가고 싶은데
이 값이 무엇이기에 epoch checkpoint 파일에 기록할 만큼 중요한 것인가 하는 마음에 진도를 나가지 못하겠더라구요.

3. 마무리

제가 얼마나 이 궁금증을 해소하고 싶은지 담고 싶어 내용이 조금 길어지게 되었습니다.
이 부분에 대해 알려주신다면 정말 감사히 읽어보도록 하겠습니다.
감사합니다.

211p 오타 제보

기존
COOPEPARTIVE 프로토콜

수정
COOPERATIVE 프로토콜

오타 제보드립니다.

2장 환경 구성 관련 문의드립니다.

안녕하세요. 먼저 좋은 책 써 주셔서 감사합니다. 덕분에 열심히 공부하고있습니다.

책 초반부 실습 환경 설정중에 문제가 있어서 구글링을 해보아도 초보자인 저에겐 좀 여려운 부분이라서 이렇게 이슈 만듭니다.
AWS 환경에서 설정하여 실습을 진행중에 있습니다.

설치는 완료하였고 첫 토픽 생성을 위하여

/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server peter-kafka01.foo.bar:9092 --create --topic peter-overview01 --partitions 1 --replication-factor 3
를 실행하였습니다.
그랬더니 아래와 같은 오류가 나오면서 실행이 불가능합니다.

WARN Couldn't resolve server peter-kafka01.foo.bar:9092 from bootstrap.servers as DNS resolution failed for peter-kafka01.foo.bar (org.apache.kafka.clients.ClientUtils)
Exception in thread "main" org.apache.kafka.common.KafkaException: Failed to create new KafkaAdminClient
	at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:499)
	at org.apache.kafka.clients.admin.Admin.create(Admin.java:63)
	at kafka.admin.TopicCommand$AdminClientTopicService$.createAdminClient(TopicCommand.scala:216)
	at kafka.admin.TopicCommand$AdminClientTopicService$.apply(TopicCommand.scala:220)
	at kafka.admin.TopicCommand$.main(TopicCommand.scala:57)
	at kafka.admin.TopicCommand.main(TopicCommand.scala)
Caused by: org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootstrap.servers
	at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:89)
	at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:48)
	at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:455)
	... 5 more

peter-kafka01 ~ 03 모두 시도 하여보기도하고, 재설치도 하여보았으나 동일하게 나오는 오류를 해결할 수 없었습니다.
관련하여 앞부분에서 제가 놓친것이 있는지 확인도 해보았으나 발견하지 못했고,
오류를 기반으로 구글링도 해 보았으나 적절한 답변을 찾지 못했습니다.
어떤부분이 문제인지 알려주신다면 감사하겠습니다.

감사합니다.

안녕하세요 최근에 실전 카프카 개발부터 운영까지 구입 후 공부하는 도중 이해가 안되는 부분이 있어 올립니다.

P134 리더에포크 설명 부분 중 브로커1과 3이 있었고 현재 오프셋0번에 message1번이 저장되어 있는 그림 4-18을 보며 리더에포크체크포인트를 cat으로 본 결과 리더에포크번호 1과 리더에포크 번호 0 오프셋 번호 0 으로 되어있는걸 확인이 됩니다. 여기 부분까지는 이해가 되는데 이해가 안되는 부분이 브로커1을 죽이고 브로커3이 새 리더파티션으로 되었을때 다시한번 체크포인트를 확인해보면 리더에포크 번호가 2 , 리더에포크 번호 1 오프셋번호 1로 변경이 되어있는걸 확인이 되는데 오프셋 번호는 왜 1로 바뀌는건가요 ? 그림 예제에서는 새리더 파티션이 프로듀서한테 메시지 요청을 해서 1로 바뀐건가요 ? 그림 예제에는 그런 말이 없이 바로 1로 바뀌어 있어 헷갈립니다.

page 78 - 참고 부록

참고 쪽에

kafka 쉘 스크립트에 대한 설명이 나오는데
2~3 번쨰 스크립트 내용을 보시면

kafka-console-producer.sh : 토픽으로 메시지를 전송하기 위해 사용함. ~ 다양한 프로듀서 옵션 적용 가능
kafka-console-producer.sh : 토픽으로 메시지를 가져오기 위해 사용함. ~ 다양한 컨슈머 옵션 적용 가능

부분에서

밑 부분을 수정해야 할 것 같습니다.
kafka-console-producer.sh -> kafka-console-consumer.sh

7장 카프카 운영과 모니터링, docker를 활용한 프로메테우스와 그라파나 설치 관련

안녕하세요, '실전 카프카 - 개발에서 운영까지'를 읽으며 실습하다가 제 수준으로는 원인을 찾을 수 없는 오류를 만나서 질문드립니다.

7장 카프카 운영과 모니터링에 관한 실습을 진행하며 프로메테우스와 그라파나를 설치하는 부분에서,
peter-ansible01.foo.bar:3000 사이트에 접속할 수 없습니다.
docker ps 명령어로 확인한 결과 프로메테우스와 그라파나 모두 ports가 공백으로 나오구요.

과정은 이렇습니다.

sudo docker run -d --network host -p 9090:9090 -v .../.../prometheus.yml:.../.../promethuse.yml --name prometheus prom/prometheus

sudo docker run -d --network host -p 3000:3000 --name grafana grafana/grafana:7.3.7

위 두 명령어로 프로메테우스와 그라파나 컨테이너를 설치했습니다.

이후 docker ps 명령어를 입력하면 프로메테우스와 그라파나 모두 PORTS가 공백으로 나왔는데, Up 상태라 되겠거니 하고 넘어갔는데요.

jmx-exporter, node-exporter 모두 카프카 클러스터에 설치 후 그라파나 웹사이트를 사용하고자 하는데

peter-ansible01.foo.bar:3000 사이트에 접속이 안됩니다.

이를 해결하기 위해 제가 알아본 것들은 다음과 같습니다.

docker version : 20.10.23이고, 그 외의 사안들은 교재와 똑같이 진행했습니다.

  1. ports가 제대로 뜨지 않는 경우를 확인하기 위해서 검색해보니,
    --network host 명령어는 호스트 서버의 포트를 사용하기 때문에 -p 포트번호:포트번호와는 어울리지 않는다고 하더라구요.
    host의 포트번호를 사용하면서 특정 포트번호를 사용한다는 옵션이 같이 붙는 게 모순이라는 의견을 봤습니다.
    따라서 --network host 옵션을 없애거나, -p 3000:3000 옵션을 없애서 다시 컨테이너를 가동하기도 해봤지만 모두 port 번호가 공백으로 나타났습니다.

(혹시 --network host와 -p 옵션을 같이 사용하신 이유가 있다면 뭔지 여쭤봐도 될까요?)

  1. 카프카 환경을 구성하는 66페이지에서 DNS 설정을 잘못했나 싶어서 모든 EC2 Instance 서버에서 hosts 파일을 확인해봤는데 배포 서버는 peter-ansible01.foo.bar 로 오타는 없었습니다.

도커를 재시작하고, 서버를 재시작하고, 컨테이너를 재시작/ 재설치해봤으나 여전히 프로메테우스와 그라파나가 구동중일 때 peter-ansible01.foo.bar:3000 페이지로는 접근이 불가능합니다.

방화벽도 꺼져 있는 상태구요.

다만, ansible01 서버의 퍼블릭 IP 주소에서 3000 포트로 접속하면 grafana 웹사이트가 뜹니다만, 이 경우에는 데이터 소스로 prometheus를 어떠한 방법으로도 등록할 수 없었습니다(http://peter-ansible01.foo.bar:9090/ , http://{배포서버의 퍼블릭IP}:9090/, http://{배포 서버의 프라이빗IP}:9090/ 등).

7장 전까지 CLI를 이용하는 실습은 모두 구현할 수 있었습니다.

아마존 EC2 Instance에서 서버 구동과 Docker를 이 책 이전에는 거의 다뤄본 적이 없었음을 감안할 때,
위와 같은 문제를 해결할 수 있으려면 어떤 것을 검색하거나 공부하는 것이 좋은지 도움을 주셨으면 좋겠습니다.
3일 정도 진도를 못나가고 있습니다.....

안녕하세요 토픽 생성과 관련하여 질문드립니다

안녕하세요!

AWS를 사용하여 EC2 온디맨드 인스턴스 환경에서 책의 예제를 실습하고 있습니다.
실습이 끝나면 인스턴스를 중지 시키고 다시 실습할때 인스턴스를 실행합니다.

Ansible을 사용하여 Kafak를 설치하고 나서는 토픽 생성 및 다른 명령들이 정상으로 동작하지만
인스턴스를 중지하고 나서 다시 인스턴스 실행 후 토픽 생성을 하면

Broker may not be available 메시지가 뜨면서 토픽 생성 및 다른 작업을 할 수가 없네요....

Ansible을 사용하여 Kafka를 재설치 하면 다시 정상적으로 동작을 하는데
매번 실습마다 Kafka를 재설치 하는 번거로움이 있어서 도움을 구하고자 질문드립니다!

스크린샷 2023-03-09 오전 8 04 55
스크린샷 2023-03-09 오전 8 15 37

토픽 생성 오류 메시지와 config/server.properties를 첨부합니다.
감사합니다

fix(appendix-c/docker): typo on ZooKeeper ports

안녕하세요?

부록 C 489 페이지(도커 부분)를 보면 다음과 같이 나와 있습니다.

스크린샷 2024-01-06 오후 4 59 07

하지만 실제 포트는 다르게 구성되어 있는 것 같습니다.

container_name: zk1
ports:
- "2181:2181"

container_name: zk2
ports:
- "2182:2182"

container_name: zk3
ports:
- "2183:2183"

감사합니다.

appendix_C cluster_zk_kafka문의

안녕하세요

https://github.com/onlybooks/kafka2/blob/main/appendix_C/cluster_zk_kafka/docker-compose.yml
관련으로 질의 드렸던 개발자입니다
바쁘실텐데 답변해 주셔서 매우 감사드립니다^^

저는 로컬에서 구동했구요. 동일하게 컨테이너는 정상적으로 다 구동되는데 (7개 다 up)
메일에 드린 내용처럼 토픽 생성시부터 에러가 발생하더라구요
혹시 토픽 생성시에 에러 발생 안하는지요?

토픽생성 command 1
docker exec -i -t kafka3 /bin/bash
kafka-topics --bootstrap-server kafka3:9092 --create --topic test --replication-factor 3 --partitions 1

토픽생성 command 2
docker exec kafka3 kafka-topics --bootstrap-server kafka3:9092 --create --topic test --replication-factor 3 --partitions 1

에러 로그
[2022-07-24 10:06:08,469] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (kafka3/192.168.144.5:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

스크린샷 2022-07-26 오후 1 47 34

스크린샷 2022-07-26 오후 1 52 20

스크린샷 2022-07-26 오후 1 46 54

감사합니다.

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.