본문으로 건너뛰기

Cluster Register

Felice는 Kafka 클러스터 모니터링 서비스를 제공해요. 모니터링을 위해서는 먼저 Kafka 클러스터를 등록해야 해요. 간단한 과정으로 손쉽게 등록할 수 있으며, 등록 후에는 Felice를 통해 등록한 클러스터의 상태를 실시간으로 확인하고 관리할 수 있어요.

클러스터를 등록하려면, 클러스터 목록 화면에서 [클러스터 등록] 버튼을 눌러 등록 화면으로 진입해 주세요.

Step1: 클러스터 유형 선택

등록하고자 하는 클러스터 유형을 선택하세요. Felice에서는 3가지 유형의 클러스터의 등록을 지원해요.

  • 주키퍼 클러스터: 카프카의 기본적인 분산 모드이며, 주키퍼를 활용하여 클러스터 조정과 메타데이터 관리를 수행해요.
  • KRaft 클러스터: 주키퍼 의존성 없이 카프카만을 사용하여 메타데이터 관리와 클러스터 조정을 수행하는 모드에요. 카프카 버전 2.8.0 이상에서 사용 가능하지만, 프로덕션 환경에서의 사용은 아직 권장하지 않아요.
  • Amason MSK 클러스터: Amazon Web Services에서 제공하는 완전 관리형 카프카 서비스에요. 클러스터 구축, 운영 및 확장을 간편하게 할 수 있게 도와줘요.

register_cluster_step1

Step1에서 주키퍼 클러스터 또는 KRaft 클러스터를 선택했다면 Step2-1: Bootstrap 서버 주소 입력으로 이동하세요.
만약, Amazon MSK 클러스터를 선택했다면 Step2-2: 클러스터 상세정보 입력으로 이동하세요.

Step2-1: (주키퍼 또는 KRaft 선택 시) Bootstrap 서버 주소 입력

브로커가 설치된 Bootstrap 서버 주소와 포트 번호를 하나만 입력해 주세요. 입력된 정보를 바탕으로, 나머지 브로커 서버 정보들은 자동으로 불러와요.

register_cluster_step2

Bootstrap 서버 주소

Bootstrap 서버 주소를 Hostname으로 입력할 경우, Hostname이 서버에 등록되어 있지 않으면 오류가 발생할 수 있어요.

보안 설정

등록하고자 하는 Kafka 클러스터에 보안 설정이 되어 있을 경우, 보안 설정 체크박스를 활성화하고 클러스터의 보안 설정 정보를 입력해 주세요.

register_cluster_step2_checkbox

클러스터 보안 설정이 필요한 이유

Kafka는 실시간으로 대량의 데이터를 전송하고 처리하는 메시징 시스템이에요. 이러한 데이터 중에는 민감 정보가 포함될 수 있기 때문에, 데이터의 무결성과 기밀성을 유지하는 것이 중요해요.

  • 데이터 무결성: 데이터를 전송하는 동안 변경되거나 손상되지 않는 특징이에요. 암호화를 통해 데이터의 무결성을 유지할 수 있어요.
  • 데이터 기밀성: 민감한 데이터가 승인되지 않은 사용자에게 노출되지 않게 하는 특징이에요. 인증을 통해 데이터의 기밀성을 유지할 수 있어요.

Kafka는 기본적으로 보안 설정이 되어 있지 않으며 이는 선택사항이에요. 하지만, 데이터 유출 방지 및 보호와 서비스 안정성을 위해서 실제 운영 환경에서는 보안을 설정할 것을 권장해요.

인증이란?

사용자 또는 시스템의 신원을 확인하는 프로세스에요. 이러한 인증을 통해 신원이 안전하다고 확인된 클라이언트만 카프카 클러스터에 접근할 수 있어요. Kafka에서는 SASL을 통한 인증을 지원해요.

SASL (Simple Authentication and Security Layer)

인터넷 프로토콜에 인증, 암호화와 같은 데이터 보안 서비스를 추가할 수 있도록 돕는 프레임워크에요. 애플리케이션 또는 Kafka 개발자에게 보안에 관련된 다양한 매커니즘을 제공해 줘요.

암호화란?

네트워크 통신 중에 오가는 데이터를 암호화하여 읽을 수 없게 변환해서, 권한이 있는 클라이언트만 데이터를 읽을 수 있도록 하는 보안 기술이에요. Kafka에서는 SSL을 통한 암호화를 지원해요.

