Compute Engine API 사용
인스턴스 만들기
연결
1) key 생성
ssh-keygen -t rsa -C "구글계정명"
2) key 등록
1) 커멘드 창
2) ssh 명령어 입력
ssh -i ~/path/to/key gmail아이디@공개ip
> sudo dnf install java-17-openjdk java-17-openjdk-devel
> java --version
openjdk version "17.0.6" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.6.0.10-3.el9) (build 17.0.6+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.6.0.10-3.el9) (build 17.0.6+10-LTS, mixed mode, sharing)
# java home 경로 확인
> ls /usr/lib/jvm/jre-17-openjdk
bin conf include legal lib release tapset
# JAVA_HOME 설정
> echo 'export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))' | sudo tee -a /etc/profile
> source /etc/profile
> echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-3.el9.x86_64
> ls $JAVA_HOME
bin conf include legal lib release tapset
1) 다운로드
> sudo dnf install -y wget
> mkdir ~/apps
> cd ~/apps/
> wget https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz
> tar -xzvf kafka_2.12-3.6.2.tgz
2) zookepper server 시작
> cd ~/apps/kafka_2.12-3.6.2
# 1) Foreground 실행 (테스트 용으로 zookeeper 로그를 직접 확인)
> bin/zookeeper-server-start.sh config/zookeeper.properties
# 2) Background 실행
> bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
> ps -ef | grep zookeeper
3) kafka server
> cd ~/apps/kafka_2.12-3.6.2
# 1) Foregroud
> bin/kafka-server-start.sh config/server.properties
# 2) background 실행
> bin/kafka-server-start.sh -daemon config/server.properties
4) kafka data 저장 경로 확인
cd ~/apps/kafka_2.12-3.6.2/cd ~/apps/kafka_2.12-3.6.2
log.dirs=/tmp/kafka-logs
에 저장되어있는걸 알 수 있음ls -al /tmp/kafka-logs/meta.properties
5) 토픽 만들기
> cd ~/apps/kafka_2.12-3.6.2
> bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
> bin/kafka-topics.sh --list --bootstrap-server localhost:9092
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
ls -al /tmp/kafka-logs/
> cd ~/apps/kafka_2.12-3.6.2
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
my message
second message
> cd ~/apps/kafka_2.12-3.6.2
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
my message
second message
ls /tmp/kafka-logs/
bin/kafka-run-class.sh kafka.tools.DumpLogSegments --deep-iteration --print-data-log --files /tmp/kafka-logs/test-0/00000000000000000000.log
1) 접속할 zookeeper 정보를 입력하여, zookeeper 내부로 접속
> cd ~/apps/kafka_2.12-3.6.2
> bin/zookeeper-shell.sh localhost:2181
Connecting to localhost:2181
Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is disabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
## Zookeeper에서 제공하는 정보 조회
ls /
[admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
## Broker 관련 정보 조회
ls /brokers
[ids, seqid, topics]
## 현재 broker 목록을 조회 (broker 0번만 존재)
ls /brokers/ids
[0]
## 0번 broker에 대한 정보 확인
get /brokers/ids/0
{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://instance-20240701-162846.asia-northeast3-b.c.beaming-grid-428115-d6.internal:9092"],"jmx_port":-1,"features":{},"host":"instance-20240701-162846.asia-northeast3-b.c.beaming-grid-428115-d6.internal","timestamp":"1719917952131","port":9092,"version":5}
## topic 정보 조회
ls /brokers/topics
[__consumer_offsets, test]
## topic 상세 정보 조회
get /brokers/topics/test
Node does not exist: /brokers/topics/test
# test topic을 삭제하지 않은 경우에는 아래와 같은 topic 정보가 출력됨
{"removing_replicas":{},"partitions":{"0":[0]},"topic_id":"ZOLr9CLNQjSW70hyIHx6BQ","adding_replicas":{},"version":3}
## controller broker 조회
get /controller
{"version":2,"brokerid":0,"timestamp":"1719917952299","kraftControllerEpoch":-1}