이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으며 정리한 글입니다.
1. EC2 인스턴스 생성
2. 탄력적 IP 만들기
3. EC2 인스턴스 접속하기
🍌 24시간 구동하는 서버 구성하기
- 개인 PC를 24시간 구동시킨다.
- 호스팅 서비스(Cafe 24, 코리아호스팅 등)을 이용한다.
- 클라우드 서비스(AWS, AZURE, GCP 등)을 이용한다.
1번과 2번 방법이 비용이 저렴하지만 특정 시간대에 트래픽이 몰리는 시스템의 경우 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 클라우드 서비스는 인터넷(클라우드)를 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다.
EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버이다. 인스턴스를 생성하기 전에 리전이 서울로 설정되어 있는지 확인하자.
1. AMI(Amazon Machine Image)
EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것이다. Amazon Linux AMI 2를 선택했다.
- 아마존에서 개발하고 있기 때문에 지원받기가 쉽다.
- 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄 본 사람일수록 문제 없이 사용할 수 있다.
- AWS의 각종 서비스와의 상성이 좋다.
- Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다.
2. 인스턴스 유형
프리티어로 표기된 t2.micro를 선택했다. t2는 요금 타입을 말하고, micro는 사양을 말한다. T 시리즈는 범용 시리즈이다. 크레딧이라는 일종의 CPU를 사용할 수 있는 포인트 개념이 있는데, 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 된다. 정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만, 크레딧이 모두 사용되면 더 이상 EC2를 사용할 수 없다.
3. pem 키(비밀키) 생성
인스턴스는 지정된 pem 키와 매칭되는 공개키를 가지고 있어서 발급한 pem 키로만 접근할 수 있다. 일종의 마스터키이므로 절대 유출하면 안 된다!
4. 보안 그룹
보안 그룹은 방화벽을 말한다. '서버로 80 포트 외에는 허용하지 않는다.'와 같은 설정을 할 수 있다.
- SSH이면서 22 포트인 경우: AWS EC2에 터미널로 접속할 때이다. pem 키가 없으면 접속이 안 되지만 유출될 경우를 대비해 전체 오픈을 하면 안 된다!!! 정해진 IP에서만 접속할 수 있도록 집 IP에서만 접속 가능하도록 했다.
- 현재 프로젝트의 기본 포트인 8080: 8080은 열어 두어도 위험하지 않다.
5. 스토리지
스토리지는 하드디스크라고 부르는 서버의 디스크(SSD 포함)를 이야기하며, 서버의 용량을 설정한다. 프리티어로 30GB까지 가능해서 30GB를 선택했다.
🔮 탄력적 IP 만들기
인스턴스도 하나의 서버이기 때문에 IP가 존재한다. 문제는 인스턴스를 중지하고 다시 시작하면 새 IP가 할당된다는 것이다. 이렇게 IP가 변경되면 번거롭다. 인스턴스의 IP가 매번 변경되지 않고 고정 IP를 갖도록 고정 IP를 할당해 보자.
AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다. 발급받은 후 EC2 인스턴스를 [주소 연결]을 통해 연결하면 된다.
🔮 EC2 서버에 접속해서 기본 설정하기
윈도우에서 SSH 접속을 하기 위해서 별도의 클라이언트인 PuTTY를 설치하거나 기본 터미널을 통해 이용할 수 있다. 나는 이 글을 참고해서 PowerShell에서 접속하도록 했다.
java 8 설치하기
sudo yum install -y java-1.8.0-openjdk-devel.x86_64 # 설치
sudo /usr/sbin/alternatives --config java # 인스턴스 Java 버전 변경
java -version
타임존 변경
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/seoul /etc/localtime
date # 시간 확인
Hostname 변경
여러 서버를 관리할 경우 IP 만으로 어떤 서비스의 서버인지 구분하기 어려우므로 설정한다. 참고
sudo hostnamectl set-hostname 원하는이름.localdomain
sudo vim /etc/hosts
127.0.0.1 등록한HOSTNAME # Failed to connect to ~가 나오면 성공!
'Book > 스프링 부트와 AWS 웹 서비스' 카테고리의 다른 글
[AWS] EC2 서버에서 프로젝트 배포하기 (0) | 2023.02.25 |
---|---|
[AWS] 데이터베이스 환경 구성하기 - RDS (0) | 2023.02.24 |
JUnit 테스트에 Spring Security 적용하기 (0) | 2023.02.22 |
스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (feat. Google, Naver) (0) | 2023.02.17 |
머스테치(Mustache)로 화면 구성하기 (0) | 2023.02.10 |
댓글