일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- easy
- springboot
- parse
- java 11
- mac os git error
- aws
- error
- ssl프로토콜확인
- log error
- java 1.8 11
- tls프로토콜확인
- ssl이란?
- No tests found for given includes
- Java 1.8
- xcrun: error: invalid active developer path
- java 버전 변경
- mysql executequery error
- Medium
- AWS CLI
- OpenFeign
- 스프링부트테스트
- LeetCode
- JUnit
- statement.executequery() cannot issue statements that do not produce result sets.
- springboottest
- yum install java
- java
- java 여러개 버전
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- java version
- Today
- Total
쩨이엠 개발 블로그
Kafka 설치 및 실행 본문
Kafka를 설치해보기로 한다
1. JAVA 설치
일단 기본적으로 java를 먼저 깔아준다
$ sudo yum install java-1.8.0-openjdk.x86_64
2. Kafka 설치
카프카를 install하기 전에 먼저 카프카용 user를 생성한다
$ useradd kafka -m
$ passwd kafka //kafka의 비밀번호를 지정
$ sudo usermod -aG wheel kafka // 권한 지정
$ su kafka
wget으로 설치할 환경이 된다면 밑의 명령어를 쓰면 되지만
$ wget http://apache.osuosl.org/kafka/2.1.0/kafka_2.12-2.1.0.tgz
내 경우에는 wget이 안되는 경우여서 https://downloads.apache.org/kafka/2.5.1/에서 직접 다운로드를 받아 넘겨줬다
kafka압축을 풀고 디렉토리를 지정해준다
$ tar -xvzf kafka_2.12-2.5.1.tgz
$ mv kafka_2.12-2.5.1/* .
$ rmdir /home/kafka/kafka_2.12-2.5.1
kafka를 실행하기 위해서는 zookeeper 실행이 선행되어야한다
kafka를 설치하면서 같이 설치된 zookeeper의 properties를 먼저 변경해준다
3. Zookeeper 설정
config/zookeeper.properties
# 추가
initLimit=5
syncLimit=3
server.1=10.39.192.30:2888:3888
server.2=10.39.194.129:2888:3888
server.3=10.39.192.116:2888:3888
#
initLimit
제일 처음 팔로워가 리더와 연결하는 제한 시간
syncLimit
동기화 제한 시간
server 3개의 ip와 포트를 적어준다
방화벽 꼭 뚫어줄것 방화벽 안뚫어서 3일을 고생했다
server뒤의 숫자는 인스턴스 ID로 zookeeper.properties에 있는 dataDir에 myid로 명시되어있어야 한다
/tmp/zookeeper 디렉토리를 생성하고 myid를 생성해준다
#1 서버 (10.39.192.30)
$ mkdir /tmp/zookeeper
$ echo 1 > /tmp/zookeeper/myid
#2 서버 (10.39.194.129)
$ mkdir /tmp/zookeeper
$ echo 2 > /tmp/zookeeper/myid
#3 서버 (10.39.192.116)
$ mkdir /tmp/zookeeper
$ echo 3 > /tmp/zookeeper/myid
4. Kafka 설정
config/server.properties 도 변경해준다
# 1서버 (10.39.192.30)
# 수정
broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://10.39.192.30:9092
zookeeper.connect=10.39.192.30:2181,10.39.194.129:2181,10.39.192.116:2181
#추가
auto.create.topics.enable = true
delete.topic.enable= true
# 2서버 (10.39.194.129)
# 수정
broker.id=2
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://10.39.194.129:9092
zookeeper.connect=10.39.192.30:2181,10.39.194.129:2181,10.39.192.116:2181
#추가
auto.create.topics.enable = true
delete.topic.enable= true
# 3서버 (10.39.192.116)
# 수정
broker.id=3
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://10.39.192.116:9092
zookeeper.connect=10.39.192.30:2181,10.39.194.129:2181,10.39.192.116:2181
#추가
auto.create.topics.enable = true
delete.topic.enable= true
broker.id는 myid와 동일하게 맞춰준다
listeners와 advertised.listeners에 ip및 포트
zookeeper.connect에 3서버의 ip:port를 적어준다
auto.create.topics.enable이 없으면 토픽을 생성 후 publish를 해줘야한다
내 경우는 test용으로 잠시 true로 변경
delete.topic.enable이 true일 때 삭제가 가능하다
5. Zookeeper 및 Kafka 구동
세 서버의 zookeeper를 먼저 구동한다
$ bin/zookeeper-server-start.sh config/zookeeper.properties
정상적으로 구동되었다면
$ bin/kafka-server-start.sh config/server.properties
kafka도 구동이 잘 되어야 한다
보통 sh 돌리면 알아서 exit가 되어야하는데 안되니까
$ nohup bin/zookeeper-server-start.sh config/zookeeper.properties > /dev/null 2>& 1
으로 구동해준다
$ netstat -tnlp로 둘다 잘 돌아가는지 확인해준다
잘 돌아가는군
6. Topic 생성
마지막으로 테스트를 위해서 Topic을 생성한다
Topic Option은 다음과 같다
- –create : 토픽 생성
- –topic : 생성할 토픽명,
- –zookeeper : 주키퍼가 실행중인 호스트명
- –partitions : 생성할 토픽의 파티션 수
- –replication-factor : 생성항 토픽의 복사본 수 (cluster 가 떠있는 갯수 만큼 MAX)
test-topic이라는 이름으로 토픽을 생성한다
$ bin/kafka-topics.sh --create --zookeeper 10.39.192.30:2181, 10.39.194.129:2181, 10.39.192.116:2181 --replication-factor 3 --partitions 3 --topic test-topic
생성 후 토픽을 확인한다
$ bin/kafka-topics.sh --describe --zookeeper 10.39.192.30:2181, 10.39.194.129:2181, 10.39.192.116:2181 --topic test-topic
Topic: test-topic PartitionCount: 3 ReplicationFactor: 3 Configs:
Topic: test-topic Partition: 0 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1
Topic: test-topic Partition: 1 Leader: 3 Replicas: 3,1,2 Isr: 3
Topic: test-topic Partition: 2 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
+ 콘솔에서 Produce와 Consume 하기
Produce
$ bin/kafka-console-producer.sh --broker-list 10.39.192.30:9092, 10.39.194.129:9092, 10.39.192.116:9092 --topic test-topic
Consume
$ bin/kafka-console-consumer.sh --bootstrap-server 10.39.192.30:9092, 10.39.194.129:9092, 10.39.192.116:9092 --topic sensor-facilitysafety --from-beginning
'개발 > ETC' 카테고리의 다른 글
[ Homebrew ] 권한 오류 Permission denied @ apply2files (0) | 2021.03.11 |
---|---|
[ gradle ] gradle lombok cannot find symbol (0) | 2021.01.18 |
[ log4j2 ] RollingFileAppender 설정 (0) | 2020.12.24 |
[ log4j ] log4j-slf4j-impl cannot be present with log4j-to-slf4j (0) | 2020.12.23 |
[ gradle ] Directory '/Users/IdeaProjects/openapi/build/generated-snippets' specified for property '$1' does not exist. (0) | 2020.12.07 |