์ํ์น ์นดํ์นด ์ค์น(kraft)
์๋ ํ์ธ์ ํฌ๋ฆฌ๋ฅ์ค์๋ผ์ด์ค์ ๋๋ค.
๋ณดํต ์ํ์น ์นดํ์นด๋ฅผ ์ฌ์ฉํ ๋, ์ฃผํคํผ์ ๊ฐ์ด ์ค์น๋ฅผ ๋ง์ด ํ๋๋ฐ
์ด๋ฒ์๋ ์ฃผํคํผ ์์ด ์คํ์ด ๊ฐ๋ฅํ ์ํ์น ์นดํ์นด 3๋ฒ์ ์ผ๋ก ํด๋ฌ์คํฐ ์ค์น์ ๋ํ ๋ด์ฉ์ ๊ธ๋ก ๋ด์๋ดค์ต๋๋ค.
๋จผ์ ์ ๋ ec2 ์ธ์คํด์ค(t2.medium) 3๊ฐ๋ฅผ ์ด์ฉํด ์งํํ์ต๋๋ค.
1. ํธ์คํธ ๋ฑ๋ก
๋จผ์ 3๊ฐ์ ec2 ์ธ์คํด์ค ์๋ฒ์ ๊ฐ๊ฐ ํธ์คํธ ๋ด์ฉ์ ๋ฑ๋กํฉ๋๋ค.
์ ๋ ec2 ์ธ์คํด์ค์์ ํ๋ผ์ด๋น IPv4 ์ฃผ์๋ฅผ ๋ณต์ฌํด ํธ์คํธ๋ก ๋ฑ๋กํ์ต๋๋ค.
ํน์ ์ธ์คํด์ค์ ์ ์ ํ ํฐ๋ฏธ๋์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด๋ ํ์ธํ ์ ์์ต๋๋ค.
hostname -i
/etc/hosts ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฑ๋กํ์ต๋๋ค.
// ํธ์คํธ ํ์ผ ์ด๊ธฐ
sudo vi /etc/hosts
// ๋ค์ ์ ๋ณด๋ค์ ์
๋ ฅ ํ ์ ์ฅ
์ธ์คํด์ค1_ip์ฃผ์ kafka01
์ธ์คํด์ค2_ip์ฃผ์ kafka03
์ธ์คํด์ค3_ip์ฃผ์ kafka02
kafka01, kafka02, kafka03 ๊ฐ์ ์ด๋ฆ์ ๊ตฌ๋ถ์ง๊ธฐ ์ํด์ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
kafka-01 / kafka001 / kafka1 ๋ฑ ๋ง์ ๋๋ ๋ค์ํ ํ์์ผ๋ก ์ด์ฉํ์๋ฉด ๋ฉ๋๋ค.
์ด์ด์ ์ ๋ ํธ์คํธ ์ด๋ฆ์ ์ค์ ํด ์ฃผ์์ต๋๋ค.
(์๋ง ์ค์ ํ ์ฌ์ ์์ ํด์ผ ๋ณ๊ฒฝ๋ ํธ์คํธ ์ด๋ฆ์ด ์ถ๋ ฅ๋ฉ๋๋ค.)
// ํธ์คํธ ์ด๋ฆ ์ค์ (๊ฐ๊ฐ ์๋ฒ์์ ๋ช
๋ น์ด ์คํ)
hostnamectl set-hostname kafka01
hostnamectl set-hostname kafka02
hostnamectl set-hostname kafka03
2. ์๋ฐ ์ค์น
๋จผ์ ์ค์น ๊ฐ๋ฅํ ์๋ฐ ๋ฆฌ์คํธ๋ฅผ ํ์ธํฉ๋๋ค.
sudo yum list | grep jdk
// ํน์ ๋ค์ ๋ช
๋ น์ด๋ ๊ฐ๋ฅํฉ๋๋ค.
yum list java*
ํ์ํ ์๋ฐ ๋ฒ์ ์ ์ค์นํ์๋ฉด ๋ฉ๋๋ค.
(์ ๋ 17๋ฒ์ ์ ์ค์นํ์ต๋๋ค.)
// corretto jdk ์ค์น
sudo yum install java-17-amazon-corretto.x86_64
// java -version
sudo yum install java-17-amazon-corretto-devel.x86_64
์ ๋๋ก ์ค์น๊ฐ ๋์๋์ง --version ์ ์ด์ฉํด ํ์ธํ์๋ฉด ๋ฉ๋๋ค.
java --version
javac --version
์ดํ Path ๋ฑ๋ก์ ์ํด ์๋ฐ๊ฐ ์ค์น๋ ๊ฒฝ๋ก๋ฅผ ํ์ธํฉ๋๋ค.
(์ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๋ก์ ์๋ฐ๊ฐ ์ค์น๋์์ต๋๋ค.)
which java
๋ค์ ๋ช ๋ น์ด๋ก Path๋ฅผ ๋ฑ๋กํฉ๋๋ค.
# ์์ ์ ์๋ฐ ๊ฒฝ๋ก๋ก ์ค์
export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64
export PATH=$PATH:$JAVA_HOME/bin
3. ์ํ์น ์นดํ์นด 3๋ฒ์ ์ค์น
์ ๋ ์ํ์น ์นดํ์นด 3.5.1 ๋ฒ์ (์ค์นผ๋ผ๋ 2.1.3 ๋ฒ์ )์ ์ค์นํ์ต๋๋ค.
(์ ํํ ๊ธฐ์ต์ ์ ์๋๋๋ฐ source ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ผ๋ฉด ์คํ ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.)
์ํ์น ์นดํ์นด๋ฅผ ์ค์นํ๊ณ ์์ถ์ ํด์ ํฉ๋๋ค.
// ํ์ผ ๋ค์ด๋ก๋
wget https://dlcdn.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz
// ์์ถ ํ๊ธฐ
tar -xvf kafka_2.13-3.5.1.tgz
์์ถ์ ํด์ ํ ํด๋๋ฅผ ์ํ๋ ๊ฒฝ๋ก๋ก ์ด๋์ํต๋๋ค.
(์ ๋ /opt ํด๋๋ก ์ด๋ํ ํ ํด๋๋ช ์ kafka ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.)
sudo mv kafka_2.13-3.5.1 /opt/
kafka_2.13-3.5.1 ํด๋ ์์ ์๋ config ํด๋๋ก ์ด๋ํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ฌ๋ฌ ํ์ผ๋ค์ ๋ณผ ์ ์๋๋ฐ ๋ค์ kraft ๋ผ๋ ํด๋๋ก ์ด๋ํฉ๋๋ค.
์ด ํด๋ ์์๋ server.properties ๋ผ๋ ํ์ผ์ด ์๋๋ฐ ํด๋น ํ์ผ์ ํ์ํ ์๋ฒ ์ ๋ณด๋ค์ ์์ฑํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
(์๋ง ์๋ฒ๋ง๋ค ๋ธ๋ก์ปค / ์ปจํธ๋กค๋ฌ ์ญํ ์ด ๋๋๋ค๋ฉด ๊ฐ๊ฐ broker.properties, controller.properties ํ์ผ์ ์์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค, ๋ค๋ง ์ ๋ ๊ฐ๊ฐ ์๋ฒ๊ฐ ๋ชจ๋ ๋ธ๋ก์ปค-์ปจํธ๋กค๋ฌ ์ญํ ์ ์ํํ ์์ ์ด๋ผ server.properties ํ์ผ์ ์์ ํ์ต๋๋ค.)
server.properties ์์ ์ค์ ํ ๋ด์ฉ์ ๋ค์๊ณ ๊ฐ์ต๋๋ค.
- node.id
- controller.quorum.voters
- listeners
- advertised.listeners
server.properties ํ์ผ์ ์ด์ด์ค๋๋ค.
vi server.properties
# ๊ฐ ์๋ฒ๋ง๋ค 1๋ถํฐ ์ซ์๋ฅผ ์ง์ . kafka01 > 1, kafka02 > 2, ...
node.id=1
# node.id@ํธ์คํธ์ด๋ฆ:9093 ํํ๋ก ๋ชจ๋ ์๋ฒ ๋ด์ฉ์ ๊ธฐ์
controller.quorum.voters=1@kafka01:9093,2@kafka02:9093,3@kafka03:9093
# localhost > ๊ฐ ์๋ฒ์ ํธ์คํธ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝ(kafka02 ์๋ฒ๋ผ๋ฉด kafka02๋ก ์์ )
listeners=PLAINTEXT://kafka01:9092,CONTROLLER://kafka01:9093
advertised.listeners=PLAINTEXT://kafka01:9092
kafka ํด๋ ์์ bin ํด๋๋ก ์ด๋ํ๋ฉด ๋ง์ ํ์ผ๋ค์ด ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค uuid ๊ฐ์ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค.
./kafka-storage.sh random-uuid
์ ์ ๊ฒฝ์ฐ, ์ด ๋๋ค uuid ๊ฐ์ ์์ฑํ๊ณ ๋ฑ๋กํ๋ ๊ณผ์ ์์ ๋ง์ด ํท๊ฐ๋ ธ๋๋ฐ์.
๊ฐ๊ฐ ์ธ์คํด์ค ์๋ฒ์์ ๋ค์ ๋ช ๋ น์ด๋ก ๋ชจ๋ ๋์ผํ ๋๋ค uuid ๊ฐ์ ๋ฑ๋กํด ์ฃผ์ด์ผ ํฉ๋๋ค.
(์ ๋ ๊ฐ๊ฐ ์๋ฒ๋ง๋ค ๋๋ค uuid๋ฅผ ์์ฑํด์ ๋ฑ๋กํ๋๋ฐ, ์ด๋ฌ๋ ํด๋ฌ์คํฐ ์ฐ๊ฒฐ์ด ๋์ง ์์์ต๋๋ค.)
./kafka-storage.sh format -t ๋๋ค_uuid -c /opt/kafka_2.13-3.5.1/config/kraft/server.properties
4. ์ธ๋ฐ์ด๋ ๊ท์น ์์
์ดํ ์ธ๋ฐ์ด๋ ๊ท์น์์ ๊ฐ๊ฐ 9092, 9093 ํฌํธ๋ฅผ ์ถ๊ฐํด ์ค๋๋ค.
5. ์คํ
๋ค์ ๋ช ๋ น์ด๋ก ์นดํ์นด๋ฅผ ์คํ/์ข ๋ฃ ํ ์คํธ๋ฅผ ์งํํ๋ค.
## ์์
/opt/kafka_2.13-3.5.1/bin/kafka-server-start.sh -daemon ./config/kraft/server.properties
## ์ข
๋ฃ
/opt/kafka_2.13-3.5.1/bin/kafka-server-stop.sh -daemon ./config/kraft/server.properties