...
AWS Lightsail 서비스
아마존 Lightsail은 AWS에서 만든 가상 프라이빗 서버 (VPS) 이다.
프로젝트를 빠르게 시작하는 데 필요한 가상머신(compute), SSD기반 스토리지, Networking, 로드밸런서, DNS관리, 고정IP, OS, 개발플랫폼(MEAN, Node.js 등), 어플리케이션(Wordpress, Nginx, GitLab, Redmine 등) 등 모두 포함하고 있어 웹서비스를 빠르고 쉽게 구축하는데 특화되어 있는 서비스 이다.
그리고 무엇보다 EC2, RDB 등 개별 서비스를 따로 설정해서 사용하는 것보다 이 Lightsail 하나의 서비스로 웹서버를 운용하는데 매우 저렴하다.
정리하자면, 라이트세일은 기존 EC2에 비해 저렴한 비용과 웹 서비스에 필요한 주요 기능들을 한 곳에서 쉽게 관리할 수 있게 구성된 입문자용 서비스라고 보면 된다.
VPS(Virtual private server) 란?
하나의 물리 서버를 여러 개의 가상 서버로 쪼개어 사용하는 것을 의미 한다.
그렇게 쪼개어진 가상 서버를 여러 명의 클라이언트가 나누어 쓰는 구조이다.
따라서 하나의 물리서버를 다른 이들과 공유하는 개념이기는 하지만 각자 독립적인 서버 공간을 가지는 것이 가능하다.
다만, 하나의 물리서버에서 컴퓨팅 리소스들을 모든 사용자와 공유하기 때문에 만약 한 사용자가 너무 많은 리소스를 점유할 경우 RAM, CPU 등에 큰 영향이 간다는 단점이 존재한다.
일반적으로 AWS로 하나의 웹 서버를 구축하기 위해선 EC2, VPC, RDB, S3 등 여러 서비스들에 대한 이해가 수반돼야 한다.
가장 많이 사용해 접근하기 쉬울것 같은 EC2는 사실 만만한 서비스가 아니다.
용도별로 수백가지 인스턴스 타입이 제공되며, 네트워크부터 스토리지까지 수많은 옵션을 제공하고 있다.
또한 VPC와 같은 가상 네트워크 구성이 필수가 되면서, EC2 하나도 제대로 사용하려면 배워야하는게 아주 많다.
그런 관점에서 Lightsail은 복잡한 EC2에 비해 간편하고 직관적이게 인스턴스를 만들 수 있다. 인스턴스뿐만 아니라 컨테이너, 스토리지, 데이터베이스도 쉽게 만들 수 있게 제공한다.
몇 번의 클릭으로 웹사이트, 웹 애플리케이션, 네트워크, 보안 등등 환경을 자동으로 구성할 수 있는 것이다.
그리고 규모가 커진다면 확장도 쉽게 할 수 있고, Lightsail에서 만들고 설정한 Instance를 Snapshot을 통해 EC2로 쉽게 마이그레이션 할 수 있도록 되어 있다.
즉, 아마존 라이트세일은 결국 기존의 AWS 서비스들의 짬뽕이라고 말할 수 있지만, AWS가 너무 복잡하기 때문에 만들어진 서비스라고 보면 된다. (무엇보다 저렴하다는 이 특징만으로 접근해도 무리없다)
위의 구성 메뉴 처럼 간단하게 몇번의 클릭으로 위의 서비스들을 별도의 설정없이 시작할 수 있게 구성 되어 있다
그러나 이 특징은 장점이자 단점인데, 각 인스턴스에 대한 자세한 설정을 지원 안하는 경우도 있기 때문에 Lightsail로 실제 서비스를 위한 웹 서버를 구축할 때는 반드시 Lightsail의 지원 범위를 살펴봐야 한다.
Lightsail에는 아래와 같은 서비스 제한이 있다.
- 계정당 최대 20개의 인스턴스 유지
- 5개의 고정 IP (EIP)
- 총 3개의 DNS 존
- 총합 20TB의 블록스토리지(디스크) 연결
- 5개의 로드 밸런서
- 최대 20개 인증서
만일 위 조건을 초과할 경우 일반적인 AWS 방식대로 EC2를 직접 생성하시고 진행해야 된다.
전체 맥락으로 보면 굉장히 작은 규모의 서비스인데, 매번 1년 선결제 하는게 부담되셨던 분들은 Lightsail은 좋은 선택지가 될수 있다.
그러나 Lightsail은 안정적인 서비스를 원하는 팀에게는 추천하기 애매한 서비스이다.
일단 SLA를 제공하지 않고, t2타입의 특성상 장애가 발생할 가능성이 있다. 또한 VPC 관리 등이 되지 않기 때문에 뭔가 불투명하고 막연하다.
가격이 중요하지 않은 업체는 그냥, m5.large를 multi-az 구성해서 튼튼하게 가는게 여러가지로 낫다.
EC2 vs Lightsail 비교
Lightsail 실전 구축 세팅
실제로 라이트세일 인스턴스를 생성해 보자.
홈페이지 UI가 영어로 나온다면 우측 하단에 한국어로 변경할 수 있다.
Lightsail 서비스는 아마존 웹 서비스 콘솔에 속하지않는 아마존이 따로 또 만든 별도의 서비스라고 보면 된다.
사이트 url을 보면 서로 도메인이 다른걸 볼 수 있다.
Lightsail 인스턴스 생성
먼저 가장 기본 뼈대가 되는 인스턴스를 생성해보자.
상단 메뉴에서 인스턴스 항목에 들어가서 인스턴스 생성 버튼을 누른다.
상단 메뉴의 항목에 대해서는 다음과 같다.
- 인스턴스 :본인이 지금 가지고 있는 컴퓨팅 목록 (EC2)
데이터베이스 : 데이터베이스 서비스 (RDB). 가격은 15$ 첫 달 무료부터 115$까지 다양하다. - 네트워킹 : 고정 아이피, DNS 영역 생성 , 그리고 로드 밸런서 생성을 관리한다.
- 고정 IP : 인스턴스에서 신규로 만들면 1회용 (재시작 시 다른 아이피 부여) 아이피를 부여받는다 그걸 고정 아이피로 잡아준다.
- DNS 영역 생성 : 도메인, 서브도메인을 관리할 수 있다. [무료, Route 53 연결 가능]
- 로드밸런서 : 만약 A,B서버가 있는데, 만약, A가 과부하가 되고 B는 여유롭면 B의 자원을 끌어다 쓸수록 할 수 있다
- 스토리지 : 인스턴스에 용량이 부족한 경우 블록 단위로 추가 용량을 끌어다 사용 가능하다.
- 스냅샷 : 인스턴스를 통째로 백업이 가능하다. 자동으로 백업이 가능하게 스케쥴러를 설정할 수도 있다.
1. 인스턴스 리전 위치 선택
인스턴스의 위치는 말 그대로 인스턴스를 생성할 위치를 선택하는 것이며, 기본으로 한국이 설정되어 있다.
만약 외국의 특정 지역을 대상으로 서비스하고자 한다면 해당 위치와 간단한 위치로 변경하는 것이 유리하다.
서울은 가용 영역이 4개가 있는데, 만약 여러 서비스를 운영한다면 각자 다른 가용 영역에 인스턴스를 생성해주는 것이 좋다.
만약 A영역에 장애가 발생한다면 A영역에서 사용하는 서비스에 장애가 발생하게 된다.
하지만 다른 서비스를 다른 영역에 분산 배포했다면 모든 서비스가 장애 받지 않기 때문이다.
2. 인스턴스 이미지(OS 세팅) 선택
선택 가능한 이미지로는 Linux/Unix 계열과 MS의 윈도우 계열이 있다.
윈도우는 라이센스 관련 요금이 리눅스보다 더 비싸다.
블루프린트 항목에서는 앱+OS와 OS 전용 중 하나를 선택할 수 있다.
만일 Node.js로 만든 프로젝트를 한다고 하면, 아래 보이는 항목에서 Node.js 블루프린트를 선택하겠지만, 여기에 나오는 이미지들의 대부분은 Bitnami를 사용한다.
만약 Bitnami가 익숙하시면 무관 하겠지만, 아닌 분들은 따로 OS 전용 메뉴에 가서 수동으로 선택해 주어야 한다.
우분투를 직접 설치할 것이므로 OS 전용으로 선택한다.
3. 인스턴스 보안을 위한 키페어 생성
4. 인스턴스 플랜(가격) 선택
기존 AWS 가입자라 하더라도 Lightsail이 처음이라면 최소 사양인 nano 플랜 ($3.5) 은 한달간 사용이 무료로 사용 할 수 있었다.
그런데 최근 아마존이 배포가 커져서 그런지 다음과 같이 무려 3개의 플랜을 3개월 동안 이용할수 있다. (인스턴스가 남아 도나..)
실제 3달은 아니고, EC2의 프리티어와 동일하다고 보면된다.
예를들어 EC2 인스턴스 사용 시간이 750시간 (24시간 * 31일) 까지만 무료라서, 2대의 인스턴스를 사용하신다면 2개 인스턴스 사용 시간의 총합이 750시간을 넘기면 안되는 것과 같이 Lightsail 역시 같은 원리이다.
우선 단순히 연습용도로 이용하는거니까 가장 하위 플랜인 $3.5를 선택해주자.
실제 개발을 하다보면 수없이 인스턴스를 삭제하고 생성한다. 미리 좋은 걸 선택할 필요가 없다.
다만, Spring Boot/Jenkins 등 자바 애플리케이션을 실행시키길 원하는 분들은 최소 메모리 1GB 이상을 선택해야 좋다.$3.5 플랜은 메모리가 512MB인데, 실제 Linux 시스템에 필요한 메모리를 제외하면 200~300MB만 사용할 수 있어 Spring Boot를 실행시킬 수가 없기 때문이다.그러니 간단한 Node 혹은 Python 스크립트를 실행할 정도일때만 낮은 타입을 고르도록 하자.
5. 인스턴스 생성 마무리
마지막으로 인스턴스의 이름을 지정해주면 된다.
인스턴스 이름 옆에 인스턴스 생성 개수도 정할 수 있는데, 여러 개의 인스턴스를 만들어 로드밸런서를 붙여줄 수 니다.
그리고 Key - Value 태그를 이용해서 Production 환경일 때 사용할 키값을 등록해서 사용할 수 있다.
6. 인스턴스 고정IP / 방화벽 설정
라이트세일 인스턴스 관리 메뉴에 들어가서 네트워크 탭에서 설정 할 수 있다.
기존 보안그룹 메뉴보다 되게 심플하게 구성되어 있어 정말 쉽게 세팅이 가능하다.
SSH 접속을 내 아이피에서만 접속하도록 변경해보자.
만일 웹 UI에서 터미널 접속을 한다면 Lightsail 브라우저 SSH 허용도 같이 체크하면 된다.
Lightsail 인스턴스 SSH 외부 접속하기
AWS에서 지원하는 브라우저 터미널에 바로 접속해서 사용해도 되지만,
우리는 좀더 직관적이고 좋은 툴 Mobaxterm을 통해 접속해보겠다.
모바엑스텀 사용법은 다음 포스팅을 참고 바란다.
다시 인스턴스 관리 메뉴로 들어가서 연결 항목에 들어가면 외부 연결을 위한 필요항목들이 있다.
이들을 모바엑스텀 연결 설정 항목에 넣어준다.
터미널에 접속했으면 이제 웹서버를 설치해서 웹서비스가 잘 가동되고 있는지 확인해 보자. (우분투 기준)
아파치 웹서버를 설치했다면, 라이트세일 인스턴스 메뉴에서 할당된 아이피로 접속해보자.
$ sudo -s # 루트 권한 얻기
$ apt-get update
$ sudo apt-get install apache2 # 아파치 서버 설치
$ service apache2 start # 아파치 서버 시작
Lightsail 도메인 연결하기
라이트세일에 웹서비스를 만들 었으니, 도메인을 인스턴스에 연결해서 웹서비스를 완성 시켜보자.
AWS 도메인 서비스인 Route53에서도 등록할수가 있지만, 이번 강의에선 Lightsail 로만 DNS를 등록하는 방법을 기재해 보겠다.
.com , .co.kr 등등 도메인을 구하기 위해서는 구매를 해야하는데, 아래 포스팅에서 무료로 도메인을 구할수 있으니 참고해보자.
1. 홈메뉴 → 네트워킹 DNS → 영역 생성
2. 구입한 도메인은 연결하고 생성
3. 네임서버를 복사해둔다.
4. Lightsail DNS 레코드 설정
5. Lightsail DNS 네임 서버 설정
freenom 이나 도메인 서버에서 lighsail의 이름 서버를 등록해준다.
freenom 도메인 사이트에서 등록해준다.
6. 일정시간이 지나고, 브라우저에 도메인 url을 치고 접속해본다.
Lightsail 스냅샷 만들기
보통 백업을 위해서 스냅샷을 뜨지만, 라이트세일에서는 본인 서버 사양을 늘리는데 항목들을 그대로 들고 오는 경우 유용하게 사용될 수 있다.
스냅샷은 수동/자동 모두 0.05$GB/달 으로 청구된다.
만약 내가 100GB를 백업한다고 가정하면 달마다 5$를 지불하면 된다.
1. 인스턴스 관리 페이지에 들어가 스냅샷 생성
- 수동 스냅샷 : 본인이 원할 때 스냅샷을 바로 생성
- 자동 스냅샷 : 최대 7개까지 매일 스냅샷을 자동으로 생성
스냅샷은 말그대로 인스턴스의 모든것을 백업하므로 요금을 절약하고 싶다면 개인 클라우드나 AWS S3에 저장하는걸 추천한다.
- LIghstail 스냅샷 0.05GB/달
- S3 0.024GB/달
Lightsail 데이터베이스 생성 & 연결
Amazon Lightsail은 또한 자체 전용 스토리지 공간이 있는 설치된 인스턴스와 별도로 데이터베이스를 생성하는 프로비저닝을 제공한다.
Lightsail 인스턴스 내에 데이터베이스를 설치할수 있겠지만, 컴퓨팅 서버와 DB 서버는 따로 분리하는 것이 정석이다.
MySQL 데이터베이스 인스턴스 생성
1. 홈메뉴에서 데이터베이스 탭에 들어가 데이터베이스 생성
2. MySQL을 선택하고 데이터베이스에 접속하기 위한 계정 설정
3. 데이터베이스 플랜 선택
- $15- 1GB 메모리, 1 vCPU, 40GB SSD 스토리지 및 100GB 전송
- $30– 2GB 메모리, 1 vCPU, 80GB SSD 스토리지 및 100GB 전송
- $60– 4GB 메모리, 2 vCPU, 120GB SSD 스토리지 및 100GB 전송
- $115– 8GB 메모리, 2 vCPU, 240GB SSD 스토리지 및 200GB 전송
4. 데이터베이스 인스턴스 명 설정하고 생성 (좀 오래걸림)
MySQL 워크벤치에서 Lightsail 데이터베이스 접속하기
1. MySQL 인스턴스가 생성되었으면 관리 메뉴로 진입
2. 네트워킹 항목에 가서 퍼블릭 모드로 설정
기본적으로 생성된 데이터베이스를 연결할 수 없으므로 외부에서 연결하고 액세스하려면 활성화해야 한다.
3. 엔드포인트 / 사용자 이름 / 암호를 MySQL 워크벤치 Connection에 입력
4. 워크벤치 진입하면 dbmaster 라는 데이터베이스가 기본으로 생성되어있다.
Lightsail 로드밸런서 설정하기
처음에는 ELB(로드밸런서)를 지원 안해줬지만, 최근에 사용자들의 열렬한 요청으로 기능이 추가되었다.
그러나 기존의 로드밸런서와는 다르게 아주 단순한 로드밸런싱 밖에 지원을 안한다는 특징이 있다.
무조건 균등 분산이고, Round Robin이나 IP Hashing이나 분산 규칙또한 설정할 수 없다.
그리고 프리티어 계정이라도 라이스세일의 로드밸런서를 바로 월 18USD 비용이 든다.
하지만 단순한 로드배런싱 기능으로서는 충분하며, 아마존에서 제공하는 SSL인증서를 공짜로, 손쉽게 생성하고 연결할 수 있는데 로드밸런서의 큰 장점이자 주된 존재이유 중 하나인 것 같다.
1. 홈메뉴 네트워킹 탭에서 로드밸런서 생성
2. 라이트세일 인스턴스 연결
3. 로드밸런서 트래픽 설정
아마존에서 제공하는 SSL인증서를 공짜로, 손쉽게 생성하고 연결할 수 있다.
아래 "세션 지속성은" 한번 접속한 이용자는 계속 같은 목적지로 밸런싱 해주는 옵션으로, 세션 불일치를 해결하기 위한 옵션이다.
4. 로드밸런싱 지표 그래프
라이트세일에서 제공하는 일반적인 CloudWatch 같은 관제 도구이다.
다만 큰 기대는 하지 않아야 한다.
라이트세일이이나 이런류의 간소화된 IaaS가 불편한게 개별적으로 서버 모니터링 도구를 연계하긴 어렵고 자체적으로 제공되는 관제 도구를 이용해야 한다는 것이다.
서버처럼 Shell 접속이 지원되지 않는 경우가 있어 로그인 과정도 번거로운데 매번 이상 징후가 있을 때 마다 이렇게 들어와서 제한된 기능의 그래프만 본다는 한계점이 존재한다.
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.