항해99 실전 프로젝트 (10일차)

2024. 2. 6. 15:04· 항해99
목차
  1. Docker에 Kafka 설치
  2. 토픽 생성
  3. 토픽에 이벤트 작성
  4. 토픽 읽기
  5. 카프카 통신 오류
  6. 참고 사이트
  7. Pinpoint 설치, 샘플 확인
  8. 참고 사이트

Pasted image 20240127002218.png

Docker에 Kafka 설치

ZooKeeper를 사용 안하고 KRaft를 사용하는 이유

  • 주요 아키텍처 점검을 통해 배포가 단순화되고 확장성이 향상되었으며 성능이 향상
  • KRaft(Kafka Raft metadata) 모드에서 AMQ Streams를 실행하면 Kafka 클러스터는 ZooKeeper 대신 컨트롤러의 내부 쿼럼으로 관리됩니다.

최신버전의 Kafka 기준으로 KRaft를 사용하면은 ZooKeeper를 설치를 안해도 된다.

Apache Kafka KRaft 모드 구성
KRaft 모드는 다음 값을 제공하여 활성화할 수 있습니다.

- `KAFKA_CFG_PROCESS_ROLES`: Kafka KRaft 역할의 쉼표로 구분된 목록입니다. 허용되는 값: `controller,broker`, `controller`, `broker`.
- `KAFKA_CFG_NODE_ID`: Kafka 노드의 고유 ID입니다.
- `KAFKA_CFG_LISTENERS`: Kafka 청취자의 목록입니다. 노드가 역할로 설정된 경우 `controller`리스너가 `CONTROLLER`포함되어야 합니다.
- `KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP`: 각 수신기를 Apache Kafka 보안 프로토콜로 매핑합니다. 노드에 역할이 설정된 경우 에 `controller`대한 보안 프로토콜을 할당하려면 이 설정이 필요합니다 `CONTROLLER LISTENER`. 예: `PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT`.

KRaft를 사용하기 위해 사용 할 docker-compose를 찾음

# Copyright VMware, Inc.
# SPDX-License-Identifier: APACHE-2.0

version: "2"

services:
  kafka:
    image: docker.io/bitnami/kafka:3.6
    ports:
      - "9092:9092"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      # KRaft settings
      - KAFKA_CFG_NODE_ID=0
      - KAFKA_CFG_PROCESS_ROLES=controller,broker
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
      # Listeners
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
volumes:
  kafka_data:
    driver: local

터미널에서 compose 실행

  • -f는 파일을 지정, 파일명을 docker-compose.yml로 하면 up만 사용해도 된다.
  • -d는 백그라운드에서 실행, up뒤에 작성을 한다.
docker-compose **-f** kafka-docker-compose.yml up **-d**

토픽 생성

/opt/bitnami/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

토픽에 이벤트 작성

/opt/bitnami/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

토픽 읽기

/opt/bitnami/kafka/bin/kafka-console-consumer.sh  --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

카프카 통신 오류

TimeoutException: Timed out waiting for a node assignment. Call: listNodesorg.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: listNodes

밑의 옵션에서 로컬호스트를 입력하니 연결이 됐다.

KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092 # before
KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 # after

해당 오류가 로컬인데 도커에서 아웃바운드가 안돼서 생기는 문제인지 엉뚱한 방향으로 생각을 많이 했다.
단순하게 카프카에서 docker-compose의 설정이 잘못돼서 연결이 안됐던 문제

밑의 제시하는 방법은 EXTERNAL로 외부 접근, PLANTEXT가 내부 접근으로 된다.
Pasted image 20240206210425.png

참고 : 외부 컴퓨터에서 연결하려면 localhost위를 호스트의 외부 IP/호스트 이름으로 변경하고 포함하여 EXTERNAL://0.0.0.0:9093원격 KAFKA_CFG_LISTENERS연결을 허용하세요.

참고 사이트

https://romanglushach.medium.com/the-evolution-of-kafka-architecture-from-zookeeper-to-kraft-f42d511ba242
https://access.redhat.com/documentation/ko-kr/red_hat_amq_streams/2.5/html/using_amq_streams_on_rhel/assembly-kraft-mode-str
https://github.com/bitnami/containers/tree/main/bitnami/kafka#apache-kafka-kraft-mode-configuration
https://github.com/bitnami/containers/blob/main/bitnami/kafka/docker-compose.yml
https://www.daleseo.com/docker-compose/
https://kafka.apache.org/quickstart

Pinpoint 설치, 샘플 확인

Docker Compose, Docker가 필요
밑의 명령어로 설치

git clone https://github.com/pinpoint-apm/pinpoint-docker.git
cd pinpoint-docker
docker-compose pull
docker-compose up -d

API를 전송해서 테스트 가능
http://localhost:8085/

quickapp으로 생성이 되어있음
http://localhost:8080/

REAL TIME으로 하면은 USER가 보낸 Request 개수가 실시간으로 바뀌면서 모니터링이 된다.
Pasted image 20240207002544.png

참고 사이트

https://peterica.tistory.com/398
https://hcnmy.tistory.com/5
https://guide-fin.ncloud-docs.com/docs/pinpoint-pinpoint-1-2#pinpoint-agent-설치-및-적용

'항해99' 카테고리의 다른 글

항해99 실전 프로젝트 (12일차)  (0) 2024.02.08
항해99 실전 프로젝트 (11일차)  (0) 2024.02.07
항해99 실전 프로젝트 (9일차)  (0) 2024.02.05
항해99 실전 프로젝트 (8일차)  (0) 2024.02.03
항해99 기술면접  (1) 2024.02.03
  1. Docker에 Kafka 설치
  2. 토픽 생성
  3. 토픽에 이벤트 작성
  4. 토픽 읽기
  5. 카프카 통신 오류
  6. 참고 사이트
  7. Pinpoint 설치, 샘플 확인
  8. 참고 사이트
'항해99' 카테고리의 다른 글
  • 항해99 실전 프로젝트 (12일차)
  • 항해99 실전 프로젝트 (11일차)
  • 항해99 실전 프로젝트 (9일차)
  • 항해99 실전 프로젝트 (8일차)
blablax5
blablax5
웹 백엔드취준생 입니다.
blablax5
blablax5
blablax5
전체
오늘
어제
  • 분류 전체보기 (141)
    • 개발 (39)
      • 트러블 슈팅 (25)
      • 서버 & DB (5)
      • 스프링 & 자바 (3)
      • 알고리즘 (6)
    • 스터디 (27)
      • AWS SAA (23)
      • 쉽게 배우는 운영체제 (3)
      • AWS Builders 온라인 시리즈 (1)
    • 학습부채 (0)
    • 항해99 (70)
    • 횡설수설 (3)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • AWS
  • SAA

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
blablax5
항해99 실전 프로젝트 (10일차)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.