서두
몇 시간을 붙잡았는지 모르겠다. 당연한걸 나만 모르는건지 모르겠는데 아무리 구글링을 해도 나오지 않았다.
내가 궁금한건 bastion이고 프라이빗이고 뭐고 나름대로 보이지 않는 곳에 서버 넣어놓고 우회해서 접근해서 서버 구축하고 잘 열어놨는데 클라이언트가 ssh로 접근하는 것도 아니고, 어떻게 해야 퍼블릭 ip주소처럼 ip를 입력해서 api통신을 할 수 있는지 알고싶은데 나 빼고 다들 똑똑한가보다.
아마 나와 같은 궁금증이 있다면 여기까지는 진행이 되었을 것이다.
내가 구축한 과정은 다음과 같다.
과정을 설명하기엔 너무 긴 과정이라 생략하려 한다.
퍼블릭 서브넷과 프라이빗 서브넷으로 구분한다.
1. 서버는 private subnet 안에서 인스턴스를 생성
2. private subnet은 public ip가 없어 접근 불가능, 접근하기 위해 public subnet 안에서 bastion host용 ec2 인스턴스를 별도로 생성
3. bastion 으로 접속하여 private ec2에 접근, 서버 구축
음식점으로 비유해보려 한다.
위의 과정까지 진행했다는 것은 음식 준비는 다 됐는데 어떻게 팔아야 할지 식당 주인이 모르고 있다.
private ec2라는 내가 차린 음식점은 비밀리에 지하 어딘가(private subnet)에 차렸고, 배달(nat gateway)로만 음식을 판매할 것이다.
직접 찾아오려 하면 입구가 단단히 잠겨있고(private subnet은 public ip가 없기 때문에 접근할 수 없음), 주인조차도 숨겨진 맨홀뚜껑에 잠금장치를 풀고(bastion host) 들어가서 음식을 준비한다.
그런데 듣기로는 배달의 민족같은 시스템이 internet gateway라는거 같은데.. 도대체 내 음식점은 어떻게 올릴 수 있지? 이 부분을 도저히 모르겠다. 음식점 전화번호를 걸든, 뭐 홈페이지를 만들어 걸든, 뭐든 해야 하는데 연결점이 없다.
클라이언트가 private에 직접 접근할 수 없기 때문에 우리는 음식점에 찾아오는 대신 배민으로 음식을 주문하면 되는데, 이 때 배민에 음식점을 등록하는 과정이 필요하겠다.
여러 방법이 있는 것 같은데, 그것은 차차 알게되는 대로 포스팅하겠다. 이번 포스팅은 로드밸런서 에 관한 내용이다.
자세한 내용에 대해서는.. 나 역시 초보기에 설명하기 어렵다. 이번 포스팅은 다들 나처럼 헤매지 않도록 그저 해결한 과정만 설명해보려 한다.
1. 먼저 로드밸런서 메뉴에 접속한다.
2. Application Load Balancer를 생성한다.
3. 체계에 설명이 써있는 대로 인터넷 경계를 체크한다.
(인터넷을 통해 '클라이언트의 요청'을 대상으로 라우팅한다. )
4. ip주소 유형은 해당하는대로 선택하면 되겠다.
아래부터는 간단히 설명한 하겠다.
5. 여기까지 왔다면 vpc는 당연히 있을 것이다. vpc를 선택해준다. 중요한 것은 음식점이 속한 지역을 선택해야 하는데 엄한 곳을 선택하면 안된다.
6. 매핑에서는 퍼블릭 서브넷을 선택한다. 결국 이 과정은 퍼블릭에서 프라이빗을 끌어내는 과정이다.
7. 위 스샷 왼쪽에 로드밸런서 밑에 대상 그룹을 클릭하고, 적용해주면 외부에서 프라이빗으로 접속이 가능하다.
코멘트
내가 질문하는 방법을 모르나? 정말 여기까지 생각 들정도로 이러한 포스팅이 왜 없는지 도저히 이해도 안되고 분명 이거 어려운 내용이 아닐텐데 한참 찾았던 것 같다. 로드밸런서에 대해 알게 된 것은, 이렇게 private, public에 대한 구조도를 여러 가지 보다가 ELB가 중간에 있는 구조도를 보게 되었고, 거기서 해답을 찾았다.
갈피조차 못잡을 때에는 공식문서나 여러 시각화된 자료를 참고하되, 다양하게 참고해야 더 빨리 방법을 터득하는 것 같다. 그러나 터득하는 것도 중요하지만, 과정에 대해 자세히 공부해야겠다고 더 다짐한다..
'개발 > http, server' 카테고리의 다른 글
[cors] 오랜만에 만난 CORS에러.. 설정 후에도 별도의 메세지 확인되는 경우 (0) | 2023.10.31 |
---|---|
[MYSQL] workbench에서 private subnet에 있는 RDS 접근 방법 (0) | 2023.10.28 |
[AWS]The AWS Access Key Id you provided does not exist in our records. (0) | 2023.10.18 |
[pm2] 환경변수 세팅 feat. ecosystem.config.js (0) | 2023.10.15 |
[nginx] location /api 로 api주소를 시작하는 이유 (0) | 2023.08.18 |