서버 환경 구축 순서
- 현재글
- [AWS] 서버 환경 구축 EC2, S3, Aurora Mysql 설정 - 2 (S3)
- [AWS] 서버 환경 구축 EC2, S3, Aurora Mysql 설정 - 3 (Aurora Mysql)
시작에 앞서
인스턴스를 생성하는 이 부분은 뒤에 적을 내용의 흐름이 끊기지 않게만 간단히 적고,
필요한 부분만 캡처와 함께 설명을 덧붙여 넘어가려 한다.
모두가 생성하고 싶은 AMI, 아키텍처, 인스턴스 유형이 각기 다를 거라 생각해 불 필요한 부분인 것 같다.
(테스트용도로만 구성하고 싶으신 분들은 프리티어가 붙은 유형만을 선택해 진행하면 될 것 같다.)
EC2 대시보드 > '인스턴스 시작' 클릭
WEB Server EC2 생성
이름 및 태그 : web-server
애플리케이션 및 OS 이미지(Amazon Machine Image) : Amazon Linux 2023 AMI
아키텍처 : 64(Arm)
인스턴스 유형 : t4g.small
키 페어(로그인) : 없음
네트워크 설정 : (아래 캡처 참조)
스토리지 구성 : 50 GiB gp3
(나머지는 기본값)
나의 경우 Public 환경인 WEB Server EC2의 키 페어 설정을 안 했지만 보안상 키페어를 발급하는걸 추천한다.
네트워크 설정에서 '편집' 클릭
네트워크 설정은 위처럼 세팅한다.
- VPC : EC2가 위치해야 할 미리 생성해 둔 VPC
- 서브넷 : EC2가 위치해야 할 Public subnet
- 보안그룹 이름 : Public-sg-1
- 설명: web-server security group
인프라 구축 단계라 유형에서 모든 트래픽 소스 유형은 내 IP를 선택했지만
실제로 사용할 때는 꼭 필요한 프로토콜이나 IP대역을 설정해서 사용해야 한다.
만약, aws console에서만 접속 하고 싶다면 13.209.1.56/29를 ssh 프로토콜로 허용해놓자.
참고사이트
'인스턴스 시작' 클릭
WEB Server EC2 정상 확인
인스턴스가 생성되고 인스턴스 상태가 '실행 중'으로 변경되면
우측 상단 '연결' 클릭 > 'EC2 인스턴스 연결'탭에서 '연결' 클릭
# 외부 인터넷 연결(네이버) 되는지 확인 명령어
curl -v naver.com
위처럼 로그가 나온다면 정상적으로 생성이 완료되었다.
또, 한 가지 더 설정해줘야 할 것이 남았다.
EC2를 생성할 때 이미 퍼블릭 IP를 할당받았지만 이 IP는 고정된 IP가 아니다.
그래서 우리는 탄력적 IP를 이용해서 고정된 IP를 EC2에게 할당해야 한다.
탄력적 IP 할당
왼쪽 메뉴 > 네트워크 및 보안 > 탄력적 IP
해당 메뉴에 들어왔으면 오른쪽 상단에 '탄력적 IP 할당' 클릭
다른 설정 필요 없이 '할당' 클릭
생성된 탄력적 IP 주소를 선택 한 뒤,
오른쪽 상단 '작업' 클릭 -> '탄력적 IP 주소 연결' 클릭
생성한 web-server 인스턴스와 프라이빗 IP 주소를 선택하고 '연결'을 클릭한다.
적용되어 있는 탄력적 IP 주소는 인스턴스 세부정보에서 확인할 수 있다.
WEB Server는 이제 모든 구성이 완료되었다.
이제 WAS Server를 구성해 보자
EC2 대시보드 > '인스턴스 시작' 클릭
WAS Server EC2 생성
이름 및 태그 : was-server
애플리케이션 및 OS 이미지(Amazon Machine Image) : Amazon Linux 2023 AMI
아키텍처 : 64(Arm)
인스턴스 유형 : t4g.small
키 페어(로그인) : (아래 캡처 참조)
네트워크 설정 : (아래 캡처 참조)
스토리지 구성 : 50 GiB gp3
(나머지는 기본값)
키 페어(로그인)
'새 키 페어 생성' 클릭
- 키 페어 이름 : my-vpc-keypair
'키 페어 생성' 클릭하면
자동적으로 키페어가 생성되어 다운받아지며 키 페어 셀렉트 박스에 자동으로 생성된 값이 선택된다.
다운받아진 키페어 파일은 잘 관리하자 재발급 받을 수 없어 분실되면
새로운 키페어를 생성해서 대체해야 한다.
네트워크 설정에서 '편집' 클릭
네트워크 설정은 위처럼 세팅한다.
- VPC : EC2가 위치해야 할 미리 생성해 둔 VPC
- 서브넷 : EC2가 위치해야 할 Private subnet
- 보안그룹 이름 : Private-sg-1
- 설명: was-server security group
인프라 구축 단계라 유형에서 모든 트래픽을 받을 수 있게 선택했지만
실제로 사용할 때는 꼭 필요한 프로토콜이나 IP대역을 설정해서 사용해야 한다.
'인스턴스 시작' 클릭
WAS Server EC2 정상 확인
인스턴스가 생성되고 인스턴스 상태가 '실행 중'으로 변경된 것을 확인하면
'web-server' 인스턴스를 선택 > 우측 상단 '연결' 클릭 > 'EC2 인스턴스 연결'탭에서 '연결' 클릭한다.
우린 분명 was-server인스턴스를 생성했지만
private subnet 공간에 생성해 놓아서 다이렉트로 접속은 못한다.
그래서 우린 web-server를 통해 우회적으로 접속할 것이다.
보통은 bastion, jump server라는 것들을 사용해서 우회적으로 접속하지만
이 글에 aws 아키텍처는 사내 테스트용으로 설계되어 통제된 환경에서 사용하려다 보니
보안적으로는 특별히 신경을 안 써도 되기 때문에 이 부분이 빠져있다.
# root 권한을 얻어오자.
sudo -s
# 키페어 파일을 생성
nano my-vpc-keypair.pem
was-server를 생성할 때 다운로드하였던 키페어를 메모장으로 열어 내용을 모두 복사해서
위의 명령어로 생성된 파일에 붙여 넣자.
이후, 'ctrl' + 'x' > 엔터로 빠져나오자.
# 생성된 파일이 현재 티렉터리 위치해 있는지 확인해보고 기억해두자.
pwd
# 접속한뒤 티렉터리 위치 변경을 안했다면 아마 home/ec2-user/일 것이다.
# 파일 권한 변경
chmod 400 my-vpc-keypair.pem
# RSA 방식으로 my-vpc-keypair.pem을 이용해서
# ec2-user라는 username과 <was-server private ip>로 ssh 프로토콜을 통해 접속한다는 의미이다.
ssh -i "my-vpc-keypair.pem" ec2-user@<was-server private ip>
접속 중 fingerprint 얘기가 나오면 yes를 선택해 주자.
위처럼 ip가 바뀌었다면 정상적으로 was-server에 접속이 완료된 것이다.
was-server NAT 게이트웨이 정상 연결 확인
# 외부 인터넷 연결(네이버) 되는지 확인 명령어
curl -v naver.com
위처럼 로그가 나온다면 정상적으로 NAT 게이트웨이와 EC2가 위치되어 있는
Private Subnet도 연결이 성공되었다는 의미이다.
추가 EC2 환경 수정
1번의 경우
한번 등록해둔 pem 키페어를 계속 고정으로 사용하기 때문에
긴 명령어를 계속 사용하기도 귀찮은 것을 해결하기 위해 설정한다.
2번의 경우
예를 들어 EC2에 설치되어 있는 Tomcat이나 Jenkins에서 서버 시간을 가져와 로그를 찍어주는 스크립트가 있다면
한국 시간대와 맞지 않는 시간을 찍어 줄 것이기 때문에 설정한다.