업데이트:


AWS EC2 인스턴스를 프리티어로 실행시켜보고

접속 및 초기세팅을 해보도록 하겠습니다.

:bangbang: 최대한 정확한 정보를 전달하기 위해 많은 블로그, 문서와 자료들을 참고했으나 사실과 다를 수 있습니다.

AWS 서비스 특성상 잘못된 옵션 설정으로 요금이 발생할 수 있습니다.

이 글을 따라서 옵션을 설정했다가 요금이 발생해도 책임을 지지 않으니, 철저히 알아보시고 선택하시기 바랍니다.


AWS EC2 인스턴스 시작

EC2 콘솔 접속

image

AWS EC2 콘솔을 검색해 접속합니다.


인스턴스 시작

image

인스턴스 시작 버튼을 누릅니다.


단계 1: Amazon Machine Image(AMI) 선택

image

프리 티어로 사용 가능하며, AWS에서 많은 호환 및 편리성을 제공하는 Amazon Linux 2 AMI를 선택합니다.


단계 2: 인스턴스 유형 선택

스크린샷 2022-03-09 오후 4 11 58

프리 티어로 사용 가능한 t2.micro를 선택하고, 다음: 인스턴스 세부 정보 구성을 누릅니다.


단계 3: 인스턴스 세부 정보 구성

스크린샷 2022-03-09 오후 4 15 21

여기서는 기본 설정값을 그대로 두고, 다음: 스토리지 추가를 누릅니다.


단계 4: 스토리지 추가

스크린샷 2022-03-09 오후 4 17 03

AWS 문서에 따르면,

"현재 계정당 30GB의 Amazon Elastic Block Store(Amazon EBS) 스토리지에만 프리 티어가 적용됩니다."라고 안내하고 있습니다.

(제목에 Windows라 적혀있으나, 다른 AMI들도 같지 않을까? 하는 추측으로 진행했습니다. 요금 발생 시 책임을 지지 않으니, 철저히 알아보시고 적용하시기 바랍니다.)

현재 하나의 EC2만 사용하기 때문에 계정 당 최댓값인 30GB를 할당해 줍니다.

ps. 유명 기술 블로거 동욱님의 글 기억보단 기록을 - 4) 스프링부트로 웹 서비스 출시하기 - 4. AWS EC2 & RDS 구축하기 에서도 동일한 내용으로 안내하고 있습니다.

다음: 태그 추가 를 클릭합니다.


단계 5: 태그 추가

image

Name 키의 값으로 EC2의 이름을 지정해 줍니다.

저는 Kafka를 실행시키기 위한 용도로 EC2를 생성하고 있으므로, 위와 같이 작성했습니다.

다음: 보안 그룹 구성을 클릭합니다.


단계 6: 보안 그룹 구성

스크린샷 2022-03-09 오후 4 56 09

이 부분을 제대로 설정하지 않으면 보안이 허술해져 타인이 EC2에 무단으로 접속해 사용할 수 있습니다.

그러면 엄청난 요금이 과금될 수 있습니다.

내 IP를 선택하면 현재 작업중인 컴퓨터의 IP가 자동으로 입력됩니다.

집의 IP를 기본으로 등록해놓고, 이후에 다른 장소에서 접속할 때

해당 IP를 그때그때 잠깐씩 추가했다가 삭제해 주는것이 보안상 안전합니다.

저는 EC2에서 띄운 Kafka에 로컬 컴퓨터에서만 접속할 것이기 때문에

  • SSH - Home 설정
  • Kafka broker - Home 설정
  • Zookeeper - Home 설정

만 하면 되지만, 보통 웹 애플리케이션을 많이 띄우기 때문에 맨 아래에

  • any http
  • any https

설정도 참고용으로 추가했습니다.

웹 서비스 같은 경우, 서비스 특성상 외부 웹에서 EC2에 HTTP(80 포트), HTTPS(443 포트) 로 접속해야 하기 때문에

위와 같이 설정합니다.

이렇게 설정하지 않으면 외부에서 웹 서비스 접속을 하지 못합니다.

보안 규칙이 다 등록되었으면 검토 및 시작 버튼을 누릅니다.


단계 7: 인스턴스 시작 검토

image

최종적으로 시작할 EC2 인스턴스의 전체 정보들을 확인하는 페이지입니다.

자동으로 펼쳐서 표시되지 않는

  • 인스턴스 세부 정보
  • 스토리지
  • 태그

부분들도 모두 펼쳐서 꼭 확인해 보시기 바랍니다.

모두 확인이 끝났으면, 시작하기 버튼을 클릭합니다.


키 페어 설정

기존 키 페어가 없는 경우 : 키 페어 생성

스크린샷 2022-03-09 오후 5 03 54

기존에 키 페어가 없는 경우, 새 키 페어 생성을 선택한 다음, 키 페어 이름을 입력합니다.

키 페어 다운로드 버튼을 클릭해 키 페어를 PC에 다운로드 합니다.

지금 생성하려는 EC2는 이 키 페어가 반드시 있어야만 접속할 수 있기 때문에,

다운로드가 잘 되었는지 잘 확인해야 합니다.

