여니의 프로그래밍 study/AWS

AWS Lightsail 인스턴스 및 고정 IP 생성하기

여니's 2025. 12. 19. 23:27

안녕하세요.

오늘은 AWS Lightsail을 통해 서버 구성을 해보려고 합니다.

 

AWS (Amazon Web Service)

: 아마존에서 운영하는 클라우드 서비스 전체를 의미하며 서버, 저장소, 데이터베이스 등 IT 인프라 구축에 필요한 부품을 빌려줍니다.

 

AWS EC2 (Elastic Compute Cloud)

: AWS에서 제공하는 가장 대표적인 가상 서버로 성능, 용량, 운영체제, 네트워크 설정 등을 사용자가 직접 원하는대로 선택하고 제어하여 관리할 수 있습니다. 

만약 사용자 수가 급격하게 늘어서 서버의 성능을 늘려야할 경우, 순식간에 빠르게 변경할 수 있는 장점이 있습니다.

 

AWS Lightsail

: 초보자나 소규모 프로젝트를 위해 서버(CPU/Memory) + 하드디스크(SSD) + 데이터 전송량(트래픽)을 한 번에 이용할 수 있는 패키지입니다.

클릭 몇 번이면 워드프레스 블로그나 개발 서버를 만들 수 있고 월 3.5달러와 같이 요금이 고정되어 있어 예산 관리하기 편리합니다.


공부를 목적으로 진행하는 사이드 프로젝트이기 때문에

요금 면에서 부담이 없는 AWS Lightsai로 서버를 구성해보고자 합니다.

 

[서버 구성 프로세스]

1. 서버 2대 구매

2. 무료 소프트웨어 설치

3. 연걸 설정

 

AWS Lightsail에서는 하기 기능을 제공해줍니다.

- 인스턴스

- 컨테이너

- 데이터베이스

- 네트워크

- 스토리지

 

차례대로 살펴보겠습니다.

 

1. 인스턴스

인스턴스는 클라우드에서 빌려주는 가상서버 한 대를 의미합니다.

즉 클라우드 환경에서 가상화 기술을 통해 사용자에게 할당된 가상서버 단위입ㄴ디ㅏ.

 

인스턴스 안에는 OS(윈도우/리눅스), CPU, 메모리가 다 갖춰져있습니다.

만약 물리서버(WAS / WEB)를 클라우드로 옮기면 그게 바로 인스턴스가 되는 것입니다.

 

2. 컨테이너

컨테이너는 애플리케이션과 이를 실행하는 데 필요한 모든 환경(라이브러리, 설정 파일 등)을 하나로 묶은 소프트웨어 패키지를 의미합니다.

대표적인 기술로는 도커, 쿠버네티스가 있습니다.

인스턴스에 직접 프로그램 설치하는 게 아닌 미리 만들어진 이미지를 가져와 실행시키는 방식입니다.

 

인스턴스가 집이라면? 컨테이너는 집 안에 보관하는 정리함 혹은 박스라고 비유할 수 있습니다.

옛날 스타크래프트 게임 할 때 설치 과정 없이 폴더만 복사해서 실행하면 바로 게임을 할 수 있는 무설치 버전이 컨테이너의 원조입니다.

 

 

3. 데이터베이스

데이터의 검색과 관리를 효율적으로 하기 위해 구조화하여 저장해놓은 데이터의 집합체를 의미합니다.

관리형 테데이터베이스와 설치형 데이터베이스가 존재합니다.

 

4. 네트워크

서버와 서버, 혹은 사용자와 서버 간의 통신 연결 및 관리 기능을 의미합니다.

고정 IP의 경우, 인스턴스를 재부팅해도 변경되지 않는 영구적인 공인 IP 주소로 서버 운영 시 필수입니다.

로드밸런서의 경우, 들어오는 네트워크 트래픽을 여러 대상(인스턴스)으로 효율적으로 분배하여 시스템의 가용성을 높이는 것을 의미합니다.

방화벽의 경우, 미리 정의된 보안 규칙에 기반하여 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 시스템입니다.

 

5. 스토리지

스토리지는 데이터를 영구 또는 일시적으로 저장하는 저장매체를 의미합니다.

스토리지는 블록 스토리지, 오브젝트 스토리지 총 2개로 나뉩니다.

블록 스토리지는 내 컴퓨터의 C드라이브처럼 컴퓨터 안에 박혀 있는 하드 디스크를 의미합니다.

