작성
·
162
0
안녕하세요,
인텔리제이에서 클라이언트 프로듀서 생성 후 데이터 전송 시 브로커를 찾을 수 없다는 에러 로그가 자꾸 발생해서,
server.properties의 advertised.listeners에서 저희가 사용하는 고정 IP를 직접 작성해주니 해결되었는데요,
이렇게 하니 외부 클라이언트에서 192.168.56.101 주소로 전송한 데이터는 VM에서 콘솔 컨슈머를 통해 read 할 때 localhost로 접근 시 조회가 되지 않습니다.
혹시 Host PC에서 VM의 브로커에 send 할 때 advertised.listeners 값을 고정 IP로 등록해주어야 하는 이유가 있는지, 그리고 이렇게 등록 시 VM 내부에서도 localhost 참조가 불가능해지는게 맞는지 알 수 있을까요?
답변 1
0
안녕하십니까,
advertised.listeners는 Kafka Broker 서버와 다른 외부 Network에 있는 Client에서 접속을 할 때 사용합니다. 일반적으로 회사 서버는 내부망에서만 사용하는 IP가 있고, 외부 접속을 위해 Open한 IP가 있는데 카프카 클라이언트가 Broker에 접속할 때 이 외부 접속 IP를 사용해야만 할 경우 advertised.listener에 등록을 해줘야 합니다. 예를 들어 Broker가 AWS에 있고, 사용자가 바깥에서 접속해야 한다면, advertised.listeners로 외부 ip와 port를 설정해 줘야 합니다.
강의 실습은 VM 기반의 PC에서 수행되므로 advertised.listener 설정을 하지 않으셔도 됩니다만,
아래 질문에서 하기 사항 먼저 확인 부탁드립니다.
인텔리제이에서 클라이언트 프로듀서 생성 후 데이터 전송 시 브로커를 찾을 수 없다는 에러 로그가 자꾸 발생해서
=> 강의와 같이 동일한 PC에서 실습을 하였는데, 오류가 발생한 건가요?
이렇게 하니 외부 클라이언트에서 192.168.56.101 주소로 전송한 데이터는 VM에서 콘솔 컨슈머를 통해 read 할 때 localhost로 접근 시 조회가 되지 않습니다.
=> 외부 클라이언트가 동일 PC인가요? 아님 완전히 다른 PC나 다른 네트워크상의 클라이언트인가요?
3.이렇게 하니 외부 클라이언트에서 192.168.56.101 주소로 전송한 데이터는 VM에서 콘솔 컨슈머를 통해 read 할 때 localhost로 접근 시 조회가 되지 않습니다.
혹시 Host PC에서 VM의 브로커에 send 할 때 advertised.listeners 값을 고정 IP로 등록해주어야 하는 이유가 있는지, 그리고 이렇게 등록 시 VM 내부에서도 localhost 참조가 불가능해지는게 맞는지 알 수 있을까요?
=> advertised.listeners가 설정되면 외부 클라이언트들은 다 이 주소로 붙어야 합니다. 하지만 서버 내부에서 Console로 클라이언트 수행 시에는 advertised.listeners 로 붙어도 되고, 그냥 listeners 설정으로 붙어도 됩니다. 다만 서버 내부에서 outbound network 설정을 막아서, 내부에서 advertised.listeners의 ip/port를 outbound로 접근할 수 없다면 listeners 설정으로 붙어야 할 것 같습니다.
음, 근데 저도 내부 console접속에서 localhost가 안되는지는 처음 안 것 같습니다(이건 테스트를 해봐야 할 것 같습니다). localhost가 안된다면 advertised.listeners와 일반 listeners 차이가 있을 경우, console client 사용시에는 두개 중에 하나로 접속을 해야되는 걸로 보입니다.
감사합니다.
빠르고 정성스러운 답변 감사합니다 :)