확인이 되었으면, 인스턴스 시작 버튼을 누릅니다.


기존 키 페어가 있는 경우

스크린샷 2022-03-09 오후 5 06 56

기존 키 페어가 있는 경우에는, 기존 키 페어 선택을 선택하고, 자신의 PC에 있는 키 페어의 이름을 선택합니다.

그리고 아래에 있는 체크박스를 체크하고, 인스턴스 시작 버튼을 누릅니다.


EC2 인스턴스 상태 확인

image

인스턴스 보기 버튼을 클릭합니다.


image

위와 같이 인스턴스 상태 부분이 대기 중 에서 실행 중으로 바뀔 것 입니다.

실행 중으로 바뀌었다면, EC2 인스턴스가 정상적으로 실행된 것입니다.


Elastic IP 할당 및 연결

현재 Public IP가 자동으로 할당되어 있어, 터미널로 접속을 할 수 있지만, 단점이 있습니다.

EC2 인스턴스를 중지했다가 다시 시작하면, Public IP가 변경됩니다.

(재부팅 시에는 변경되지 않습니다.)

IP는 컴퓨터의 고유 주소인데, 이것이 변경되면 관리가 매우 불편해지기 때문에 고정 IP를 할당 해 보겠습니다.

AWS 에서는 이를 위한 서비스로 Elastic IP(탄력적 IP) 서비스를 제공합니다.

AWS 문서1, AWS 문서2에 따르면, 계정 당 실행 중인 인스턴스에 연결된 엘라스틱 IP 주소(EIP) 한 개는 무료로 사용할 수 있다고 합니다.

거꾸로 말하면, 실행중이지 않은 인스턴스에 연결되어 있지 않거나(중지된 인스턴스 또는 연결되지 않은 네트워크 인터페이스와 연결된 경우 등),

어느 곳에도 연결되어있지 않은 탄력적 IP를 계정에 갖고있다면(할당받은 상태로 있다면) 요금이 부과된다는 의미입니다.


Elastic IP 할당

스크린샷 2022-03-09 오후 5 25 50

EC2 대시보드의 왼쪽 메뉴에서 탄력적 IP 메뉴를 클릭합니다.


image

탄력적 IP 주소 할당 버튼을 클릭합니다.


image

AWS 리전이 맞는지 확인하고, EC2 설정할 때와 동일하게 Name 태그를 설정해줍니다.

그리고 할당 버튼을 클릭합니다.

:bangbang: 주의할 점 : 탄력적 IP 주소를 할당하면, 해당 계정에 새로운 탄력적 IP를 할당해 준다는 뜻 입니다.

위에서 언급했듯이, 이 “할당”버튼을 누르자 마자 바로 실행중인 EC2 인스턴스에 연결해야 합니다.

중지되어있는 EC2 인스턴스에 연결하거나, 어느 곳에도 연결하지 않으면

그 시간동안 요금이 부과됩니다.


Elastic IP를 EC2 인스턴스에 연결

스크린샷 2022-03-09 오후 5 31 35

작업 > 탄력적 IP 주소 연결 을 클릭합니다.


스크린샷 2022-03-09 오후 5 31 46

아까 생성한 EC2 인스턴스를 선택하고, 연결 버튼을 누릅니다.


Elastic IP 해제

만약 이후에 연결할 인스턴스가 없다면,

스크린샷 2022-03-09 오후 5 41 12

만약 기존에 EC2 인스턴스에 연결되어있는 탄력적 IP의 연결을 해제하려면

작업 > 탄력적 IP 주소 연결 해제

를 통해 EC2 인스턴스와의 연결을 먼저 해제합니다.

:bangbang: 주의할 점 : 위에서 언급했듯이, 이 “탄력적 IP 주소 연결 해제”를 하자마자 “탄력적 IP 주소 릴리스”를 해야 합니다.

주소 연결이 해제된 탄력적 IP는 어느 곳에도 연결되지 않은 상태이므로

해당 시간동안 요금이 부과됩니다.


Elastic IP 릴리스

스크린샷 2022-03-09 오후 5 40 25

작업 > 탄력적 IP 주소 릴리스

를 통해 계정에 할당받았던 탄력적 IP 주소를 릴리즈 해 줍니다.

즉, 계정에 할당되어 있던 탄력적 IP를 다시 AWS에 반납한다고 이해하시면 됩니다.

탄력적 IP를 제거할 때는 Elastic IP 해제, Elastic IP 릴리스의 과정을 시간 공백 없이 바로 이어서 해야

요금이 부과되지 않습니다.


EC2 인스턴스 터미널 접속

이제 생성한 EC2 인스턴스에 터미널 접속을 해보겠습니다.

제 환경은 Mac이고, Window 환경인 분들의 경우 putty를 사용해 접속하실 수 있습니다.

만약 Git Bash를 사용하시면 Mac과 동일한 방법으로 접속하실 수 있습니다.

SSH config 파일 설정

$ cd ~ # Home 경로로 이동
$ sudo mkdir .ssh && cd ~/.ssh # .ssh 폴더 생성
$ cp ${AWS EC2 pem 키의 경로 (파일 이름까지)} ~/.ssh
$ sudo chmod 400 ~/.ssh/${pem키 파일 이름}.pem
$ sudo vim ~/.ssh/config

