AWS 서버 환경을 만들어 보자.

Zerodin·2021년 11월 9일
0
post-thumbnail
post-custom-banner

AWS EC2 시작하기

웹 서비스를 제공하기 위해서는 기본적으로 24시간 작동하는 서버가 반드시 필요하다.

이러한 서버를 구축하는 대표적인 방법 3가지를 소개하면,

  • 개인 PC를 24시간 구동.
  • 호스팅 서비스를 이용.
  • 클라우드 서비스를 이용.

과거에는 개인 PC를 이용하거나 호스팅 서비스를 이용하는 편이 많았다.

하지만 서비스의 개편/확대로 인한 인프라의 재투자가 필요해지고
유동적인 트래픽에 유연하게 대처하기에는 부적합했었다.

이것을 해결하는 방안으로 제시된 것이 클라우드 서비스 였다.
단순한 장비 제공을 넘어서서 각종 서비스를 비용 기준으로 제공하는 것이 가능해졌다.

이러한 클라우드 서비스는 3가지로 구분된다.

Infrastructure as a Service(IaaS)

  • 물리장비 + 미들웨어를 포함하는 추상화 서비스.
  • 가상머신, 스토리지, 네트워크, 운영체제 등을 대여해주는 서비스.

Platform as a Service(PaaS)

  • IaaS에서 한 번 더 추상화된 서비스.
  • IaaS보다 더 많은 서비스를 지원 가능.

Software as a Service(SaaS)

  • 소프트웨어 서비스

이 책에서는 아마존 AWS에 IaaS 를 이용하여 인프라를 구축하는 것을 목표로 하고 있다.

AWS 회원 가입

우선 AWS 사용을 위한 계정생성이 필요하다.
https://aws.amazon.com/ko/
에 접근해서 무료 계정을 생성하자.

개인정보를 작성하자.
사용계획은 반드시 개인으로 설정하자.

결제관련 카드정보를 기입해야한다.

인증을 위한 절차가 진행된다.
SMS를 이용한 인증 코드 발급을 선택했다.

코드를 이제 기입하면!

가입이 거의다 완료되었다.
기본 지원을 선택하도록 하자.

완.료

EC2 인스턴스 생성

EC2 서비스란, AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할수 있는 서버를 말한다.

우선 시작전에 본인의 리전을 설정해야한다.
우측 상단에 보면 기본값이 '오하이오' 인데 이를 '서울'로 변경하자.

이제 EC2 인스턴스를 생성해야 한다.
검색창에서 EC2를 검색해서 클릭하면 EC2 관련 메뉴로 들어올 수 있다.
여기서 중앙에 있는 인스턴스 시작 버튼을 누르자.

목록에서 가장 맨위에 노출되는
Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-04e8dfc09b22389ad (64비트 x86) / ami-07a22260f7ced4cae (64비트 Arm)
를 선택하자.

인스턴스 유형을 선택하라는 목록이 나온다.

기본적으로 프리티어 사용 가능한 항목에 체크가 되어 있다.
아래에 있는 다음 버튼을 눌러서 진행하자.


인스턴스 구성에 대한 메뉴가 나왔다.

회사에서는 VPC, 서브넷등을 작성해서 사용하게 되겠지만
나는 개인용이고 자택에서 사용하기 때문에 추가적으로 기입할 내용이 없다.
다음으로 넘어가자.


스토리지를 추가하는 메뉴에 도착했다.
여기서 목록에 있는 크기 항목의 값을 8 -> 30으로 수정하자.
아래 안내에도 나와있지만 프리티어는 최대 30GB의 볼륨을 지원한다.
일단 최대 사용량으로 값을 변경하기를 책에서 권고하고 있다.
수치를 수정했다면 다음으로 진행하자.


태그정보를 추가하는 항목이다.
웹 콘솔에 표기되는 내용을 뜻하며 내가 사용하는 EC2에 이름을 부여하는 느낌으로 이해하면 될 것 같다.


보안 그룹 추가 항목이 나왔다.
방화벽을 설정하는 메뉴로 보인다.

우선 처음 생성하는 그룹이므로 적당한 그룹 이름과 설명을 작성하자.
그리고 규칙 추가를 클릭해서 화면과 같이 설정을 추가해야 한다.
SSH에서 소스를 반드시 내 IP로 변경해야 하는 것을 잊지 말자.
22번 포트를 통해서 EC2 터미널로 접속할 예정이기 때문이다.

