PaaS/MQ 20

kafka 내, 외부 IP모두에서 접속할수 있게 세팅

어플리케이션 및 기타 서비스에서 kafka서버에 연결할때 bootstrap Server를 정의하는데, 이때 내부IP로 충분한 경우도 있지만, 부득이하게 외부 네트워크 환경을 거쳐 kafka서버에 접속이 필요한 경우가 있다. kafka가 이게 쫌 예민해서 아래와 같이 잘 적용해야 한다. kafka config 파일에서 internal과 External을 나눠서 입력해줘야합니다. ~/config/server.properties 에서 아래와 같이 수정 listeners=INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092 listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT advertised.listene..

PaaS/MQ 2023.03.08

Kafka Oauth 인증 추가하기

원문 : https://medium.com/egen/how-to-configure-oauth2-authentication-for-apache-kafka-cluster-using-okta-8c60d4a85b43 How to Configure OAuth2 Authentication for Apache Kafka Cluster using Okta OAuth2 Authentication using OAUTHBEARER mechanism medium.com 우선 kafka oauth Class File을 다운로드 받는다 repository에서 다운로드 : https://github.com/vishwavangari/kafka-oauth2 이걸 Build수행하고 target에 있는 kafka-oauth2-0.0.1...

PaaS/MQ 2023.02.22

kafka 서버에 SSL 혹은 SASL 을 적용하면 성능 저하가 있을까?

SSL SSL의 경우 이미 리포트가 있어서 결과만 공유한다. https://blog.mimacom.com/apache-kafka-with-ssltls-performance/ Performance considerations when using Apache Kafka with SSL/TLS Running a cluster of a distributed software such as Apache Kafka in a production environment will lead to operational concerns. One of these concerns is certainly security. Companies have varying… blog.mimacom.com 테스트 환경 SPEC Number of c..

PaaS/MQ 2022.07.14

kafka SASL 인증 구축하기

※오타주의! 오타하나에 매우 민감한 작업임.. 우선 시작전에 인스턴스 구성을 설명하겠다. peter-zk01.foo.bar : kerberos Server (원래 이용도가 아닌데, 자원이 없어서..) peter-kafka01.foo.bar : broker Server 아무 Server : Client용 Server 최소 3대가 필요하고, broker가 replication으로 다중으로 운영된다면 broker는 여러개 여도 된다. kerberos Server는 별도로 빼도 되고 그냥 broker서버에다가 같이 올려도 잘돌아간다. 당연히 운영을 생각한다면 분리하는것이 맞지만, 테스트용이라면 같이해도 무방 Kerberos 서버 세팅은 내가 공부한 책의 github에 있는 ansible-playbook를 실행하..

PaaS/MQ 2022.07.14

kafka 클러스터 만들기

kafka broker 클러스터는 master / slave 개념이 없다. 그냥 다 동등한 broker. 다만 partition에는 Leader와 Follower가 있으며 이 Leader 파티션을 각 broker에 균등하게 분배 해주는것이 kafka 부하분산의 핵심 그리고 quorum 개념으로 꼭 홀수의 노드구성이 필요하다는 것은 잘 알것이다. kafka 서버 설치는 이전 포스팅을 참고해서 진행바란다. https://armyost.tistory.com/254?category=1028239 kafka 서버 설치하기 CentOS7을 기준으로 작성한 가이드 입니다. JDK 설치 # sudo yum install java-1.8.0-openjdk-devel # java -version kafka 서버 Insta..

PaaS/MQ 2022.07.13

엔터프라이즈용 kafka의 환경구성

엔터프라이즈 환경에서는 장애 복구등을 위해 하나 이상의 데이터 센터를 운영, 관리하는 경우가 많습니다. 따라서 kafka클러스터 역시 다수의 데이터 센터에 배치되어 있으므로, kafka와 kafka간의 데이터 리플리케이션은 필수 입니다. 이때 kafka간의 데이터 리플리케이션에는 주로 미러 메이커를 사용합니다. 커넥터 기반의 미러메이커 2.0 장애복구 차원에서 다중 데이터센터를 운영하는 경우 각 데이터 센터에 kafka 클러스터를 배치하고 kafka와 kafka간에는 리플리케이션을 구성해야 합니다. 두번째 최근 가장 흔한 사례로써 온프레미스에서의 데이터를 클라우드로 마이그레이션하려는 경우에는 온프레임스에 kafka를 하나 두고 클라우드에 또 다른 kafka를 두어서 온프레미스에서 클라우드로 리플리케이션 ..

