어떻게 zookeeper 없이 카프카를 쉽게 설치할 수 있습니까

이 글은 최초로 발표되었다adityasridhar.com
본고에서 우리는 zookeeper를 사용하지 않는 상황에서 카프카를 설정하는 방법을 이해할 것이다.우리는 3 노드의kafka 그룹을 설정하고 테스트 테마를 만들 것입니다.우리는 카프카 제작자를 사용하여 테스트 주제를 위해 데이터를 생성하고 카프카 소비자들이 카프카 주제의 데이터를 사용할 것이다.

카프카가 왜 조키퍼를 사용하는지


Zookeeper는 카프카드 클러스터 메타데이터 정보를 저장하는 데 사용됩니다.Zookeeper는 테마 설정, 테마 구역 위치 등 정보를 저장합니다.

동물원 관리인이 없으면 카프카는 어떻게 일할 것인가


Zookeeper는 카프카의 외부 메타데이터 관리 시스템 역할을 합니다.이는 데이터 중복, 시스템 복잡성 증가, 추가 자바 프로세스 사용 등 여러 가지 문제를 일으킬 수 있다.
zookeeper가 없는 상태에서 kafka를 실행하기 위해서, kafka Raft 메타데이터 모드 (KRaft) 를 사용하여 그것을 실행할 수 있습니다.카프카에서 카프카원 데이터 정보는 하나의 구역으로 카프카 자체에 저장된다.메타데이터를 저장하는 컨트롤러 노드의 카프 중재가 있을 것입니다.메타데이터는 내부 카프카드 테마 @metadata에 저장됩니다.
이것은 카프카 2.8.0의 실험 모드에서 사용할 수 있다
현재 카프를 사용하는 것은 실험적이어서 생산에 사용해서는 안 된다

zookeeper가 없는 카프카 집단을 만들다


카프카드 다운로드


https://kafka.apache.org/downloads에서 카프카드 2.8.0 다운로드
wget https://apachemirror.wuchna.com/kafka/2.8.0/kafka_2.12-2.8.0.tgz
카프카를 발췌하다.
tar xzf  kafka_2.12-2.8.0.tgz
카프카 폴더를 엽니다.모든 카프카 명령은 카프카 폴더에서 실행되어야 합니다
cd kafka_2.12-2.8.0

카프카 클러스터 구성


카프카 홈 디렉터리에 있는 config/kraft 폴더로 이동하면 server.properties 라는 파일을 볼 수 있습니다.이것은 카프카가 제공한 예시 파일로, zookeeper가 없는 상황에서 카프카를 시작하는 방법을 보여 준다
서버에서 3개의 새 파일을 만듭니다.재산이것은 우리가 3 노드 그룹을 만들 것이기 때문이다
cd config/kraft
cp server.properties server1.properties
cp server.properties server2.properties
cp server.properties server3.properties
서버 1에 있습니다.다음 속성을 수정하십시오.다른 재산은 변하지 않도록 하세요.
node.id=1

process.roles=broker,controller

inter.broker.listener.name=PLAINTEXT

controller.listener.names=CONTROLLER

listeners=PLAINTEXT://:9092,CONTROLLER://:19092

log.dirs=/tmp/server1/kraft-combined-logs

listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

controller.quorum.voters=1@localhost:19092,2@localhost:19093,3@localhost:19094
이러한 속성의 역할에 대해 설명하겠습니다.
노드id: 집단 중의 노드 id로 사용할 것입니다.이것은 우리가 어느 매니저인지 확인하는 데 도움이 될 것이다.이것은 또한 우리가 이것이 어느 카프 컨트롤러 노드인지 확인하는 데 도움을 줄 것이다.
과정 1역할: 노드는 에이전트나 컨트롤러를 충당할 수도 있고 둘을 동시에 충당할 수도 있다.여기서 우리는 이 노드가 카프카 매니저일 수도 있고 카프 컨트롤러 노드일 수도 있다고 지적했다.
묻다매니저님.청중.이름: 여기 프록시 탐지기 이름이 순수한 텍스트로 설정되어 있습니다
제어기.청중.이름: 이 컨트롤러 탐지기 이름은 controller로 설정됩니다
탐지기: 에이전트는 9092, 카프 컨트롤러는 19092로
일지.dirs: 이것은 카프카가 데이터를 저장하는 로그 디렉터리입니다
청중.보안합의지도: 연결 안전 상세 정보 추가
제어기.법정 인원수.투표자: 이것은 모든 사용 가능한 카프 컨트롤러를 표시하는 데 사용됩니다.포트 19092, 19093, 19094에서 3개의 카프 컨트롤러 노드가 실행될 예정입니다.
서버 2.속성다음 속성을 수정합니다.다른 재산은 변하지 않도록 하세요.
node.id=2

