서버 구성
Amazon Linux 2 : Kernel 54.10, 64비트
인스턴스 : t2.medium
키페어 이름 : keypair (pem형식)
Storage 1 x 50GB(GiB)
보안그룹이름 : peter-sg-kafka
유형 | 프로토콜 | 포트범위 | 소스 | |
---|---|---|---|---|
모든트래픽 | 모두 | 0-65535(전체) | 사용자지정(Custom) | 172.31.0.0/16 |
모든 TCP | TCP | 0-65535(전체) | 내 IP(My IP) |
Server | public | private | 연결 |
---|---|---|---|
kafka1 | 3.83.193.229 | 172.31.84.60 | ssh -i keypair.pem ec2-user@{public} |
kafka2 | 54.237.164.107 | 172.31.80.29 |
키페어
sudo chmod 600 keypair.pem
주의)루트유저로 변경!
#모든 프로그램 작성, 적용은 root유저에서 진행합니다
sudo su root
private IP로 dns 수정
vi /etc/hosts
#privateipv4 {TAB} 서버이름 {TAB} 서버별칭
제대로 연결되었는지는 ping
을 사용해서 확인한다
ping kafka1
ping kafka2
카프카 설치
#openjdk
yum -y install java-1.8.0-openjdk
cd /usr/local
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar zxf zookeeper-3.4.10.tar.gz
#심볼릭 링크 생성
ln -s apache-zookeeper-3.4.10 zookeeper
#심볼릭 링크 생성 확인
ls -la zookeeper
#출력값
{어쩌구 어쩌구} zookeeper -> apache-zookeeper-3.4.10
사용할 디렉토리 생성
# /data 에 생성
cd ~
#바로 위 디렉토리에서 data 만들기
mkdir -p /data
#파일에 써보기
#서버 번호에 따라서 다르게 설정해주세요. 저는 1번서버에는 1을, 2번서버에는 2를 지정했습니다
echo 1 > /data/myid
#반영하기
cat /data/myid
##출력 1 되면 성공
주키퍼 환경설정
#주키퍼의 환경설정 파일
# vi /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data
clientPort=2181
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
실행
/usr/local/zookeeper/bin/zkServer.sh start
중지
/usr/local/zookeeper/bin/zkServer.sh stop
systemd에 주키퍼 프로세스 등록하기
#systemd
#다양한 상황에 따라 효율적으로 프로세스를 관리하기 위한 방법
#systemd에 프로세스를 등록하는것
vi /etc/systemd/system/zookeeper-server.service
[Unit]
Description=zookeeper-server
After=network.target
[Service]
Type=forking
User=root
Group=root
SyslogIdentifier=zookeeper-server
WorkingDirectory=/usr/local/zookeeper
Restart=always
RestartSec=0s
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
[Install]
WantedBy=multi-user.target
#systemd에서 파일을 수정하거나 변경했다면 무조건 systemd를 재시작시켜줘야함
systemctl daemon-reload
시작
systemctl start zookeeper-server.service
부팅시 자동으로 실행될수 있도록 하는 설정
systemctl enable zookeeper-server.service
상태확인하기
systemctl status zookeeper-server.service
카프카 설치하기
wget https://archive.apache.org/dist/kafka/2.4.0/kafka_2.11-2.4.0.tgz
tar zxf kafka_2.11-2.4.0.tgz
ln -s kafka_2.11-2.4.0 kafka
#심볼릭 링크 확인
ls -la kafka
카프카 환경설정하기
#해당되는 내용만 수정한다
vi /usr/local/kafka/config/server.properties
broker.id={서버 번호에 맞게 수정}
logs.dir=/data1, /data2
zookeeper.connect=kafka1:2181, kafka2:2181
카프카 실행/중지하기
그냥 실행하는경우
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
백그라운드에서 실행하고싶은 경우
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties -daemon
카프카 중지하기
/usr/local/kafka/bin/kafka-server-stop.sh
systemd에 kafka-server.service 등록하기
#systemd
#다양한 상황에 따라 효율적으로 프로세스를 관리하기 위한 방법
#systemd에 프로세스를 등록하는것
vi /etc/systemd/system/kafka-server.service
[Unit]
Description=kafka-server
After=network.target
[Service]
Type=simple
User=root
Group=root
SyslogIdentifier=kafka-server
WorkingDirectory=/usr/local/kafka
Restart=no
RestartSec=0s
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh
/usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
#이후 확인하기
systemctl daemon-reload
systemctl start kafka-server.service
systemctl status kafka-server.service
#부팅 시 자동으로 백그라운드에 실행될수 있게
systemctl enable kafka-server.service
주키퍼, 카프카 상태확인하기 방법 netstat
#주키퍼의 포트 2181
netstat -nltp | grep 2181
#카프카의 포트 9092
netstat -nltp | grep 9092
## LISTEN 상태면 제대로 잘 살아있는것
'DATA Engineering > Kafka' 카테고리의 다른 글
Kafka 토픽 생성, 콘솔 프로듀서, 콘솔 컨슈머, 컨슈머그룹 명령어 (0) | 2022.11.08 |
---|---|
Kafka에서 서버연결해서 메세지보내기 (0) | 2022.11.08 |
Scalog 설명. 간단한 요약. (0) | 2022.11.04 |
Zero-copy 를 위한 노력. Zerializer: Towards Zero-Copy Serialization (0) | 2022.11.01 |
Kafka 파티션 갯수를 늘일수있지만, 줄일수없는 이유 : InvalidPartitionsException (0) | 2022.07.20 |