아래 포스팅에서 이어지는 글입니다.
[AWS] 3-Tier-Architecture 구축 #3 - NAT Gateway 대신 NAT Instance를 사용해 비용 절약하기
아래 포스팅에서 이어지는 글입니다. [AWS] 3-Tier-Architecture 구축 #2 - VPC 아래 포스팅에서 이어지는 글입니다. [AWS] 3-Tier-Architecture 구축 #1 - 설계 Django로 만든 프로젝트를 AWS에서 3 Tier Architecture로 구
jjung0326.tistory.com
먼저 설계도에 있는 Bastion Host가 어떤 역할을 하는지 알아보자.
Bastion Host란?
외부 인터넷 망에서 VPC의 Private subnet은 기본적으로 막혀있다.
하지만, 외부에서 Private subnet에 연결을 해야할 때가 있다. 이때 Bastion이 필요하다!
Bastion이란?
수호자, 보루, 요새라는 의미를 가진다.
즉 방화벽 호스트, Proxy의 역할을 해주는 곳이다.
아키텍처를 통해 이해해보자.
Bastion Host는 Public Subnet에 속하며 공인 IP를 가지고 외부와 통신한다.
외부에서 Private subnet에 접근을 하고자 할 때, Bastion Host에 정의된 보안그룹에 따라 Private Subnet의 사설 IP로 트래픽을 전달해준다.
Bastion Host 생성
먼저 Bastion Host의 역할을 할 EC2 인스턴스를 생성해주자. 다음 스펙을 가지는 인스턴스를 생성해주었다.
- 이름: bastion-host
- OS: Ubuntu 20.04
- 인스턴스: t2.micro
- 키페어: deploy_test
인스턴스의 네트워크 설정은 다음과 같이 해주었다.
Bastion Host는 외부와 통신해야하기 때문에 Public subnet(public-bastion)에 위치시킨다.
인바운드 규칙은 내 IP(로컬)에서만 ssh 접속이 가능하도록 설정하였다.
추가로 Bastion Host는 외부와 통신하기 때문에 EIP를 할당해주었다.
Putty를 사용해서 로컬에서 ssh로 Bastion Host에 접속해보자.
생성한 Bastion Host에 접속까지 완료했다!
이제 WEB서버를 생성하고, Bastion Host를 통해 WEB서버까지 접속해보도록 하자.
WEB 서버 생성
- 이름: web-01
- OS: ubuntu 20.04
- 인스턴스 유형: t2.micro
- 키 페어: deploy_test
- 네트워크 설정(subnet): private-web1
- Security Group: bastion에서 ssh 접속이 가능하도록 허용
위 스펙을 가지는 EC2 인스턴스를 생성해주자.
Bastion Host를 통해 WEB-01 인스턴스에 ssh로 접속하려면, 키페어인 deploy_test.pem 파일이 Bastion Host에 있어야 한다.
WINSCP로 Bastion Host에 pem key 전송
Linux 환경에서는 scp 명령어로 ec2 서버로 파일을 옮기면 된다.
하지만 Windows 환경에서는 scp 명령을 사용하기 위해 사전작업이 필요한 듯 보여서 수업들을때 사용하던 WINSCP를 사용해 파일을 옮겼다.
(WINSCP 다운로드 - https://winscp.net/eng/download.php)
WINSCP를 띄우면 다음 화면이 뜬다.
'새 탭'을 클릭해 ec2 서버를 새롭게 연결할 수 있다.
- 파일프로토콜: SFTP
- 호스트 이름: Bastion Host의 EIP
- 사용자 이름: ubuntu 20.04 이미지를 사용했기 때문에 'ubuntu'를 써주면 된다.
- '고급 > 고급 > SSH > 인증'에서 개인키 파일을 등록
로컬PC의 deploy_test.pem파일을 Bastion Host에 Drag&Drop 해주면 완료된다.
먼저 Bastion Host에 접속해서 pem 파일을 읽을 수 있도록 권한을 변경해주자. (chmod 400으로 변경해주었다)
키페어를 사용해 WEB 인스턴스에 ssh로 접속해보자.
Bastion Host를 거쳐 private subnet에 있는 web-01 인스턴스에 접속하는데 성공했다!
이제 같은 방식으로 web-02 인스턴스를 생성해주면 된다.
- 이름: web-02
- OS: ubuntu 20.04
- 인스턴스 유형: t2.micro
- 키 페어: deploy_test
- 네트워크 설정(subnet): private-web2
- Security Group: bastion에서 ssh 접속이 가능하도록 허용
'AWS' 카테고리의 다른 글
[AWS] 3-Tier-Architecture 구축 #5 - RDS로 MySQL DB 생성 (0) | 2023.08.29 |
---|---|
[AWS] 서버리스로 서버없이 간단한 웹 애플리케이션 만들기 (0) | 2023.06.26 |
[AWS] 3-Tier-Architecture 구축 #3 - NAT Gateway 대신 NAT Instance를 사용해 비용 절약하기 (0) | 2023.06.15 |
[AWS] 3-Tier-Architecture 구축 #2 - VPC (0) | 2023.06.14 |
[AWS] 3-Tier-Architecture 구축 #1 - 설계 (0) | 2023.06.14 |