process.roles=broker,controller

controller.quorum.voters=1@localhost:19092,2@localhost:19093,3@localhost:19094

listeners=PLAINTEXT://:9093,CONTROLLER://:19093

inter.broker.listener.name=PLAINTEXT

controller.listener.names=CONTROLLER

log.dirs=/tmp/server2/kraft-combined-logs

listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
서버 2에서 프록시 포트는 9093, 디렉터 포트는 19093입니다.일지도 있고.dirs는 다르다
서버 3.속성다음 속성을 수정합니다.다른 재산은 변하지 않도록 하세요.
node.id=3

process.roles=broker,controller

controller.quorum.voters=1@localhost:19092,2@localhost:19093,3@localhost:19094

listeners=PLAINTEXT://:9094,CONTROLLER://:19094

inter.broker.listener.name=PLAINTEXT

controller.listener.names=CONTROLLER

log.dirs=/tmp/server3/kraft-combined-logs

listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
서버 3에서 프록시 포트는 9094, 컨트롤러 포트는 19094입니다.일지도 있고.dirs는 다르다

전체 서버 등록 정보 파일은 Git repo에서 사용할 수 있습니다.


Kafka 클러스터 id 생성 및 로그 디렉토리 설정


우선, 서버를 시작하기 전에kafka 집단 id를 만들어야 합니다.다음 명령을 사용하여 작업을 완료할 수 있습니다.
./bin/kafka-storage.sh random-uuid
상기 문장을 실행한 후 나타나는 uid를 기록합니다.나로서는 다음과 같은 uid를 얻었다
 ./bin/kafka-storage.sh random-uuid
 9dJzdGvfTPaCY4e8klXaDQ
다음에 우리는 모든 저장 디렉터리를 포맷해야 한다.이것은 기본적으로 우리가 로그에 넣은 목록이다.dirs 속성
이것은 아래 명령을 통해 완성할 수 있다
./bin/kafka-storage.sh format -t <uuid> -c <server_config_location>
이전 단계에서 얻은 uid로 바꾸기 <uuid>.서버 속성 파일로 바꾸기<server_config_location>나의 예에서, 나는 아래의 명령을 실행할 것이다
서버 1의 경우:
./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server1.properties
서버 2의 경우:
./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server2.properties
서버 3의 경우:
./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server3.properties
이것은 이 세 명령을 실행할 때 얻은 결과이다
$ ./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server1.properties
Formatting /tmp/server1/kraft-combined-logs
$ ./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server2.properties
Formatting /tmp/server2/kraft-combined-logs
$ ./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server3.properties
Formatting /tmp/server3/kraft-combined-logs

카프카 서버 시작


다음 명령을 사용하여 데몬 모드에서 kafka 서버를 시작할 수 있습니다.
우선 쌓기 속성 설정
export KAFKA_HEAP_OPTS="-Xmx200M –Xms100M"
여기에서 우리는 로컬 기기에서 모든 서버를 운행하기 때문에 매우 작은 200M을 제시했다.만약 더 큰 서버가 있다면, 1GB 이상을 쌓아 줄 수 있다.
서버 1을 시작합니다.
./bin/kafka-server-start.sh -daemon ./config/kraft/server1.properties
서버 2를 시작합니다.
./bin/kafka-server-start.sh -daemon ./config/kraft/server2.properties
서버 부팅 3:
./bin/kafka-server-start.sh -daemon ./config/kraft/server3.properties

카프카 테마 만들기


