2.1 실습용 카프카 브로커 설치(ver.EC2)

AWS EC2 인스턴스 발급 및 보안 설정

EC2 Dashboard

(우측상단)인스턴스 시작

AMI 선택 화면

프리 티어 사용가능한 Amazon Linex 2 AMI 선택

인스턴스 유형 선택

찬가지로 프리티어가 가능한 인스턴스를 선택

인스턴스 시작 및 검토

마지막 확인 절차. 확인 뒤 시작하기

서버 접속을 위한 키 페어 설정

키 페어 름 test-kafka-server-key / 키 페어 다운로드

보안 그룹 규칙

  • 로컬 터미널

자바 설치

주키퍼/카프카 브로커 실행

카프카 브로커 힙/메모리 설정

  • 카프카 브로커는 레코드의 내용은 페이지 캐시로 시스템 메모리를 사용하고 나머지 객체들은 힙 메모리에 저장하여 사용한다. (일반적으로 카프카 브로커를 운영할 때 힙 메모리를 5GB 이상으로 설정 X)

  • Defatult 힙 메모리 - 카프카 브로커 = 1G, 주키퍼 = 512MB

  • 실습용 인스턴스는 1GB 메모리를 가지고 있으므로 1.5GB 메모리를 담아내지 못한다. 이를 해결하기 위해 메모리 설정이 필요. ( 메모리가 넉넉하다면 지정하지 않아도 된다.)

  • 터미널에서 사용자가 입력한 KAFKA_HEAP_OPTS 환경변수는 터미널 세션이 종료되면 초기화되어 재사용이 불가. 이를 위해 ~/.bashrc 파일에 환경변수 선언문을 넣을 필요가 있다.

카프카 브로커 실행 옵션 설정

config/server.properties : 카프카 브로커가 클러스터 운영에 필요한 옵션.

  • 실습용 카프카 브로커를 실행할 것이므로 advertised.listener만 설정. (하단 코드 (3)에 해당)

  • advertised.listener는 카프카 클라이언트 또는 커맨드 라인 툴을 브로커와 연결할 때 사용.

  • 이미 실행되고 있는 카프카 브로커의 설정을 변경하고 싶다면 브로커를 재시작해야 한다.

  1. 실행하는 카프카 브로커의 번호.

    단 하나뿐인(unique) 번호로 설정(동일한 id를 가질 경우 비정상적인 동작이 발생 할 수 있다.)

  2. 카프카 브로커가 통신을 위해 열어둘 인터페이스 IP,port,프로토콜 설정.

    (설정하지 않는 경우 모든 IP와 port에서 접속 가능.)

  3. 카프카 클라이언트 또는 카프카 커맨드 라인 툴에서 접속할 때 사용하는 IP와 port 정보.

    (인스턴스를 생성할 때 발급받은 퍼블릭 IPv4값을 IP에 넣고, port에는 카프카 기본 포트인 9092.)

  4. SASL_SSL,SASL_PLAIN 보안 설정 시 프로토콜 매핑을 위한 설정.

  5. 네트워크를 통한 처리를 할 때 사용할 네트워크 스레드 개수 설정이다.

  6. 카프카 브로커 내부에서 사용할 스레드 개수.

  7. 통신을 통해 가져온 데이터를 파일로 저장할 디렉토리 위치.

    (디렉토리가 없는 경우 오류가 발생할 수 있으므로 브로커 실행 전에 디렉토리 생성 여부를 확인한다.)

  8. 파티션 개수를 명시하지 않고 토픽을 생성할 때 기본 설정되는 파티션 개수.

    (파티션 개수가 많아지면 병렬처리 데이터양이 늘어난다.)

  9. 카프카 브로커가 저장한 파일이 삭제되기까지 걸리는 시간을 설정.

    가장 작은 단위를 기준으로 하므로 log.retention.hours보다는 log.retention.ms 값을 설정하여 운영하는 것을 추천. log.rentention.ms 값을 -1로 설정하는 경우 삭제는 이루어지지 않는다.

  10. 카프카 브로커가 저장할 파일의 최대 크기를 지정. (이 크기를 채운 경우 새로운 파일 생성.)

  11. 카프카 브로커가 저장한 파일을 삭제하기 위해 체크하는 간격 지정.

  12. 카프카 브로커와 연동할 주키퍼의 IP와 port를 설정. 실습을 위해 EC2 인스턴스에 주키퍼와 카프카 브로커를 동시에 실행하므로 localhost:2181로 설정한다.

  13. 주키퍼의 세션 타임아웃 시간을 지정.

주키퍼 실행

주키퍼

  • 분산 코디네이션 서비스 제공

  • 카프카의 클러스터 설정 리더 정보

  • 컨트롤러 정보

보통 3개이상의 서버로 구성한다.

1대만 실행하는 주키퍼를 'Qucik-and-dirty single-node'라 칭한다. (테스트용으로만 사용)

카프카 브로커 실행 및 로그 확인

로컬 컴퓨터에서 카프카와 통신 확인

테스트 편의를 위한 hosts 설정

Last updated