위의 명령어들을 차례대로 입력하면 vim 창이 뜹니다.

Host ${SSH 연결 시에 사용할 아무 이름 새로 지정}
      HostName ${AWS 탄력적 IP}
      User ec2-user
      IdentityFile ~/.ssh/${pem키 파일 이름}.pem

위와 같이 입력하고 :wq!를 입력해 저장하면서 밖으로 빠져 나옵니다.

SSH 터미널 접속

$ ssh ${config 파일에서 지정한 SSH 연결 이름}

위의 명령어를 입력해 접속하면,

image

위와 같은 문구가 나오는데, yes를 입력하고 Enter를 누릅니다.

image

그러면 위와 같이 EC2 인스턴스에 SSH를 통한 터미널 접속이 됩니다.


EC2 인스턴스 서버 초기 세팅

CLI(커맨드 라인 인터페이스) 부분 변경

스크린샷 2022-03-09 오후 6 25 39

CLI 앞 부분은 ${User name}@${Private IP 주소} 의 형태로 출력되고 있습니다.

이런 형태는 여러 개의 터미널 창으로 여러 서버에 접속할 경우,

각각의 터미널이 어느 서버에 접속해있는지 구분하기가 매우 어렵습니다.

이름 표시 설정을 통해 위의 형태가 아닌, 직접 지정한 이름이 출력되도록 수정해 보겠습니다.

$ sudo vim ~/.bashrc

위의 명령어를 입력해 bash 설정 파일을 엽니다.

그리고 맨 아래 부분에

USER=${CLI에 표시할 이름}
PS1='[\\e[1;31m$USER\\e[0m][\\e[1;32m\\t\\e[0m][\\e[1;33m\\u\\e[0m@\\e[1;36m\\h\\e[0m \\w] \\n\\$ \\[\\033[00m\\]'

위의 내용을 붙여 넣습니다.

image

저는 위와 같이 붙여넣었습니다.

:wq! 를 입력해 변경사항을 저장하면서 파일 밖으로 빠져 나옵니다.

$ source ~/.bashrc

위의 명령어를 입력해, 변경된 .bashrc 파일의 내용을 즉시 적용합니다.

image

그러면 위와 같이 변경된 것을 확인할 수 있습니다!


쉘 스크립트로 한방에 실행하기

위의 과정들을 일일이 복붙해서 실행하기 귀찮아, 하나의 쉘 스크립트 파일로 만들어서 한방에 실행해 보겠습니다.

sudo vim ~/set-server-name.sh

위의 명령어를 입력해 vim을 켜고,

set-server-name.sh

#!/bin/bash

if [ $# -ne 1 ] ;  then
  echo '설정할 이름을 올바르게 입력해 주세요. ex) source ~/set-server-name.sh MY-SERVER'
  return 1
fi

echo -e "\nUSER=${1}" >> ~/.bashrc
echo "PS1='[\\e[1;31m\$USER\\e[0m][\\e[1;32m\\t\\e[0m][\\e[1;33m\\u\\e[0m@\\e[1;36m\\h\\e[0m \\w] \\n\\$ \\[\\033[00m\\]'" >> ~/.bashrc

source ~/.bashrc

위의 내용을 복사해서 붙여넣습니다.

:wq!를 입력해 파일을 저장하면서 밖으로 나옵니다.

$ source ~/set-server-name.sh ${CLI에 표시할 이름}

그리고, 위와 같이 명령어를 입력합니다.

image

그러면 아까처럼 한방에 잘 변경된 것을 볼 수 있습니다!


시간대 변경

image

위와 같이

$ date

명령어를 입력해 보면, 서버의 기본 시간대가 UTC임을 알 수 있습니다.

이 시간대를 한국 시간대로 변경해 보겠습니다.

$ sudo rm /etc/localtime # 기존 시간대 설정 삭제
$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime # 서울 시간대로 설정
$ date # 현재 시간대 확인

위의 명령어들을 입력하면,

image

위와 같이 서버의 시간대가 한국 시간대로 바뀐것을 확인할 수 있습니다!


쉘 스크립트로 한방에 실행하기

이것도 역시 위의 과정들을 일일이 복붙해서 실행하기 귀찮아, 하나의 쉘 스크립트 파일로 만들어서 한방에 실행해 보겠습니다.

$ sudo vim ~/set-korea-time.sh

위의 명령어를 입력해 vim을 켜고,

set-korea-time.sh

#!/bin/bash

sudo rm /etc/localtime # 기존 시간대 설정 삭제
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime # 서울 시간대로 설정
date # 현재 시간대 확인

위의 내용을 복사해서 붙여넣습니다.

:wq!를 입력해 파일을 저장하면서 밖으로 나옵니다.

$ sh ~/set-korea-time.sh

그리고, 위와 같이 명령어를 입력합니다.

image

그러면 아까처럼 한방에 잘 변경된 것을 볼 수 있습니다!


참고


태그: ,

업데이트:

댓글남기기