본 포스트는 AWS로 시작하는 인프라 구축의 정석 책을 활용한 스터디 기록입니다.
웹 서버는 브라우저나 애플리케이션으로부터 요청을 받아 HTML이나 JSON 등의 응답을 반환하는 역할을 하는 서버를 뜻합니다. 웹 서버 또한 앞선 점프 서버와 같이 EC2를 통해 생성할 수 있습니다.
그렇다면 똑같이 EC2로 만드는데 점프 서버와 웹 서버의 차이는 무엇일까요?
바로 인터넷 연결의 차이 입니다!!
챕터 5에서 본 점프 서버는 시스템 관리자가 가끔 이용하지만 웹 서버는 항상 웹 서비스 사용자가 연결을 시도하며 그렇기 때문에 점프서버는 인터넷에 직접 연결되어 있지만 웹 서버는 로드밸런서를 통해 간접 연결됩니다.
구분 | 점프 서버 | 웹 서버 |
---|---|---|
인스턴스 유형 | 최소 성능 | 이용자 수에 맞게 적절한 성능 |
서브넷 | 퍼블릭 서브넷 | 프라이빗 서브넷 |
퍼블릭 IP 자동 할당 | 필요 | 불필요 |
보안 그룹 | 기본 + ssh 접속 | 기본 |
우리는 EC2 인스턴스를 private subnet에 생성하였습니다. 그러면 당연히 우리의 노트북에 직접 ssh로 접속할 수는 없겠죠?! 앞서 만든 점프 서버를 활용하여 웹 서버 인스턴스에 접속할 수 있는 방법을 알아봅시다.
가장 단순하게는 점프 서버에 ssh로 연결 후, 웹 서버의 ssh로 연결하는 방법이지만 이 방법은 ssh 명령어를 2번 입력해야 하며, 비밀 키 파일을 점프 서버가 가지고 있어야 한다는 문제점이 있습니다.
대신 ssh 먕량어가 제공하는 다단계 연결 기능을 사용하면 됩니다!!
다단계 연결 설정은 config 파일을 작성해주면 됩니다!
Host bastion
Hostname {점프 서버의 퍼블릭 IP}
User ec2-user
IdentityFile {pem 파일 경로}
Host web01
Hostname {웹 서버 01의 프라이빗 IP}
User ec2-user
IdentityFile {pem 파일 경로}
ProxyCommand ssh.exe bastion -W %h:%p
Host web02
Hostname {웹 서버 02의 프라이빗 IP}
User ec2-user
IdentityFile {pem 파일 경로}
ProxyCommand ssh.exe bastion -W %h:%p
ProxyCommand에는 경유하는 점프 서버의 정보를 지정할 수 있습니다. (리눅스나 맥의 경우 ssh.exe가 아닌 ssh로 지정해주시면 됩니다!)
이렇게 설정해준 뒤에는 이제
ssh {서버 별명}
을 사용해 웹 서버 연결이 가능합니다!