이 그룹에서 테마 카프 테스트를 만듭니다
다음 명령을 사용하여 주제를 만들 수 있습니다.
./bin/kafka-topics.sh --create --topic kraft-test --partitions 3 --replication-factor 3 --bootstrap-server localhost:9092
세 개의 노드가 있기 때문에 세 개의 구역과 세 개의 던전을 포함하는 테마를 만들고 있습니다.
다음 명령을 사용하여 클러스터의 주제를 나열할 수 있습니다.
bin/kafka-topics.sh --bootstrap-server localhost:9093 --list
상술한 명령을 실행하면 다음과 같은 결과를 얻을 수 있다
$ bin/kafka-topics.sh --bootstrap-server localhost:9093 --list
kraft-test
다음 명령을 사용하여 클러스터의 주제를 설명할 수 있습니다.
bin/kafka-topics.sh --bootstrap-server localhost:9093 --describe --topic kraft-test
상술한 명령을 실행하면 다음과 같은 결과를 얻을 수 있다
$ bin/kafka-topics.sh --bootstrap-server localhost:9093 --describe --topic kraft-test
Topic: kraft-test       TopicId: vZKswHHlQk2mEOw0yzAGAA PartitionCount: 3       ReplicationFactor: 3    Configs: segment.bytes=1073741824
        Topic: kraft-test       Partition: 0    Leader: 3       Replicas: 3,2,1 Isr: 3,2,1
        Topic: kraft-test       Partition: 1    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1
        Topic: kraft-test       Partition: 2    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1

메타데이터 케이스로 카프카 메타데이터 탐색


zookeeper cli와 유사하게, kafka는 @metadata 내부 테마의 데이터를 읽을 수 있도록 메타데이터 셸을 제공합니다.
다음 명령을 사용하여 셸을 엽니다
./bin/kafka-metadata-shell.sh  --snapshot /tmp/server1/kraft-combined-logs/\@metadata-0/00000000000000000000.log
여기 구조가 저희가 조키퍼에서 봤던 거랑 되게 비슷해요.
입력할 수 있는 매니저를 순서대로 나열합니다ls brokers/.
>> ls brokers/
1  2  3
입력할 수 있는 테마를 표시하기 위해서 ls topics/
>> ls topics/
kraft-test
주제 메타데이터를 보려면 cat topics/kraft-test/0/data를 입력합니다.
>> cat topics/kraft-test/0/data
{
  "partitionId" : 0,
  "topicId" : "vZKswHHlQk2mEOw0yzAGAA",
  "replicas" : [ 3, 2, 1 ],
  "isr" : [ 3, 2, 1 ],
  "removingReplicas" : null,
  "addingReplicas" : null,
  "leader" : 3,
  "leaderEpoch" : 0,
  "partitionEpoch" : 0
}
컨트롤러 지시선 노드를 찾으려면 cat metadataQuorum/leader를 입력합니다.
>> cat metadataQuorum/leader
MetaLogLeader(nodeId=2, epoch=4)
메타데이터 셸을 종료하려면 exit를 입력합니다.

카프카 데이터 제작 및 사용


다음 명령을 사용하여 터미널에서 카프카 제작자를 시작합니다
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kraft-test
다른 단말기에서 다음 명령을 사용하여 카프카 소비 프로그램을 시작합니다
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kraft-test
Producer 단말기에서 다음과 같은 메시지를 보냅니다
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kraft-test
>message 1
>message 2
>message 3
>hello
>bye
소비자 단말기에서 귀하는 아래와 같은 소식을 보실 수 있습니다
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kraft-test                                                                       
message 1
message 2
message 3
hello
bye

축하하다.😊


너는 이제 zookeeper가 없는 상황에서 카프카드를 설치하는 법을 배웠다.이것은 여전히 실험 특성이므로 생산에 사용해서는 안 된다.

카프카와 아파치피노를 이용한 실시간 분석에 관심이 있다면 아래 그림을 클릭하여 제가 Udemy에서 배운 과정을 보십시오



도구책


https://kafka.apache.org/
https://cwiki.apache.org/confluence/display/KAFKA/KIP-500

언제든지 저에게 연락하거나 따라오세요.

좋은 웹페이지 즐겨찾기