PaaS/MQ 2022.07.08

kafka 커넥트

kafka 커넥트는 아파치 kafka의 오픈소스 프로젝트 중 하나로 데이터 베이스 같은 외부 시스템과 kafka를 손쉽게 연결하기 위한 프레임워크 입니다. kafka 사용자들은 kafka 커넥트 프레임워크를 이용해 대용량의 데이터를 kafka 안팎으로 손수비게 이동시킬 수 있으며, 코드를 작성하지 않고도 간단히 사용할 수 있습니다. 물론 프로듀서와 컨슈머를 직접 개발해 원하는 동작을 실행하고 처리할 수 있지만, 때로는 애플리케이션을 개발하고 운영하는데 들어가는 리소스나 비용이 부담되는 경우가 있습니다. 이런 경우 kafka 커넥트를 이용하면 좀더 효율적이고 빠르게 클라이언트를 구성하고 적용할 수 있습니다. 데이터 중심 파이프라인 : 커넥트를 이용해 kafka로 데이터를 보내거나, kafka로부터 데이터를..

PaaS/MQ 2022.07.08

kafka 스키마 레지스트리

중앙 데이터 파이프라인 역할을 하는 카프카에서는 단 한명의 사용자가 단 하나의 토픽에만 접근해 읽고 쓰는것이 아니라 수많은 사용자가 수많은 토픽을 이용합니다. 그리고 그 토픽에는 애플리케이션 하나가 아니라 다수의 각기 다른 애플리케이션들이 접근할 것입니다. 따라서 만에 하나 누군가의 실수로 사전에 정의하지 않은 형태의 데이터를 해당 토픽으로 보내기라도 한다면 그와 연결된 모든 시스템이 영향을 받게 될 것이고 이는 매우 심각한 문제로 이어질 수 있습니다. 한가지 예를 더 들어보겠습니다. kafka의 데이터 흐름은 대부분 브로드캐스트 방식입니다. 다시 말하자면 kafka는 데이터를 전송하는 프로듀서를 일방적으로 신뢰할 수밖에 없는 방식입니다. 따라서 프로듀서 관리자는 kafka 토픽의 데이터를 컨슘하는 관리..

PaaS/MQ 2022.07.08

kafka systemctl 등록

내렷다 올리기 너무 귀찮아서 그냥 systemctl 등록하려고 합니다. CentOS 기준입니다. 1. START/STOP script 를 만들자 # vi startkafka.sh ------------------------------------------------------- #!/bin/bash echo -e "Start Systemd Kafka and Zookeeper" echo -e "Running ZooKeeper" $KAFKA_HOME/bin/zookeeper-server-start.sh -daemon $KAFKA_HOME/config/zookeeper.properties sleep 10 echo -e "Running Kafka" $KAFKA_HOME/bin/kafka-server-start...

PaaS/MQ 2022.07.08

kafka와 보안 - 권한(ACL)

권한(ACL) 접근제어 리스트를 만들어 접근제어를 하는 것이다. 혹여 A서비스부서가 B토픽을 사용하는 오류를 방지하기 위해서 적용하는 것이다. kafka보안의 3단계 중 마지막으로 권한 설정을 해보겠습니다. kafka에서의 권한 설정은 각 유저별로 특정 토픽에 접근을 허용할지 또는 거부할지 등의 설정을 하는 것입니다. kafka의 권한 설정을 위해서는 먼저 브로커의 설정파일을 수정하고 그다음으로는 kafka-acls.sh 명령어를 이용해 유저별 권한을 설정해야 합니다. 1. 브로커 권한 설정 kafka 권한설정을 위해 server.properties파일을 수정해서 브로커의 설정을 변경해보겠습니다. # vi $KAFKA_HOME/config/server.properties ----------- # auth..

PaaS/MQ 2022.07.08