SSL (Secure Socket Layer)

인터넷상에서 데이터를 안전하게 전송하기 위한 암호화 통신 프로토콜 계층이에요. 일반적으로, SSL을 대체하는 프로토콜인 TLS(Transport Layer Security)를 지칭해요. 모든 메시지를 암호화 및 복호화하기 때문에 CPU 자원의 소모가 늘어나고, Kafka의 최대 장점 중 하나인 Zero Copy를 사용할 수 없어서 전송 효율이 저하될 수 있어요.

보안 프로토콜이란?

보안 프로토콜이란 보안을 위한 네트워크상의 일련의 규칙 또는 절차를 의미해요. Kafka에서는 인증 및 암호화 방식을 결합한 4가지 종류의 보안 프로토콜을 제공해요.

  • PLAINTEXT: 인증과 암호화를 모두 적용하지 않는 기본 통신 프로토콜이에요. 보안이 필요하지 않은 폐쇄된 네트워크에서 주로 사용해요. 보안 설정을 활성화하지 않으면 해당 프로토콜로 지정돼요.
  • SASL_PLAINTEXT: SASL을 통한 인증을 적용하지만, 암호화는 적용하지 않는 보안 프로토콜이에요. 인증만 필요한 환경에서 주로 사용해요.
  • SASL_SSL: SASL을 통한 인증과 SSL을 통한 암호화를 모두 적용하는 보안 프로토콜이에요. 민감한 데이터를 안전하게 전송해야 하는 환경에서 주로 사용해요.
  • SSL: SSL을 통한 암호화를 적용하여, 민감한 데이터를 안전하게 전송하도록 돕는 보안 프로토콜이에요.

register_cluster_step2_security_protocol

SASL 인증 매커니즘

SASL이 포함된 보안 프로토콜 선택 시, 인증 매커니즘을 함께 선택해야 해요. Kafka는 SASL 인증 지원하기 위한 다양한 인증 메커니즘을 제공해요.

  • SASL/PLAIN: 사용자명(username)과 비밀번호(password)를 사용하여 인증해요. 이때, 사용자의 자격증명(username, password)은 평문으로 전송되기 때문에 비교적 보안에 취약한 방식이에요.
  • SASL/SCRAM-SHA-256: 사용자명(username)과 비밀번호(password)를 사용하여 인증해요. 이때, 사용자의 자격 증명 중 비밀번호(password)는 SHA-256 방식으로 암호화를 수행하고 저장해요. 자격 증명은 주키퍼에 저장되기 때문에 Kafka-configs 명령어 스크립트 또는 Felice를 통해 사용자를 직접 관리할 수 있어요.
  • SASL/SCRAM-SHA-512: SASL/SHA-256과 동일하지만, 암호화 과정에서 SCRAM-SHA-512 방식을 사용해요.
  • SASL/OAUTHBEARER: OAuth2 프로토콜을 기반으로 인증 서버로부터 발급받은 보안 토큰을 사용하여 인증해요. 해당 방식은 Kafka에서 제공하는 기능이 한정적이기 때문에 운영 환경이 아닌 클러스터에서만 사용하는 것을 권장해요.

register_cluster_step2_authentication_mechanism

SSL 인증서

인증서는 SSL 통신을 위해 사용되는 전자화된 문서에요. Kafka와 클라이언트 간의 통신을 제 3자가 보증해줘요. SSL이 포함된 보안 프로토콜 선택 시에는 Trust Store 파일(.jks)을 업로드 해야해요. mTLS 사용 시에는 클라이언트의 인증서를 보관하는 키스토어 파일을 함께 업로드 해야 해요.

  • Trust Store: Kafka 브로커로부터 인증서를 전달받았을 때, 해당 인증서가 신뢰할 수 있는 인증서인지 확인하려면 공인 인증기관(CA)의 인증서가 필요해요. 이러한 인증기관의 인증서를 저장하는 특수한 파일(.jks)이에요. 일반적으로 카프카 브로커에서 SSL 구성을 할 때 사용한 파일과 같은 파일을 사용해요.
  • Key Store: 공개키를 포함한 인증서와 개인키를 담고 있는 특수한 파일(.jks)이에요. 보안을 위해 패스워드로 보호되어 있어요. 상호 인증(mTLS)에서 클라이언트의 인증서를 Kafka 브로커에게 전달할 때 사용해요.
mTLS (Mutual Transport Layer Security)