보안상 심대한 문제가 발생 할 수 있기 때문에 전체 오픈을 하지 말라고 책에서 강력히 권고하고 있다.
물론 pem이 필요하긴 하지만 이를 실수로 Git같은 repository에 오픈될 경우,
대참사가 일어날 수 있기 때문이라고 한다.

이제 검토 및 시작을 클릭하자.

앞에서 작성했던 모든 설정을 확인해보자.

이상이 없다면 이제 시작하기를 눌러서 키를 생성하도록 하자.

생성하려고 하니 책에는 설명이 없는 알고리즘 설정이 등장했다.

알고리즘에 대한 간단한 조사내용을 첨부한다.

  • RSA
    RSA는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한 활용을 가능하게 하였다. RSA는 두 개의 키를 사용한다. 여기서 키란 메시지를 열고 잠그는 상수(constant)를 의미한다. 일반적으로 많은 공개키 알고리즘의 공개키(public key)는 모두에게 알려져 있으며 메시지를 암호화(encrypt)하는데 쓰이며, 암호화된 메시지는 개인키(private key)를 가진 자만이 복호화(decrypt)하여 열어볼 수 있다. 하지만 RSA 공개키 알고리즘은 이러한 제약조건이 없다. 즉 개인키로 암호화하여 공개키로 복호화할 수도 있다. 공개키 알고리즘은 누구나 어떤 메시지를 암호화할 수 있지만, 그것을 해독하여 열람할 수 있는 사람은 개인키를 지닌 단 한 사람만이 존재한다는 점에서 대칭키 알고리즘과 차이를 가진다.

  • ED25519
    Ed25519는 SHA-512 및 Curve25519를 사용한 EdDSA 서명 체계이다. 또한 Ed25519는 몇 가지 매력적인 기능을 갖춘 공개 키 서명 시스템이다. Ed25519 시그니처는 타원 곡선 시그니처로 여러 수준의 설계 및 구현에서 신중하게 엔지니어링되어 보안을 손상시키지 않으면서 매우 빠른 속도를 달성한다.
    출처: https://naleejang.tistory.com/218 [Nalee와 함께 떠나는 IT이야기]

성능 자체는 ED25519가 더 개선된 것으로 보인다.
책에서는 RSA를 기준으로 한 것으로 생각되어 일단 RSA를 선택하도록 하겠다.

키페어에 이름을 작성하고 키 페어 다운로드를 클릭하자.

작성한 이름의 pem 파일이 다운로드 되었다.
인스턴스 시작을 클릭하자.

개시됨 옆에 나오는 id를 클릭해서 EC2 목록으로 이동하자.


인스턴스 생성 및 구동이 완료되었다.

하지만 아직 한가지 문제점이 남아 있다.
현재는 인스턴스를 재기동 할때마다 새로운 IP가 발급되는 상태이다.
이럴 경우 매번 접속하는 IP가 변경되기 때문에 번거롭다.
그러므로 고정 IP를 설정하도록 하자.

EIP 할당


왼쪽 메뉴에 네트워크 및 보안 항목에서 탄력적 IP를 선택하자.
그리고 탄력적 IP 할당을 클릭하자.


이러한 메뉴가 나온다.

책에 나오는 UI와는 사뭇 다른 구조로 되어 있다.
일단 기본적인 설정 그대로 할당을 해보도록 하자.

고정IP 한개가 발급되었다.

여기서 우측 상단 작업 버튼을 클릭해서 주소 연결을 해야 한다.


리소스 유형을 인스턴스로 설정한다.
그리고 인스턴스 항목을 클릭하면 현재 실행가능한 인스턴스 목록이 노출되는데,
나는 아직 한개 뿐이므로 바로 선택하면 된다.

그리고 프라이빗 IP주소도 선택을 해주자.

아래 재연결에 대한 설정이 새롭게 추가된 것으로 보인다.
일단은 허용하지 않고 시작하도록 하겠다.

다시 인스턴스 메뉴로 가서 갱신을 해보면 탄력적 IP가 할당된 것을 확인 할 수 있다.

EC2 서버 접속

이제 환경이 구성된 EC2 서버를 접속해보도록 하자.