오브젝트 스토리는 구글 드라이브와 같이 컴퓨터 밖에 따로 있는 인터넷 저장소로 AWS에서는 버킷(Bucket)이라고도 부릅니다.


WEB / WAS 서버

저는 WEB 서버와 WAS 서버 총 인스턴스를 2개 생성하고자 합니다.

WAS 서버만 있어도 웹 서버 기능이 기본적으로 내장되어 있어 서비스는 돌아갑니다.

하지만 WAS 서버와 WEB 서버를 나누는 이유는 3가지가 있습니다.

 

첫 번째로는 성능(속도) 면에서 우수합니다. 

WEB 서버는 CSS, HTML, 이미지와 같은 변하지 않는 정적파일을 처리하는 속도가 WAS 보다 압도적으로 빠릅니다.

따라서 단순한 파일 요청 때문에 중요한 로직 처리가 느려지는 것을 막아줍니다.

 

두 번째로는 장애 시 안전장치로 사용하여 대응하기 위함입니다.

WAS 서버 한 대가 다운되어 버리면 WAS 서버만 있을 경우엔 바로 사이트 연결 불가 에러가 뜨게 됩니다.

그러나 WEB + WAS 서버 구성일 경우, 앞단의 WEB 서버가 1번 WAS 서버의 다운 상태를 확인하고 2번 WAS 서버로 우회시켜주는 로드 밸런싱 기능을 통해 장애 대응을 진행합니다.

 

세 번째로는 보안 측면 관련된 내용입니다.

해커가 공격하게 될 경우 맨 앞 단에 있는 서버부터 털리고 사실상 WEB 서버가 털리면 이미지 파일이나 HTML 뿐이어서 리스크가 적습니다.

 

WEB 서버(Nginx, Apache, Webtob 등)은 단순히 페이지만 보여주는 것이 아닌 소프트웨어적인 로드밸런싱 기능도 제공합니다.

 

WEB 서버 소프트웨어

1. Nginx (엔진엑스)

정적 파일을 처리하고 뒷단에 있는 WAS에게 요청을 넘겨주는 역할을 합니다.

오픈 소스로 동시 접속 처리에 특화되어 있습니다.

 

2. Webtob (웹투비)

유료 소프트웨어로 한국 티맥스소프트 제품입니다.

JEUS와 함께 쓸 때 성능이 극대화되도록 설계되어 있으며 일반적인 WEB 서버보다 보안 기능과 관리자 화면이 강력합니다.

 

3. Apache (아파치)

Nginx 가 나오기 전까지 전 세계를 지배했으며 접속자 폭주 시 Nginx보다 조금 무거워지는 경향이 있습니다.

 

WAS 서버 소프트웨어

자바 프로그램을 실행시켜 실제 업무 로직을 처리하는 역할을 합니다.

1. Tomcat (톰캣)

오픈 소스로 가볍고 설치가 쉬어 개발자들이 가장 애용하는 WAS 소프트웨어입니다.

스프링 부트 같은 최신 기술들은 아예 톰캣을 내장해서 다닙니다.

 

2. JEUS (제우스)

유료 소프트웨어로 대규모 트랜잭션을 처리하는 데 특화되어 있습니다.

서버가 여러 대일 때 세션(로그인 정보)을 공유하는 클러스터링 기술이 아주 강력합니다.


AWS Lightsail 인스턴스 2대 생성하기

https://lightsail.aws.amazon.com/ls/webapp/home/instances

 

https://lightsail.aws.amazon.com/ls/webapp/home/instances

 

lightsail.aws.amazon.com

 

- 운영체제(OS) : 사용자가 컴퓨터 하드웨어를 쉽게 사용할 수 있도록 관리해주는 소프트웨어로 컴퓨터 전원 켰을 때 바탕화면이 나오고 마우스가 움직이게 해주는 기본 프로그램입니다. 예시로는 Windows, macOS, Linux 등이 있습니다.

 

 

참고로 Ubuntu는 리눅스 계의 갤럭시/아이폰이다.

리눅스는 운영체제의 뼈대로 자동차로 치면 엔진입니다.

우분투는 리눅스 엔진에 핸들, 에어컨 등을 달아놓은 완성차(브랜츠)입니다.

즉, 리눅스라는 운영체제를 사용하기 쉽게 만든 소프트웨어 제품 이름입니다.

 

