간단한 서버를 운영하기에 클라우드가 매우 편하다. 전세계에 다양한 클라우드 서비스가 있는데 가장 오래되고 높은 점유율을 가지고 있는 AWS를 이용한다. 클라우드 컴퓨터를 EC2라고 부르는데, 언제 어디서나 컴퓨터 디바이스 의존도가 필요없는 IDE 서버를 구축하기 위해 EC2 생성을 진행한다.
Prepare
- AWS 계정 및 로그인
Setting
Choose Region
EC2를 본격적으로 생성하기 앞서 리전(Region)을 먼저 선택한다. 리전이 가지는 의미는 AWS 서비스의 국가적 위치를 의미한다. 모든 설정은 리전에 종속되기 때문에 본인이 구성한 AWS 환경이 보이지 않는다면 리전을 변경해 보는 것이 좋다. 코딩으로 AWS를 제어할 것이라면 주요 리전의 코드 네임인 ap-northeast-2를 기억해 두는 것이 좋다.
Create Instance
로그인을 하게 되면 처음 방문한 페이지는 다음과 같이 대표적인 서비스를 확인할 수 있다. 이 중 EC2를 이용한다.
EC2를 선택하면 다양한 설정들이 보이는데 대표적인 EC2 생성과 그와 관련있는 다양한 부수적인 기능들에 관한 내용들이다. 가장 기초적인 EC2를 생성하기 위해 인스턴스 시작 버튼을 선택한다.
이제 가상의 컴퓨터를 생성할 수 있다. 이름에는 생성하고자 하는 컴퓨터의 이름을 기입한다.
추가적인 정보를 기입하자면 추가 태그 추가를 선택해 정보를 추가로 기입할 수 있다. 컴퓨터 이름은 기본적으로 태그의 키 이름이 Name이다. 추가 태그 추가를 선택하면 숨겨진 설정 정보가 하나 더 있는데 그것은 리소스 유형 정보로 인스턴스 이외에 설정할 필요는 없다.
- 볼륨(Volume): 생성하는 인스턴스가 사용할 볼륨으로 쉽게 설명하면 컴퓨터의 하드디스크를 의미한다.
- 스팟 인스턴스(Spot Instance): 일반적으로 생성한 EC2 인스턴스보다 낮은 가격으로 이용할 수 있는 단순한 형태의 인스턴스를 의미한다. 입찰 방식이기에 AWS에서 제시한 시세보다 낮으면 인스턴스는 중단되어 안전성이 떨어져 순간 리스소가 필요한 경우 생성하는 인스턴스다.
- 네트워크 인터페이스(Network Interface): 말 그대로 인스턴스가 네트워크 통신에 사용할 자원을 의미한다.
다음으로 설정하는 것은 애플레케이션 및 OS 이미지다. 가상머신이어도 그 위에 운영체제나 애플리케이션이 운영이 되어야 한다. 참고로 Amazon Linux는 AWS에서 Red Hat 기반으로 제작한 AWS의 운영체제이다. 여기서 Ubuntu를 선택한다. Ubuntu를 선택하면 AMI(Amazon Machine Image)를 선택할 수 있는데 AWS에서 사전에 구축해둔 기본 운영체제 버전을 선택할 수 있다. 아키텍처는 64비트(x86)을 선택한다.
다음 설정한 것은 인스턴스 유형이다. 사용하고자 하는 목적에 따라 CPU 수, 메모리 크기 등을 선택할 수 있다. 인스턴스는 운영체제와 시스템 사양에 따라 비용이 달라진다. 매월 설정된 사용량(일반적으로 750시간이며 약 31일이다.) 만큼 무료로 사용할 수 있는 프리 티어는 1 CPU, 1GB 메모리의 크기를 가진다.
생성한 인스턴스에 접근해 통제하는 것은 일반적으로 SSH를 이용한다. 이 때 사용할 키를 생성하는 것이 키 페어 설정이다.
처음 생성하는 것이기에 새 키 페어 생성을 진행한다. 키 페어 이름을 작성하고, 키 페어 유형을 선택한다. 일반적으로 표준 암호화 방식인 RSA를 선택한다. 프라이빗 키 파일 형식은 각자의 환경에 맞게 선택한다. 윈도우 CMD나 Powershell 또는 OpenSSH를 사용하는 경우 .pem키를 선택하고 PuTTY 도구를 사용할 계획이면 .ppk 파일을 선택한다. 그리고 키 페어 생성을 하면 선택한 파일 유형에 맞는 키를 다운로드할 수 있고, 인스턴스가 생성이 완료되면 이 키를 이용해 인스턴스를 제어할 수 있다.
인스턴스가 사용할 네트워크를 설정한다. AWS에서 네트워크는 VPC(Virtual Private Cloud)로 불린다. 사설 아이피, 서브넷, 공인 아이피(Public IP) 등 세부적인 설정을 할 수 있지만, 기본적인 설정만으로도 충분히 운영이 가능하여 세부적인 편집을 할 필요 없다. 만약 VPC 변경, 서브넷 변경, 퍼블릭 IP 할당 비활성화 등 세부적인 구성을 하고 싶다면 네트워크 설정 이름의 오른쪽에 편집 버튼을 선택하여 설정을 변경한다.
보안 그룹(SG, Security Group, 방화벽을 의미)을 설정한다. 이미 기존에 보안 그룹을 생성한 것이 없기에 보안 그룹 생성을 선택한다. 기초적인 설정을 제안하는데, 프라이빗 키를 생성했다고 하더라도 SSH 서비스가 인터넷에 노출되는 것은 위험할 수 있으니 위치를 선택해 자신의 아이피를 선택한다. 그리고 코드 서버를 구축하고 도메인을 할당할 계획이기에 HTTP(S) 트래픽을 허용하도록 설정한다.
코드 서버는 혼자서만 이용할 서버이기에 내 아이피만 HTTP(S)에 접근하도록 추가 설정을 진행해 안전하게 운영할 필요가 있다. 따라서 우측 상단에 편집 버튼을 누르면 세부적인 보안 그룹 설정을 추가로 진행할 수 있다. 먼저 보안 그룹 이름과 설명을 기록한다.
다음 세부적인 보안 그룹 규칙을 볼 수 있는데, HTTP와 HTTPS의 소스 유형을 위치 무관에서 내 IP로 변경한다. 추가적인 보안 그룹 규칙이 필요하다면, 보안 그룹 규칙 추가를 선택해 규칙을 자유롭게 생성할 수 있다.
하단에 고급 네트워크 구성이 있는데, 이미 구성된 네트워크 인터페이스에 보조 아이피를 생성하거나 네트워크 인터페이스를 추가해 하나의 서버에 여러 아이피를 할당하는 등의 고급 네트워크 구성을 진행할 수 있다.
하드디스크 혹은 볼륨으로 불리는 스토리지 구성이다. 프리 티어는 30GB에 EBS 범용(SSD)를 사용할 수 있다. 따라서 크기는 30GiB로 설정하고 볼륨 유형은 gp3를 선택한다. gp2와 gp3는 범용 SSD의 세대를 의미하며 gp3가 gp2 보다 최신 유형이다. 가장 큰건 gp3가 gp2보다 20% 정도 더 저렴하다고 한다. gp3는 3,000 IOPS를 제공하는데, IOPS(Input/Output Operations Per Second) 초당 입출력을 의미하는 것으로 1초당 45.875MiB/s (3,000 * 16KiB / 1,024) 정도 속도를 가진다.
고급 세부 정보는 LDAP이나 AD와 같은 디렉터리 시스템에 조인할 것인지, 계정 권한과 역할을 관리하는 IAM등 세부적인 설정은 고급 세부 정보에서 설정하는 영역이다. 별도의 세부적인 설정 없이 진행한다.
마지막으로 Summary를 확인한다. Summary는 지금까지 설정한 구성을 확인할 수 있다. 또한 프리 티어의 세부적인 정보를 볼 수 있는데 더욱 세부적인 정보를 보고자 한다면 다음 링크를 참조한다. Summary로 구성한 설정 정보 확인이 끝났다면 인스턴스 시작 버튼을 클릭한다.
이제 인스턴스 또는 홈 화면에서 EC2를 선택하면 서버가 운영중인 것을 확인할 수 있다.
인스턴스 ID에 링크가 포함되어 있는데 해당 링크를 클릭하면 설정한 정보뿐만 아니라 AWS가 이 인스턴스에 할당한 추가 정보들을 볼 수 있다. 퍼블릭 IPv4의 아이피로 SSH에 접근할 수 있다.
Review
지금까지 구성한 것이 잘 동작하는지, 인스턴스에 직접 접근하는 것으로 확인해본다.
인스턴스에 SSH 접속하기
인스턴스 상세 정보에서 작업을 선택하면 연결이란 기능을 볼 수 있다.
상단에 SSH 클라이언트를 선택하면 SSH 접속 예시를 확인할 수 있다. 해당 내용을 복사해서 파워쉘에서 실행한다.
다음과 같이 Permission 에러가 발생할 수 있다.
파워쉘 기준에서 다음과 같이 명령을 입력하여 리눅스 기준 chmod 400 권한을 할당한다. 파워쉘이 아닌 cmd에서 진행한다면 현재 사용자 정보인 ${env:UserName}을 %username%으로 변경해 사용하면 된다.
Icacls "key of haka.pem" /reset
Icacls "key of haka.pem" /grant:r ${env:UserName}:F
Icacls "key of haka.pem" /inheritance:r
이제 다시 ssh 접속하면 AWS 인스턴스에 잘 접속되는 것을 확인할 수 있다.
SSH Config 설정
좀 더 편하게 이용하려면 SSH Config를 설정하는 것이 좋다. 매번 pem키를 지정할 필요가 없기 때문이다. 먼저 사용자 홈 디렉터리에 .ssh 폴더가 있을 것이다. 없다면 새로 생성해도 무방하다. 해당 폴더에 pem 키를 옮긴다.
mv "C:\haka\key of haka.pem" C:\Users\hakawati\.ssh\
이제 해당 폴더에 config 파일을 생성하고 값을 입력한다. HostName에 AWS 인스턴스에 할당된 공인 아이피를 입력한다. 파워쉘 코드로 작성하기 번거롭다면 .ssh 디렉토리에 config 파일을 생성하고 -Value 내용을 기록하여 저장해도 무관하다.
Set-Content -Path 'C:\Users\hakawati\.ssh\config' -Value 'Host code.hakawati.co.kr'
Add-Content -Path 'C:\Users\hakawati\.ssh\config' -Value ' HostName 3.xxx.xxx.xxx'
Add-Content -Path 'C:\Users\hakawati\.ssh\config' -Value ' User ubuntu'
Add-Content -Path 'C:\Users\hakawati\.ssh\config' -Value ' IdentityFile "~/.ssh/key of haka.pem"'
이렇게 설정했다면 어느 경로에서나 자유롭게 pem 파일을 지정할 필요 없이 다음과 같이 AWS 인스턴스에 접근할 수 있다.
ssh code.hakawati.co.kr
이제 나만의 서버가 만들어 졌다. AWS의 엄청나게 많은 다양한 서비스 중 하나인 EC2 생성, 그리고 생성 과정에 다채로운 설정을 모두 살펴보지 않고 가장 기본적인 것만 사용하여 온프렘 인스턴스를 생성했다. 이제 자유롭게 서버를 구성해 볼 수 있다.
'Information Technology > Cloud' 카테고리의 다른 글
Amazon Macie (1/2) - 구축편 (0) | 2023.06.28 |
---|---|
Amazon Macie (2/2) - 활용편 (0) | 2023.06.28 |