DOCKER kafka 로컬 도커의 카프카 컨테이너에 외부접속 허용
— INFRA, DOCKER, 2023 — 3 min read
배경
내 mac 에서 도컬를 실행하고 카프카 컨테이너를 실행했다 옆사람이 pc 에서 내 카프카 컨테이너에 토픽을 생성하고 메세지를 받고싶다
방법1.Tunnels
- 다른 사용자의 pc 의 원격 호스트에 접속
SSH
사용자(클라이언트)와 서버(호스트)는 각각의 키를 보유하고 있으며 키를 이용해 연결 상대를 인증
- authorized_keys 라는 파일에 접속할 pc 의 공개 키 전문을 저장
vim ~/.ssh/authorized_keys
//실행 후 공개 키 전문을 저장
- sshd_config 파일에 설정을 변경
sudo vim /etc/ssh/sshd_config
명령어 실행 후 편집
PasswordAuthentication noUseDNS no
- 패스워드 인증을 허용(yes)/허용안함(no)
- 클라이언트 호스트 주소를 DNS 해석(yes)/허용안함(no)
- 앞에 설정을 완료 했다면 ssh [이름]@[ip] 로 상태방 pc 에 접근 가능
(클라이언트 pc) ssh -R 9092:127.0.0.1:9092 [서버 이름]@[서버 ip]
실행
(서버 pc) ssh -L 9092:127.0.0.1:9092 [클라이언트 이름]@[클라이언트 ip]
실행
-
상대방 pc 터미널에 접근 성공
-
이후 카프카에 토픽생성하고 메세지 추가
(클라이언트 pc) 카프카 서비스 코드를 실행해서 서버pc의 도커-카프카로 접근
pwd
명령어로 사용자 이름 확인- 공개 키 생성(mac) ->
ssh-keygen -t -rsa -b 4096
- 공개 키 보기(mac) ->
cat ~/.ssh/id_rsa.pub
- ip 확인 ->
ipconfig | grep inet
- TCP/IP 네트워크로 루프백 주소 = 127.0.0.1 주소 = localhost 주소
방법2.Kafka brokers
- mac 에서 특정 host 에 kafka cluster dns 셋팅 방법
가상의 호스트 이름 : kafka.example.com
1.호스트 파일(/etc/hosts) 편집 Mac에서 호스트 이름을 DNS로 해석하려면 먼저 /etc/hosts 파일에 해당 호스트 이름과 IP 주소의 매핑을 추가
sudo nano /etc/hosts
### Host Database## localhost is used to configure the loopback interface# when the system is booting. Do not change this entry.##
192.168.1.100 kafka.example.com
Kafka 클러스터의 실제 IP 주소 = 192.168.1.100
192.168.1.100 kafka.example.com
내용을 추가
(nano) 저장: Ctrl + o , 나가기: Ctrl + x
Kafka 클라이언트 설정 파일(server.properties)에 외부호스트 설정
advertised.listeners
Kafka 브로커가 클라이언트에게 알려주는 브로커의 주소입니다. 주로 외부에서 접근 가능한 주소
advertised.listeners=PLAINTEXT://kafka.example.com:9092 //브로커의 주소 지정
https://hanamon.kr/dns란-도메인-네임-시스템-개념부터-작동-방식까지/ https://blog.voidmainvoid.net/327 https://blog.voidmainvoid.net/500 https://mycup.tistory.com/428
https://deep-dive-dev.tistory.com/42 https://devocean.sk.com/vlog/TechDay/03_se4.pdf