Amazon Lightsail 홈페이지 접속 후 Create Instance 버튼을 클릭합니다.

 

Instance Location은 기존 설정된 지역 (Seoul) 유지

Instance Image에서 플랫폼은 Linux/Unix

blueprint는 OS Only > Ubuntu 선택 (최신버전)

 

 

SSL 키 에서 사용자 지정 키 생성 버튼 클릭 후 리전 선택 확인 후 생성 버튼을 클릭합니다.

 

키 페어가 생성되면 프라이빗 키가 생성됩니다.

한 번만 다운로드 할 수 있기 때문에 다운로드하여 잘 보관해둡니다.

5달러, 7달러, 12달러 모두 첫 90일 무료이기 때문에 3개월 동안은 12달러 사양으로 설정해보겠습니다 ㅎㅎ

 

 

마지막으로 인스턴스명을 설정해줍니다.

저는 WEB , WAS 2개의 인스턴스를 생성할 거여서 식별 가능하도록 명칭을 지정해주었습니다.

 


고정 IP 설정하기

Create Static IP 버튼을 클릭합니다.

 

 

연결된 인스턴스가 있다면 고정 IP 연결은 무료입니다!! 

인스턴스 메인 관리 페이지에서 메뉴 클릭 후 관리 탭 클릭합니다.

 

방화벽 설정하기

인스턴스 메인 관리 페이지에서 Manage 클릭합니다.

Networking 탭을 클릭합니다.

 

IPv4 Firewall 에서 Add rule을 클릭하여 사용할 포트를 열어줍니다.

필수적으로 필요한 MySQL(3306), HTTPS(443), SpringBoot(8080) 서버 포트를 생성합니다.

 

참고로 포트란?

IP 주소가 컴퓨터의 위치라면, 포트는 그 컴퓨터 안에서 실행중인 프로그램의 번호표입니다.

포트가 필요한 이유는 컴퓨터(서버)는 동시에 여러가지 일을 하고 외부에서 만약 데이터가 날아왔을 때 포트 번호가 없다면?

이게 웹 화면을 보여달라는 건지 데이터를 저장해달라는 건지 알 수가 없습니다.

따라서 데이터 꼬리표에 번호를 적어서 보내라!라고 약속한 게 바로 포트입니다.

 

방화벽 설정에서 해당 포트들을 열어준다는 것은

내 서버에 설치된 프로그램들(MySQL, SpringBoot 등)이 외부와 소통할 수 있도록 공식적인 통로를 허가해주는 행위입니다.

 

HTTPS (443) , 자물쇠 달린 안전한 웹사이트(HTTPS)는 무조건 443호로 들어옵니다.

 

 


AWS Lightsail 인스턴스에 SSH로 접속하기

저는 맥북을 사용하고 있으므로 iTerm을 설치했습니다

https://iterm2.com/

 

iTerm2 - macOS Terminal Replacement

iTerm2 by George Nachman. Website by Matthew Freeman, George Nachman, and James A. Rosen. Website updated and optimized by HexBrain

iterm2.com

 

# ssh 키 파일이 있는 곳으로 이동
cd ~/Desktop/AWS/ssh

# 권한 변경
chmod 400 keypareName.pem

# 서버 접속하기
ssh -i keypareName.pem ubuntu@IP

##################################################################
## 단축키 설정
## 리눅스 명령어가 익숙해질 때쯤? 눈 감고도 칠 수 있을 때쯤 등록 예정입니다.
# 설정파일 오픈
nano ~/.ssh/config

# 본인 정보 수정해서 입력 후 저장
# 저장 : Ctrl + O(엔터) -> Ctrl + X(종료)

# WEB 서버 별명 설정
Host my-web
    HostName 43.123.xxx.xxx      # WEB 서버 고정 IP
    User ubuntu
    IdentityFile ~/Downloads/LightsailDefaultKey-ap-northeast-2.pem  # 열쇠 파일 경로

# WAS 서버 별명 설정
Host my-was
    HostName 43.123.xxx.xxx      # WAS 서버 고정 IP
    User ubuntu
    IdentityFile ~/Downloads/LightsailDefaultKey-ap-northeast-2.pem

 

iTemr2 통해 AWS 인스턴스에 접속해보았습니다.

위 명령어를 통해 접속이 완료되었습니다.

이제 인스턴스 내 소프트웨어를 설치해보도록 하겠습니다.