팀 프로젝트/최종 프로젝트

노트북에 엘라스틱서치 서버 열고 ec2랑 연결하기

pon9 2025. 2. 25. 20:23

실제 클라우드서비스에 엘라스틱서치를 적용하기 전에 집에서 놀고있는 리눅스 노트북으로 서버를 켜서 연결했다

 

1. db의 데이터를 엘라스틱서치에 연동할 때 마다 발생하는 비용과

2. 앞으로 수행할 수많은 api테스트에서의 비용이 걱정되기도 하고(실수로 발생하는 비용이 꽤나 많을거라 생각했다)

3. 노트북을 엘라스틱서치 서버용으로 외에는 사용하지 않기 때문에 충분히 합리적이라 생각한다

 

또한 엘라스틱서치 같은 경우엔 나 포함 팀원들도 처음 써보는데다 내부 구조를 잘 몰라서

직접 서버를 구축하는 과정에서 배울 점이 많을 듯 했다

 

물론 클라우드 서비스에서 제공하는 고가용성과 백업기능은 누리지 못하지만

일단 실 사용자가 없는 프로젝트용 서버라 매일 켜놓고 하루에 한번 노트북을 껐다 키는 정도면 괜찮다고 판단했다

 

(하루가 1440분이니까 껐다 키는 시간 3분 빼면 계산상 가용성이 99.79% 나온다 ㅋㅋ)

 

 

과정

우선 노트북은 우리집 공유기의 ipv4에서 대역 하나를 할당받아 쓰고있기때문에 공유기 설정을 좀 바꿔줘야한다

외부에서 우리 공유기의 n번 포트로 접근할 때 내부에서도 n번으로 접속할 수 있도록 포트포워딩 작업이 필요하다

route -n은 리눅스에서 네트워크 라우팅 테이블을 확인할 때 사용하는 명령어다.

이 명령어를 사용하면 현재 시스템이 어떤 경로를 통해 네트워크 트래픽을 전달하는지 확인할 수 있다

 

주목할 곳은 Destination이 0.0.0.0인 곳인데, 이게 기본 게이트웨이이다.

모든 외부 트래픽은 Gateway 192.168.0.1(공유기)로 전달된다.

 

따라서 공유기 주소인 http://192.168.0.1로 들어가면

iptime 공유기 관리자 창이 나온다

elasticsearch와 kibana서버를 열거기때문에 외부포트 9200,5601과 내부포트 9200,5601을 매핑시켜준다

저기 보이는 내부IP가 내노트북이 우리 집 공유기에서 할당받은 IP다

혹시모르니 DHCP관리에서 IP를 정적으로 바인딩시켜주자

DHCP는 Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜이다.

네트워크에서 IP주소와 기타 네트워크 설정을 자동으로 할당해주는 프로토콜이다.

쉽게 이야기 하면 공유기에 새로 연결된 장치가 자동으로 네트워크 설정을 받을 수 있도록 해주는 프로토콜인데, 서버용 노트북의 아이피는 동적 할당되면 안 되니까 정적으로 고정시켜준거다

다음은 방화벽 설정이다

sudo ufw allow from <ec2IP> to any port <개방할 포트>

입력하면 된다

외부ip에서 특정 포트를 개방하는 명령어다

sudo ufw status numbered 하면 방화벽내부에서의 우선순위가 보이는데

5601(키바나 포트) 는 우리 팀원들 IP를 다 허용해줬고

9200포트는 나랑 ec2서버만 접근할 수 있도록 설정해주자

 

ec2와의 연결은 간단하다. 우선 ec2 내부로 들어가서, ec2의 ip로 내 노트북에 정상적으로 접근이 가능한지 테스트 해봐야한다

curl 명령어를 사용하면 된다

저 맨 아래 you know, for search 보이면 그냥 된거다

 

이제 엘라스틱서치 담당 팀원이 다 해놓은 밥에 숟가락만 얹으면 된다

환경변수 설정 하고, (host - 공유기ip, port - 9200, name과 password는 security설정따라 다르다)

포스트맨으로 엘라스틱서치 api에 요청을 보내면?

됐다