AWS Lightsail에서 Ubuntu 인스턴스 생성하기
AWS에서 제공하는 클라우드 호스팅 서비스 중에 Lightsail이라는 서비스가 있다.
기존 AWS의 EC2 인스턴스와 비교하면 보다 저렴하고 보다 쉽고 간단히 이용할 수 있는 장점이 있다.
물론 단점이 있는데 쉽고 간단한 대신 상세한 설정이 불가능하고, 현재까진 사용중인 인스턴스의 스펙을 조정하는 기능도 없다. 서버를 돌리다가 보다 좋은 성능이 필요할 시 새롭게 서버 인스턴스를 생성해서 직접 마이그레이션 해야 한다.
어쨌든 클라우드 호스팅을 처음 시도하려는 개발자라면 충분히 매력적인 서비스라고 단언할 수 있겠다.
1.인스턴스 생성 준비
본인은 이미 운영 중인 인스턴스가 있어서 독일과 서울에 존재하는 인스턴스의 정보가 표시된다. 인스턴스 생성 버튼을 클릭하여 새로운 인스턴스 생성을 시작한다.
SSH 키 페어 관리자
인스턴스가 설치되고 나면 인스턴스에 접속할 때 SSH 프로토콜을 사용하게 되는데 이때 사용할 SSH 키 페어가 필요하다.
조금 더 알아보면, 기존에 일반 우분투를 원격지에 설치한 후 해당 머신으로 SSH 접속을 할때 해당 머신의 ID와 Password를 통해 접속을 하게 되는데 클라우드 서비스로 설치되는 인스턴스의 경우 온갖 해킹공격의 먹이감이 된다. 설치한 후 10분만 지나도 22번 포트로 수많은 SSH 접속 시도가 발생하는 것을 알수 있다. 그래서 AWS는 SSH 접속시 SSH 키 페어라는 일종의 인증서 문서를 생성하고 이 문서를 통해서만 SSH 접속을 허용해 준다.
처음 인스턴스를 생성하는 경우에는 새로 생성을 선택하여 SSH 키 페어를 생성해야 한다. SSH 키 페어 리전마다 생성할 수 있고, 해당 리전에 추가로 인스턴스를 생성할 경우 이미 생성했던 SSH 키 페어를 통해 SSH 접속이 가능하다.
SSH 키 페어를 생성했으면 다운로드 버튼을 눌러 SSH 키 페어 문서를 다운로드 한다.
사용법은 후반부에 다시 설명한다.
인스턴스 플랜 선택
생성할 인스턴스의 스펙을 결정해 준다. 제공되는 메모리, CPU, SDD, 데이터 등의 용량에 따라 다양한 요금제가 존재한다. 테스트 목적이라면 3.5$짜리 플랜을 선택하면 첫달은 무료로 사용가능한다. 3.5$짜리도 괜찮은 성능을 제공한다.
인스턴스 식별
생성할 인스턴스의 식별자 즉 이름을 부여해 준다. 본인은 임의로 EU라고 기명했다. 최종적으로 인스턴스 생성 버튼을 눌러 인스턴스를 생성한다.
3. 인스턴스 관리
인스턴스 생성 버튼을 누르면 홈 화면으로 돌아가고 생성한 인스턴스가 새롭게 등록된 것을 확인할 수 있다. 현재 인스턴스가 설치되는 있는 관계로 보류 중이라고 표기되고 있다.
약 1분 정도 기다리면 인스턴스 생성이 완료되고 실행 중으로 표시된다. 관리버튼을 클릭하여 관리 매뉴로 이동한다.
연결
연결 매뉴에서는 브라우저를 통해 인스턴스로 접속이 가능하다. 우선 SSH를 사용하여 연결버튼을 눌러보자.
새로운 브라우저 윈도우가 팝업되면서 생성한 인스턴스로 접속된 것을 확인할 수 있다. 하지만 실제 대부분의 작업은 별도의 SSH 클라이언트를 통해 이루어 진다. 본인의 경우 로컬 우분투 머신의 콘솔에서 SSH를 통해 직접 접속하는 방법으로 개발을 진행하고 있다.
네트워킹
네트워킹 항목에서는 생성한 인스턴스의 IP주소를 확인할 수 있다. 현재상태에서는 퍼블릭 IP와 프라이빗 IP가 제공된다.
Lightsail의 IP 주소에 대해 조금만 알아보고 넘어가자.
프라이빗 IP는 본인 계정의 현재 리전 내부에서만 사용 가능한 IP이다.
만약 어떤 사용자가 아래와 같이 두 곳의 리전에 총 4개의 인스턴스를 운영한다고 가정하자.
한국 리전 -> 인스턴스A, 인스턴스B
독일 리전 -> 인스턴스C, 인스턴스D
한국 리전에 있는 인스턴스A와 인스턴스B는 서로 프라이빗 IP로 통신이 가능하다. 그리고 프라이빗 IP로 통신하는 것이 비용도 저렴하고(무료?), 보안적으로도 안전하다.
독일 리전에 있는 인스턴스C와 인스턴스D도 마찬가지다. 다만 서로 다른 리전간에는 프라이빗 IP를 통한 통신은 불가능해진다. 서로 다른 VPC(Virtual Private Cloud)에 존재하기 때문에 논리적으로 완벽히 서로 다른 망에 존재하기 때문이다. 서로 다른 망에 존재하는 인스턴스간에 통신이 필요할 경우는 퍼블릭 IP를 이용해야 한다.
퍼블릭 IP는 외부에서 접속할 때 사용하는 IP이다. 즉 웹브라우저나 모바일앱 등을 통해 특정 인스턴스에 접근할 때 사용되는 IP가 퍼블릭 IP이다. 우리가 인터넷을 통해 접속하는 모든 컴퓨터들은 퍼블릭 IP를 통해 접근하게 된다.
그럼 퍼블릭 IP만 사용하지 귀찮게 왜 프라이빗 IP를 사용할까?
위에서 언급한 것 처럼 특정 리전내에 존재하는 인스턴스들 간에는 프라이빗 IP를 통해 통신하면 비용이 절감되고, 보안에도 좋다. 또한 제공하는 서비스가 커져서 로드 발란서가 투입되고 그 밑으로 복수개의 인스턴스가 붙을 경우에도 프라이빗 IP를 이용하게 된다. 여러가지 장점이 발생한다.
네트워킹 매뉴에서는 방화벽을 설정할 수 있다.
기본적으로 SSH 접속에 사용되는 22번 포트와 HTTP 접속에 사용되는 80번 포트가 오픈되어 있다.
여기서도 조금만 부연설명을 하고 넘어가자.
로컬 머신에 우분투를 설치해본 경험이 있는 개발자라면 설치한 우분투상에서 UFW과 같은 프로그램을 통해서 직접 방화벽을 세팅해야 했다. 실제로 본인이 얼마전까지 사용하는 Vultr 호스팅 서비스에서도 우분투 상에서 방화벽을 직접 설치해야 했다. 잘 모르던 시기에 많이 털리기도 했다.ㅠㅠ
여튼 AWS에서는 개발자 콘솔(웹브라우저)상에서 방화벽 설정이 가능하며 우분투 상에서 방화벽 설정을 할 필요가 없어졌다.
만약 특정 DB에서 사용하는 포트나 HTTPS를 위한 포트 설정이 필요할 경우 본 매뉴를 통해 포트를 관리하면 된다.
자 다시 IP 주소 항목으로 돌아가서 조금 더 알아보자.
현재 이 인스턴스는 퍼블릭 IP를 가지고 있으며 하단에 고정 IP 생성이란 버튼이 존재한다. 현재 퍼블릭 IP를 이용하면 외부에서 접근이 가능하지만 인스턴스가 재시작될 때 변경될 수도 있다. 말그대로 외부에서 접근 가능한 퍼블릭 IP 일뿐이라는 것이다.
항상 고정적인 퍼블릭 IP를 가지게 설정하기 위해서는 고정 IP를 생성해서 연결해 줘야 한다.
고정 IP 주소 생성
고정 IP 생성 버튼을 눌러 고정 IP 주소 생성 매뉴로 진입한다.
고정 IP를 생성할 리전을 선택한다. 리전마다 제공 가능한 IP 대역이 다르기 때문이다. 대역대가 다를 뿐이지 인터넷망을 통해 전세게 어디에서든 당연히 접근 가능하다.
고정 IP 식별 항목에서 생성할 고정 IP의 이름을 부여한 후 생성 버튼을 클릭한다.
IP-EU라는 이름의 퍼블릭 고정 IP 주소가 생성되었고 EU 인스턴스에 할당되었다.
다시 네트워킹 매뉴로 이동하면 퍼블릭 IP로 할당되었던 IP 주소가 고정 IP로 변경된 것을 확인할 수 있다.
마지막으로 로컬 머신을 통해 SSH 접속을 하기 위한 준비를 해보자.
계정 매뉴의 SSH 키 매뉴로 진입한다.
현재 생성된 SSH 키 페어 들이 존재한다. 본인의 경우 독일 리전의 EU라는 인스턴스로 접속할 것이므로 프랑크푸르트의 SSH 키 페어를 다운로드 한다.
SSH 키 페어를 임의의 디렉토리에 저장한 후 권한을 수정한다.
권한 수정한 SSH 키 페어를 이용해서 인스턴스로 SSH 접속을 시도한다.
성공적으로 접속한 것을 확인할 수 있다.
기존 AWS의 EC2 인스턴스와 비교하면 보다 저렴하고 보다 쉽고 간단히 이용할 수 있는 장점이 있다.
물론 단점이 있는데 쉽고 간단한 대신 상세한 설정이 불가능하고, 현재까진 사용중인 인스턴스의 스펙을 조정하는 기능도 없다. 서버를 돌리다가 보다 좋은 성능이 필요할 시 새롭게 서버 인스턴스를 생성해서 직접 마이그레이션 해야 한다.
어쨌든 클라우드 호스팅을 처음 시도하려는 개발자라면 충분히 매력적인 서비스라고 단언할 수 있겠다.
1.인스턴스 생성 준비
본인은 이미 운영 중인 인스턴스가 있어서 독일과 서울에 존재하는 인스턴스의 정보가 표시된다. 인스턴스 생성 버튼을 클릭하여 새로운 인스턴스 생성을 시작한다.
2. 인스턴스 생성
인스턴스 위치
생성할 인스턴스의 위치를 결정한다. 당연히 서울을 선택하는 것이 퍼포먼스가 제일 좋다. 본인은 필요에 의해 독일로 선택하였다.
인스턴스 이미지 선택
인스턴스에 설치할 이미지를 결정한다. 필요한 앱들을 직접 설치할 것 예정이므로 OS 전용을 선택하고 실제로 설치할 운영체제(Ubuntu)를 선택한다.
SSH 키 페어 관리자
인스턴스가 설치되고 나면 인스턴스에 접속할 때 SSH 프로토콜을 사용하게 되는데 이때 사용할 SSH 키 페어가 필요하다.
조금 더 알아보면, 기존에 일반 우분투를 원격지에 설치한 후 해당 머신으로 SSH 접속을 할때 해당 머신의 ID와 Password를 통해 접속을 하게 되는데 클라우드 서비스로 설치되는 인스턴스의 경우 온갖 해킹공격의 먹이감이 된다. 설치한 후 10분만 지나도 22번 포트로 수많은 SSH 접속 시도가 발생하는 것을 알수 있다. 그래서 AWS는 SSH 접속시 SSH 키 페어라는 일종의 인증서 문서를 생성하고 이 문서를 통해서만 SSH 접속을 허용해 준다.
처음 인스턴스를 생성하는 경우에는 새로 생성을 선택하여 SSH 키 페어를 생성해야 한다. SSH 키 페어 리전마다 생성할 수 있고, 해당 리전에 추가로 인스턴스를 생성할 경우 이미 생성했던 SSH 키 페어를 통해 SSH 접속이 가능하다.
SSH 키 페어를 생성했으면 다운로드 버튼을 눌러 SSH 키 페어 문서를 다운로드 한다.
사용법은 후반부에 다시 설명한다.
인스턴스 플랜 선택
생성할 인스턴스의 스펙을 결정해 준다. 제공되는 메모리, CPU, SDD, 데이터 등의 용량에 따라 다양한 요금제가 존재한다. 테스트 목적이라면 3.5$짜리 플랜을 선택하면 첫달은 무료로 사용가능한다. 3.5$짜리도 괜찮은 성능을 제공한다.
인스턴스 식별
생성할 인스턴스의 식별자 즉 이름을 부여해 준다. 본인은 임의로 EU라고 기명했다. 최종적으로 인스턴스 생성 버튼을 눌러 인스턴스를 생성한다.
3. 인스턴스 관리
인스턴스 생성 버튼을 누르면 홈 화면으로 돌아가고 생성한 인스턴스가 새롭게 등록된 것을 확인할 수 있다. 현재 인스턴스가 설치되는 있는 관계로 보류 중이라고 표기되고 있다.
약 1분 정도 기다리면 인스턴스 생성이 완료되고 실행 중으로 표시된다. 관리버튼을 클릭하여 관리 매뉴로 이동한다.
연결
연결 매뉴에서는 브라우저를 통해 인스턴스로 접속이 가능하다. 우선 SSH를 사용하여 연결버튼을 눌러보자.
새로운 브라우저 윈도우가 팝업되면서 생성한 인스턴스로 접속된 것을 확인할 수 있다. 하지만 실제 대부분의 작업은 별도의 SSH 클라이언트를 통해 이루어 진다. 본인의 경우 로컬 우분투 머신의 콘솔에서 SSH를 통해 직접 접속하는 방법으로 개발을 진행하고 있다.
네트워킹
네트워킹 항목에서는 생성한 인스턴스의 IP주소를 확인할 수 있다. 현재상태에서는 퍼블릭 IP와 프라이빗 IP가 제공된다.
Lightsail의 IP 주소에 대해 조금만 알아보고 넘어가자.
프라이빗 IP는 본인 계정의 현재 리전 내부에서만 사용 가능한 IP이다.
만약 어떤 사용자가 아래와 같이 두 곳의 리전에 총 4개의 인스턴스를 운영한다고 가정하자.
한국 리전 -> 인스턴스A, 인스턴스B
독일 리전 -> 인스턴스C, 인스턴스D
한국 리전에 있는 인스턴스A와 인스턴스B는 서로 프라이빗 IP로 통신이 가능하다. 그리고 프라이빗 IP로 통신하는 것이 비용도 저렴하고(무료?), 보안적으로도 안전하다.
독일 리전에 있는 인스턴스C와 인스턴스D도 마찬가지다. 다만 서로 다른 리전간에는 프라이빗 IP를 통한 통신은 불가능해진다. 서로 다른 VPC(Virtual Private Cloud)에 존재하기 때문에 논리적으로 완벽히 서로 다른 망에 존재하기 때문이다. 서로 다른 망에 존재하는 인스턴스간에 통신이 필요할 경우는 퍼블릭 IP를 이용해야 한다.
퍼블릭 IP는 외부에서 접속할 때 사용하는 IP이다. 즉 웹브라우저나 모바일앱 등을 통해 특정 인스턴스에 접근할 때 사용되는 IP가 퍼블릭 IP이다. 우리가 인터넷을 통해 접속하는 모든 컴퓨터들은 퍼블릭 IP를 통해 접근하게 된다.
그럼 퍼블릭 IP만 사용하지 귀찮게 왜 프라이빗 IP를 사용할까?
위에서 언급한 것 처럼 특정 리전내에 존재하는 인스턴스들 간에는 프라이빗 IP를 통해 통신하면 비용이 절감되고, 보안에도 좋다. 또한 제공하는 서비스가 커져서 로드 발란서가 투입되고 그 밑으로 복수개의 인스턴스가 붙을 경우에도 프라이빗 IP를 이용하게 된다. 여러가지 장점이 발생한다.
네트워킹 매뉴에서는 방화벽을 설정할 수 있다.
기본적으로 SSH 접속에 사용되는 22번 포트와 HTTP 접속에 사용되는 80번 포트가 오픈되어 있다.
여기서도 조금만 부연설명을 하고 넘어가자.
로컬 머신에 우분투를 설치해본 경험이 있는 개발자라면 설치한 우분투상에서 UFW과 같은 프로그램을 통해서 직접 방화벽을 세팅해야 했다. 실제로 본인이 얼마전까지 사용하는 Vultr 호스팅 서비스에서도 우분투 상에서 방화벽을 직접 설치해야 했다. 잘 모르던 시기에 많이 털리기도 했다.ㅠㅠ
여튼 AWS에서는 개발자 콘솔(웹브라우저)상에서 방화벽 설정이 가능하며 우분투 상에서 방화벽 설정을 할 필요가 없어졌다.
만약 특정 DB에서 사용하는 포트나 HTTPS를 위한 포트 설정이 필요할 경우 본 매뉴를 통해 포트를 관리하면 된다.
자 다시 IP 주소 항목으로 돌아가서 조금 더 알아보자.
현재 이 인스턴스는 퍼블릭 IP를 가지고 있으며 하단에 고정 IP 생성이란 버튼이 존재한다. 현재 퍼블릭 IP를 이용하면 외부에서 접근이 가능하지만 인스턴스가 재시작될 때 변경될 수도 있다. 말그대로 외부에서 접근 가능한 퍼블릭 IP 일뿐이라는 것이다.
항상 고정적인 퍼블릭 IP를 가지게 설정하기 위해서는 고정 IP를 생성해서 연결해 줘야 한다.
고정 IP 주소 생성
고정 IP 생성 버튼을 눌러 고정 IP 주소 생성 매뉴로 진입한다.
고정 IP를 생성할 리전을 선택한다. 리전마다 제공 가능한 IP 대역이 다르기 때문이다. 대역대가 다를 뿐이지 인터넷망을 통해 전세게 어디에서든 당연히 접근 가능하다.
고정 IP 식별 항목에서 생성할 고정 IP의 이름을 부여한 후 생성 버튼을 클릭한다.
IP-EU라는 이름의 퍼블릭 고정 IP 주소가 생성되었고 EU 인스턴스에 할당되었다.
마지막으로 로컬 머신을 통해 SSH 접속을 하기 위한 준비를 해보자.
계정 매뉴의 SSH 키 매뉴로 진입한다.
현재 생성된 SSH 키 페어 들이 존재한다. 본인의 경우 독일 리전의 EU라는 인스턴스로 접속할 것이므로 프랑크푸르트의 SSH 키 페어를 다운로드 한다.
SSH 키 페어를 임의의 디렉토리에 저장한 후 권한을 수정한다.
1 2 3 | here4you@ubuntu:~/lightsail_ssh$ ls LightsailDefaultKey-eu-central-1.pem here4you@ubuntu:~/lightsail_ssh$ chmod 400 LightsailDefaultKey-eu-central-1.pem | cs |
권한 수정한 SSH 키 페어를 이용해서 인스턴스로 SSH 접속을 시도한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | here4you@ubuntu:~/lightsail_ssh$ ssh -i LightsailDefaultKey-eu-central-1.pem ubuntu@35.157.89.100 Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-1021-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Tue Jan 29 06:31:50 UTC 2019 System load: 0.0 Processes: 99 Usage of /: 0.7% of 155.04GB Users logged in: 1 Memory usage: 2% IP address for eth0: 172.26.3.254 Swap usage: 0% * MicroK8s is Kubernetes in a snap. Made by devs for devs. One quick install on a workstation, VM, or appliance. - https://bit.ly/microk8s * Full K8s GPU support is now available! - https://blog.ubuntu.com/2018/12/10/using-gpgpus-with-kubernetes Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud * Canonical Livepatch is available for installation. - Reduce system reboots and improve kernel security. Activate at: https://ubuntu.com/livepatch 0 packages can be updated. 0 updates are security updates. Last login: Tue Jan 29 05:33:32 2019 from 54.239.6.67 To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. ubuntu@ip-172-26-3-254:~$ | cs |
성공적으로 접속한 것을 확인할 수 있다.
댓글
댓글 쓰기