나는 윈도우 환경에서 진행하는 관계로
putty를 사용해서 접속할 예정이다.

puttygen 으로 ppk 생성

AWS EC2를 생성하면서 받았던 pem키는 putty에서 그대로 사용할 수 없다.
그래서 사용이 가능하도록 ppk로 변환이 필요한데, 이때 사용하는 프로그램이 puttygen이다.

상단 메뉴에서 Converstions을 선택하고 import key를 선택해서 pem키를 열자.

RSA로 생성한 키임을 확인한 뒤 save private key를 클릭하면 경고창이 하나 뜬다.
예를 선택해주자.

원하는 저장경로와 파일명을 기입하고 저장을 하자.

putty 실행

왼쪽 메뉴에서 Connection > SSH > Auth 메뉴로 가자.

Browse를 눌러서 아까 생성한 ppk를 선택한다.

왼쪽 메뉴에서 session을 선택한다.

HostName 칸에는 ec2-user@탄력아이피를 작성한다.
Amazon Linux에서는 기본적으로 ec2-user@ 패턴으로 제공되는것 같다.

Open을 눌러보자.

드디어 console에 접속했다.

초기 필수 설정

타임존 변경

우선 서버에 설정된 시간대역을 확인해보자.

시간대역이 KST가 아니다.
수정하도록 하자.

  • 명령어
    sudo rm /etc/localtime
    sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

원하는데로 시간대역이 수정되었다.

Hostname 변경

현재 Hostname은 ec2-user@ip로 표현되고 있다.
명시적으로 구분하기 좋게 Hostname을 서비스명으로 할당해 보자.

AWS document를 검색해보니 몇가지 방법을 제시해주고 있다.
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html

책에서는 amazon linux 1이기 때문에 1-2 방식을 가이드하고 있다.

sudo vim /etc/sysconfig/network

작성을 완료후 :wq로 저장후 나온다.

sudo reboot를 한 다음 다시 putty를 켜보았는데 반영이 되지 않았다.
해당 방식은 amazon linux 2에서는 지원이 되지 안된다는 것을 확인했다.

그래서 1-1 방식으로 변경을 시도했다.
sudo hostnamectl set-hostname spring-aws-study

이번에는 성공적으로 HostName이 수정되었다.

이제 변경된 HostName을 호스트 주소 검색에 포함 시켜야 한다.
/etc/hosts에 추가하도록 하자.

sudo vim /etc/hosts


편집기가 열리면 127.0.0.1 호스트명 을 작성하고 :wq로 저장하고 편집기를 닫자.

정상적으로 등록이 되었는지 확인해보자.

에러메세지가 출력되지만 설정자체는 정상적으로 되었다.
아직 80포트로 실행되는 서비스가 없어서 발생하는 에러이다.

등록이 실패한 경우에는
Could not resolve host: 로 시작되는 에러메세지가 출력된다.

JAVA 8 설치

JAVA가 설치 되있는지를 확인해자.
java -version

JAVA가 기본적으로 설치가 안되있는 것 같다. 설치하도록 하자.
sudo yum install -y java-1.8.0-openjdk-devel.x86_64

여기서 yum이라는 명령어가 생소할 수 있는데,
yum은 .rpm으로 끝나는 레드햇 계열의 저장소에서 패키지를 관리하는 명령이다.

뭔가 잔득 설치가 된다.

JAVA 설치 확인을 다시해보니 정상적으로 잘되었다.

마무리

아마존 AWS 서비스 계정 생성부터
인스턴스 생성, 고정 IP 할당 및 적용, EC2 서버 접속과 기본적인 설정들을 진행해보았다.

개인적으로 GCP 튜토리얼 강의를 들었을때 보다는 AWS가 UI적으로는 조금 더 불편했던 것 같다.
특히 AWS에서는 인스턴스에 대한 자체적인 웹 console이 지원되지 않는 건지 못찾았다. 그래서 putty를 사용해서 접속해야만 했다.

이 부분은 좀 더 찾아봐야 할 것 같다.

다음장에서는 아마존에서 제공하는 데이터베이스 서비스인 AWS RDS 환경을 구축해보도록 하겠다.

Git hub : https://github.com/kdh85/spring-aws-study.git

profile
멈추지 않는 사람이 되고 싶어요!
post-custom-banner

0개의 댓글