mTLS는 클라이언트와 서버 간에 상호인증을 수행하는 SSL(TLS) 프로토콜의 확장이에요. TLS는 클라이언트만 서버의 인증서를 확인하여 신뢰성을 검증하는 반면, mTLS에서는 클라이언트와 서버 모두가 서로의 인증서를 확인하여 서로 신뢰할 수 있는 엔티티인지 확인해요.

register_cluster_step2_ssl_certification

모든 정보를 입력했다면, [클러스터 검증] 버튼을 눌러 입력한 정보를 검증하고 다음 단계로 이동해주세요.

검증 실패

브로커 서버 정보를 잘못 입력하였거나 브로커 서버로 접근하지 못하는 경우에는 검증에 실패할 수 있어요. 검증 실패 시, 브로커 서버 정보를 다시 확인하고 재검증 해주세요.

Step2-2: (Amazon MSK 선택 시) 클러스터 상세정보 입력

Felice에 Amazon MSK의 클러스터를 연동하려면, 먼저, MSK 클러스터 정보를 입력해야해요.

  • 클러스터 명: Amazon MSK에 등록된 클러스터 이름을 입력해주세요.
  • 클러스터 ARN: AWS에서 각 서비스를 식별하는 고유한 일련번호에요. 연동하고 싶은 클러스터가 속한 Amazon MSK의 ARN을 입력해주세요.
  • AWS 리전: AWS 클라우드 서비스를 사용하는 지역을 입력해주세요.

register_cluster_step2

AWS IAM 인증 설정

AWS IAM(Identity and Access Management)은 Amazon MSK 클러스터에 대한 인증 및 접근 권한을 관리할 수 있도록 지원하는 서비스에요. Felice가 퍼블릭 환경에 설치된 경우라면 AWS MSK IAM 구성 및 설정이 필요해요.

AWS MSK 클러스터에 IAM 인증이 설정되어 있다면, AWS IAM 인증 설정 체크 박스를 활성화하고 MSK 클러스터에 대한 접근 권한을 가진 사용자의 인증 정보(Access Key ID, Secret access key)를 입력해주세요.

register_cluster_step2

Step3: 등록 정보 확인

검증이 완료되면 대부분의 클러스터 정보를 Felice 가 자동으로 가져와요. 검증된 정보를 검토하고, 만약 잘못 불러온 정보가 있다면 수정하여 등록할 수 있어요.

register_cluster_step3

검증 정보는 크게 세부분으로 나누어져있어요.

  • 클러스터 정보
  • 브로커 호스트 정보
  • 주키퍼 호스트 정보

클러스터 정보

Felice 대시보드에 등록하여 사용할 클러스터의 이름을 지정할 수 있어요.

cluster_settings_form

브로커 호스트 정보

카프카 클러스터를 구성하고 있는 모든 브로커 목록을 확인할 수 있어요. 만약 중지된 브로커가 있다면 목록에 표시되지 않을 수 있어요.

broker_settings_form

메트릭 수집 설정이 되어 있다면 [메트릭 세팅] 패널에서 기능을 활성화 하고 포트 번호를 수정할 수 있어요.

혹시 누락된 브로커 정보가 있다면 [호스트 추가] 버튼을 눌러 추가할 수 있어요.

add_broker_server_modal

주키퍼 호스트 정보

주키퍼 앙상블을 구성하고 있는 모든 주키퍼 서버 목록을 확인할 수 있어요. 카프카 클러스터에서 접속 설정이 되어 있는 목록만 표시되요.

zookeeper_settings_form

메트릭 수집 설정이 되어 있다면 [메트릭 세팅] 패널에서 기능을 활성화 하고 포트 번호를 수정할 수 있어요.

혹시 누락된 주키퍼 정보가 있다면 [호스트 추가] 버튼을 눌러 추가할 수 있어요.

add_zookeeper_server_modal

JMX 메트릭 수집

브로커와 주키퍼에 JMX Exporter를 사용한다면 JMX 메트릭을 수집할 수 있어요. 자세한 내용은 클러스터 설정 문서를 참고해주세요.

노드 메트릭 수집

브로커와 주키퍼에 노드 Exporter를 사용한다면 노드 메트릭을 수집할 수 있어요. 자세한 내용은 클러스터 설정 문서를 참고해주세요.

입력된 정보를 모두 검토하셨다면 [등록] 버튼을 눌러 등록을 완료해주세요.

✨ 이제 클러스터 목록에서 새 클러스터를 관리하고 사용할 수 있어요!