웹 서버는 브라우저나 애플리케이션으로부터 요청을 받아서 HTML이나 JSON 등의 응답을 반환하는 역할을 합니다.
앞서 점프 서버와 마찬가지로 키 페어와 인스턴스를 이용해서 구축합니다. 프라이빗 서브넷에 각각 하나씩 만들겠습니다.
sample-subnet-private01과 sample-subnet-private02 에 각각 하나씩 만들겠습니다.
EC2를 생성할 때의 설정 항목은 다음과 같습니다.
AMI : Amazon Linux 2 AMI(HVM) -Kernel 5.10, SSD Volume Type
인스턴스 유형 : t2.micro
네트워크 : sample-vpc
퍼블릭 IP : 비활성화
보안 그룹 : default
키페어 : 점프 서버를 만들 때 생성했던 키페어
sample-subnet-private01 안에 만들 웹서버의 이름은 sample-ec2-web01,
sample-subnet-private02 안에 만들 웹서버의 이름은 sample-ec2-web02로 합니다.
서버를 생성했다면 ssh를 통해 연결을 확인해 보겠습니다. 웹서버를 프라이빗 서브넷에 생성했음으로 점프 서버를 경유해서 연결합니다. ssh 명령어가 제공하는 다단계 연결 기능을 이용해 연결하겠습니다.
다단계 연결 설정은 config라는 이름의 확장자를 생성하고 그 안에 기술합니다. 이 파일은 비밀 키와 마찬가지로 홈 디렉터리의 .ssh 폴더에 저장합니다. config의 파일 내용을 다음과 같이 작성합니다.
Host bastion
Hostname {점프 서버의 public IP}
User ec2-user
IdentityFile ~\.ssh\yourname.pem
Host web01
Hostname {웹 서버 01의 프라이빗 IP}
User ec2-user
IdentityFile ~\.ssh\yourname.pem
ProxyCommand ssh.exe bastion -W %h:%p
Host web02
Hostname {웹 서버 02의 프라이빗 IP}
User ec2-user
IdentityFile ~\.ssh\yourname.pem
ProxyCommand ssh.exe bastion -W %h:%p
다음과 같이 config파일을 생성했다면 ssh 명령어를 통해 연결을 확인해 보겠습니다.
웹 서버에 연결을 확인했습니다.
웹서버까지 만들고 난 후의 아키텍쳐는 다음과 같습니다.
웹 서버는 앞서 만든 점프 서버와 차이가 있습니다.
점프 서버는 시스템 관리자가 가끔 이용하고, 웹 서버는 서비스 사용자가 항상 연결을 시도 합니다.
점프 서버는 인터넷에 직접 연결되고, 웹서버는 로드 밸런서를 통해 간접 연결됩니다.