Apache Kafka Cluster ์ค์น ๋ฐ ๊ตฌ์ฑ
Confluent Platform(CP) ์ฌ์ฉ
Ubuntu 18.04 ํ๊ฒฝ์์ ์งํ
Production ํ๊ฒฝ์ ๊ฐ์ (Zookeeper 3 ๋, Broker 3 ๋, Control Center1) 1 ๋ ๊ตฌ์ฑ)
Kafka Broker 1 ๊ฐ๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ(๊ฐ๋ฐ ํ๊ฒฝ), ๋ฌด๋ฃ๋ก ๋ชจ๋ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
Broker 2๊ฐ ์ด์์ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ ๊ฒฝ์ฐ, 30์ผ ๊ธฐํ์ ๋ผ์ด์ ์ค๊ฐ ์๋ ์์ฑ
๊ณ์ ์ฌ์ฉ์ด ํ์ํ ๊ฒฝ์ฐ ๋ผ์ด์ ์ค๋ฅผ ๊ตฌ๋งคํด์ผ ํจ
OpenJDK ํน์ OracleJDK 1.8 / 1.11 ์ฌ์ฉ ๊ฐ๋ฅ(๋ณธ ๊ฐ์์์๋ 1.8 ๋ฒ์ ์ฌ์ฉ)
๋จธ์ ๊ฐ NTP ์๊ฐ ๋๊ธฐํ
https://www.confluent.io/get-startedarrow-up-right
Kafka ์ค์น๋ฅผ ์ํ OS ๊ด๋ จ ๊ตฌ์ฑ
Linux ๊ณ์ ์์ฑ
Confluent Platform(Apache Kafka)์ Linux ํ๊ฒฝ์์ ๋์ : ๊ด๋ฆฌ ํธ์์ฑ์ ์ํด ๋ณ๋์ ๊ณ์ ์์ฑ์ ๊ถ์ฅ
Copy ๊ทธ๋ฃน ์์ฑ : ์) groupadd confluent
์ฌ์ฉ์ ์์ฑ : ์) useradd - g confluent confluent
RHEL , CentOS , Debian , Ubuntu ์ง์
XFS File System ์ฌ์ฉ JDK ๊ตฌ์ฑ
OpenJDK ํน์ Oracle JDK 1.8.0_202(64bit)๋ฅผ ๋ค์ด๋ก๋๋ฐ์ ํ, ๋ก๊ทธ์ธํ ๊ณ์ ์ Home ๋๋ ํ ๋ฆฌ์ ์์ถํ์ผ์ ์ฎ๊ธฐ๊ณ ํด๋นํ์ผ์ ์์ถ์ ํด์ Linux ๊ณ์ ์ ํ๊ฒฝ๋ณ์์ Java Home ์ง์ ํ๊ณ bin ๋๋ ํ ๋ฆฌ๋ฅผ PATH์ ์ถ๊ฐ
Copy $ vi ~/ . bashrc
export JAVA_HOME =/ home / confluent / jdk1 . 8 . 0_202 #์์ถํ์ผ์ ํผ ๊ฒฝ๋ก
export PATH = ${JAVA_HOME} / bin : ${PATH}
$ vi ~/ . bash_profile
source ~/ . bashrc
$ source ~/ . bashrc #ํ๊ฒฝ๋ณ์ ์ ์ฉ Confluent Platform ์์ถ ํ์ผ์ ์์ถ ํด์
Confluent Platform ZIP ํ์ผ์ ํ ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌํ ๋ค์, ์์ถ์ ํด์
๊ณ์ ์ ํ๊ฒฝ ๋ณ์์ Confluent Platform Home์ ์ง์ ํ๊ณ bin ๋๋ ํ ๋ฆฌ๋ฅผ PATH์ ์ถ๊ฐ
Zookeeper Node ๊ตฌ์ฑ
${CONFLUENT_HOME}/etc/kafka/zookeeper.properties ํ์ผ ๋ด์ ์ค์ํ ํ๋ผ๋ฏธํฐ
Zookeeper Node๋ค์ ๊ตฌ์ฑ ํ์ผ์ด ๋์ผํด์ผ ํจ
clientPort = broker๊ฐ zookeeper์ ์ ์ํ๊ธฐ ์ํ port
dataDir ํ๋ผ๋ฏธํฐ์ ์ค์ ํ ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋์ด ์์ด์ผ ํ๋ฉฐ, Linux ๊ณ์ (confluent)์ ๋๋ ํ ๋ฆฌ์ ๋ํ ์์ ์๋ก ์ค์
server.<myid>=<hostname>:<leaderport>:<electionport>
myid : ์๋ฒ์๋ณ๋ฒํธ โ dataDir์ โmyidโ๋ผ๋ ์ด๋ฆ์ ํ์ผ์ ์์ฑํ๊ณ myid ๊ฐ(์, 1 ๋๋ 2 ๋๋ 3)์ ์
๋ ฅ ํ ์ ์ฅ
hostname : DNS ๋๋ /etc/hosts ์ ๋ฑ๋ก๋ zookeeper node์ hostname
leaderport : Follower๊ฐ Leader์ ์ฐ๊ฒฐ๋๋๋ฐ ์ฌ์ฉ (๋ชจ๋ zookeeper node ๊ฐ ์ฐ๊ฒฐ๋์ด์ผ ํจ)
electionport : Zookeeper Leader ์ ์ถ์ ์ฌ์ฉ (๋ชจ๋ zookeeper node ๊ฐ์ ์ฐ๊ฒฐ๋์ด์ผ ํจ)
Broker Node ๊ตฌ์ฑ
${CONFLUENT_HOME}/etc/kafka/server.properties ํ์ผ ๋ด์ ์ค์ํ ํ๋ผ๋ฏธํฐ
zookeeper.connect : Broker์์ Zookeeper ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ํ๋ผ๋ฏธํฐ zookeeper1:2181์์ zookeeper1์ DNS ๋๋ /etc/hosts ์ ๋ฑ๋ก๋ zookeeper node์ hostname
broker.id : ์ ์๋ก ํํ๋๋ ์ซ์ : ๊ฐ์ Kafka cluster ๋ด์ Broker๋ค์ ์๋ก ๋ค๋ฅธ ๊ณ ์ ํ broker.id๋ฅผ ๊ฐ์ ธ์ผ ํจ
log.dirs ํ๋ผ๋ฏธํฐ์ ์ค์ ํ ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋์ด ์์ด์ผ ํ๋ฉฐ, Linux ๊ณ์ (confluent)์ ๋๋ ํ ๋ฆฌ์ ๋ํ ์์ ์๋ก ์ค์
listeners : Broker๊ฐ ์์ ํ URI์ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก broker1์ DNS ๋๋ /etc/hosts ์ ๋ฑ๋ก๋ broker1 node์ hostname kafka client๊ฐ Broker node์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ ์ ๋ณด
Control Center Node ๊ตฌ์ฑ
${CONFLUENT_HOME}/etc/confluent-control-center/control-center-production.properties ํ์ผ ๋ด์ ์ค์ํ ํ๋ผ๋ฏธํฐ
๊ฐ๋ฐ ํ๊ฒฝ: 1๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
์ด์ ํ๊ฒฝ: 2๋ ์ด์ Machine์์ ์ค์น,๊ตฌ์ฑ ๊ถ์ฅ(HA ๋ชฉ์ )
Control Center๋ Zookeeper ๋ฐ Broker์ ๋ณ๊ฐ์ ๋จธ์ ์ ์ค์น, ๊ตฌ์ฑํด์ผ ํจ
Zookeeper ์คํ (3 ๋์ Zookeeper Node์์ ์คํ)
2. Kafka Broker ์คํ (3 ๋์ Broker Node์์ ์คํ)
3. Control Center ์คํ (1 ๋์ Control Center Node์์ ์คํ)
nohup ์คํฌ๋ฆฝํธ ์์ฑ ๋ฐ ์คํ
no hangups ๋ผ๋ ์๋ฏธ๋ก, Linux/UNIX ์์ Shell Script ๋ฅผ ๋ฐ๋ชฌ ํํ๋ก ์คํ์ํค๋ ๋ช
๋ น์ด.
๋ณ๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑ ํ nohup ๋ช
๋ น์ด script๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅ
ex)
start_[์คํํ component ๋ช
].sh
stop_[์คํํ component ๋ช
].sh
log_[์คํํ component ๋ช
].sh
๊ฐ script๋ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์คํํ๋ ๊ฐ ๋จธ์ ์์๋ง ์์ฑ(์, Broker ๋จธ์ ์๋ Broker์ฉ ์คํฌ๋ฆฝํธ๋ง ์์ฑ)
confluent ๊ณ์ ์ Home ๋๋ ํ ๋ฆฌ์์ bin ํด๋ ์์ฑ ํ bin ํด๋๋ก ์ด๋, ์์ฑ ํ ์คํ๊ถํ ๋ถ์ฌ
์คํ ๊ถํ ๋ถ์ฌ (start ์คํฌ๋ฆฝํธ์ ์)
Zookeeper์ฉ Start nohup ์คํฌ๋ฆฝํธ
Zookeeper์ฉ Start nohup ์คํฌ๋ฆฝํธ
Zookeeper์ฉ Stop nohup ์คํฌ๋ฆฝํธ
$ vi stop_zookeeper1.sh
Broker์ฉ Start nohup ์คํฌ๋ฆฝํธ
$ vi start_broker1.sh
Broker์ฉ Stop nohup ์คํฌ๋ฆฝํธ
$ vi stop_broker1.sh
Control Center์ฉ Start nohup ์คํฌ๋ฆฝํธ
$ vi start_c3.sh
Control Center์ฉ Stop nohup ์คํฌ๋ฆฝํธ
$ vi stop_c3.sh