클라우드 컴퓨팅 과제를 해보자.
Azure에 학생 계정으로 가입하면 첫 번째로 뜨는 창, 인셉션 과제 때문에 EC2는 써봤는데, Azure는 처음이다.
학생 계정으로 가입하는 법은 워낙 많이 업로드 되어있으니 생략.
과제를 유출하는 건 안 되기 때문에 대충 쇼핑몰 생성을 위한 가상머신 세팅과 데이터베이스 생성 / 설정 정도를 마치고 이를 제출하는 과제이다.
첫 화면에서 가상머신 -> 만들기 -> Azure 가상 머신을 클릭하여 가상 머신을 생성 전 설정 화면에 들어간다.
그러면 이런 창이 뜨는데.
각각의 역할은 이렇다.
기본 사항
기본 사항은 프로젝트 정보, 인스턴스 정보, 관리자 계정, 인바운드 포트 규칙 영역으로 구성된다.
프로젝트 정보
프로젝트 정보에서는 Azure에 배포된 리소스를 관리하기 위해 구독과 리소스 그룹을 결정하는데, 리소스 그룹은 Azure상에서 개발되는 특정 서비스와 관련된 리소스를 묶는 논리적 개념이다.
Azure를 처음 사용하는 경우 리소스 그룹은 생성되 어있지 않기 때문에, [새로 만들기]를 클릭하여 새로 만들 리소스 이름을 입력하면 된다.
리소스 그룹 이름은 한글과 영문을 혼용할 수 있으나, 과제에서는 KNOU_MALL을 입력한다.
인스턴스 정보
생성할 VM에 대한 상세 정보를 설정한다.
필수 입력 정보로는 가상 머신 이름, 지역, 이미지, 크기 등이 있다.
지역 에서는 데이터 센터의 위치를 선택하며, 서비스 사용자가 많은 지역과 물리적으로 가까운 위치를 선택하는 것이 일반적이다.
가용성 옵션 에서는 VM이 네트워크 단절, 시스템 오류 등의 유사시에도 서비스를 지속할 수 있도록 안정성 보장을 위해 VM을 이중화하는 방법을 선택한다.
보안 유형 은 가상머신 보안 수준을 결정하며, 기본값은 '표준'이다. 보안 부팅 및 가상 vTPM과 같은 기능을 사용할 경우 '신뢰할 수 있는 시작 가상머신' 을 선택해야 한다.
이미지 는 설치될 OS를 선택하는데, 일반적으로는 우분투가 기본 선택값이다.
크기 는 VM의 사양을 결정하는데, 2개의 CPU와 8개의 메모리를 가진 VM이다. 과제에서는 비용 절감을 위해 월 4~5 불 정도를 지불하는 Standard_B1ls를 선택했다.
관리자 계정 에서는 생성된 VM에 시스템 관리자로 접속할 방법을 지정한다. VM에 로그인하는 방법은 SSH키를 사용하는 방법과 암호를 사용하는 방법으로 나뉘는데, 공개 키를 사용하는 방법은 VM에 접속할 때 서버가 보내 온 공개 키와 사용자가 갖고 있는 비밀 키의 관계가 일치하면 로그인을 허용하는 방식이다.
인바운드 포트 규칙 은 VM에 전달되는 포트를 결정하는데, 인바운드는 외부에서 생성하여 VM에 전달되는 정보이고, 아웃바운드에서는 VM에서 외부 시스템에 전달되는 정보를 이야기한다.
가상 머신 생성 단계에서는 SSH 22 포트가 선택되어 있는데, 웹 서버 역할을 할 수 있도록 HTTP(80)만 선택한다.
기본 설정을 모두 마치면 디스크 크기와 유형을 지정한다. VM은 OS가 사용할 디스크와 운영체제 외의 정보를 저장할 데이터 디스크를 지정할 수 있다.
커널 레벨 암호화와 유사하게 Os disk 및 데이터 디스크에 데이터를 암호화해서 저장하는 옵션이지만, '학생용 구독'에서는 제공되지 않는다.
VM OS disk 상세 정보를 선택한다. OS 디스크 유형에 따라 입력 가능한 요소가 추가로 표시된다. 실습 시에는 기본적으로 선택되어 있는 설정에서 OS 디스크 유형만 표준 HDD로 변경한다.
VM으로 삭제는 VM 삭제 시 OS disk도 동시에 삭제할 것인지 결정한다. Key management및 Ultra Disk 호환성 사용은 기본값을 사용한다.
네트워킹은 NIC(네트워크 인터페이스 카드)를 설정하여, VM에 대한 네트워크 연결을 정의하는 단계이다.
이 단계에서는 보안 그룹을 사용하여 포트, 인바운드 및 아웃바운드 등의 설정을 제어할 수 있다.
Azure에서 논리적으로 격리되는 네트워크 IP 주소 범위, 서브넷, 라우팅 테이블, 게이트웨이 및 보안 설정을 구성한다.
가상 네트워크의 일정한 IP 주소 범위를 말한다. 가상머신을 서로 격리하거나 인터넷망에서 네트워크를 격리하는데 사용하기도 한다.
VM은 기본적으로 가상 네트워크 안에서 만들어지기 때문에 외부에서 접속할 수 없다. 따라서 가상 네트워크 밖에 있는 호스트에서 VM에 접속할 수 있는 IP주소가 필요하다.
가상 네트워크와 다른 네트워크 간에 인바운드와 아웃바운드에 대한 접근을 설정하는 방법을 제공한다.
가상 머신으로의 접근을 허용하는 공용 포트를 제공한다.
공용 인바운드 포트에서 어떤 포트를 오픈할 것인지 지정한다.
VM 삭제 시 VM에 연결된 공용 IP와 NIC를 삭제할 것인지 지정한다. 기본값은 공용 IP 및 NIC를 남겨두는 것이다. 공용 IP는 외부에 알려져있는 주소이므로 서비스의 연속성을 위해 타 VM에 할당하여 지속적으로 사용 가능하다. 그러나 공용 IP가 VM에 할당되어 있지 않을 경우 요금이 부과되므로 실습에서는 이 옵션을 체크해두기를 권장한다.
가상 머신의 네트워크 인터페이스에서 짧은 대기 시간 및 높은 처리 속도가 가능하게 한다.
VM이 가동된 후에도 서비스가 지속되고 있는지 모니터링하고 유사시 어떻게 대응해야 하는지 관리할 필요가 있다.
관리 탭에서는 이러한 모니터링에 대한 설정을 제공하며, Microsoft Defender, ID, Azure AD, 자동 종료, 백업, 게스트 OS 업데이트로 나누어 설정할 수 있다.
하이브리드 클라우드 워크로드 전반에 걸쳐 통합 보안 관리 및 고급 위협 보호를 제공한다.
가상 머신 안에서 특정 프로그램 등에서 Azure의 여러 서비스에 접속하고 사용할 수 있게 하려면 프로그램 코드로 자격증명을 제공해야 한다.
회사 Active Directory 자격 증명을 사용하여 VM에 록인하고 사용하도록 설정하려고 할 때 사용한다.
가상 머신을 매일 자동으로 종료시킬지 지정할 수 있다.
가상 머신을 실수로 삭제하였거나 손상시켰을 경우, 시스템을 자동, 수동으로 복구하기 위해 시스템 백업본을 만들지 지정할 수 있다.
백업된 시스템은 Azure의 Recovery Sservice 자격 증명에 백업되며, 백업 가격당 별도의 비용이 청구된다.
고급 단계는 시스템 기능 확장을 위한 VM을 생성하고, 시스템에 연결될 때 수행할 실행 스크립트를 지정한다.
VM 생성 후 백업, 모니터링, 키 관리 등 VM에 추가할 구성 및 자동화 도구를 설치한다.
VM 배포 이후 설치할 프로그램 패키지를 선택한다.
VM을 처음 생성하면 빈 머신이 생기므로, 특정 작업을 수행하게 하려면 접속하여 서비스하 서버 프로그램을 업로드하고, 서버 프로그램이 동작할 수 있도록 종속성을 가지는 라이브러리와 시스템 패키지 등을 설치해야 한다.
일반적으로 VM에 동작할 서버 프로그램의 설치, 라이브러리와 시스템 패키지 등의 설치는 수월하게 이루어지지만, 종종 과거의 시스템 환경에서 만들어진 프로그램을 최신의 운영체제에 설치하는 경우나 시스템에서 기본적으로 제공하지 않는 라이브러리 등을 이용할 경우 종속성 등의 문제로 다양한 문제가 발생하는 경우가 많다.
Azure는 이러한 상황을 가정하여 VM 생성 후 자동으로 실행되는 내용을 Cloud-init을 통해 지정할 수 있으며, yaml 형식으로 스크립트가 작성 되어 있어야 한다.
가상 머신의 전체 수명 기간 동안 가상 머신 내 애플리케이션에 접근 할 수 있는 스크립트, 구성 파일, 기타 데이터를 전달하는 데 사용한다.
NVMe와 같이 리소스 성능을 향상시키는 기능을 활성화하기 위해 사용한다.
과제에서는 사용자 지정 데이터에 yaml 문법으로 작성된 스크립트가 이미 작성되어 있기 때문에, 이를 복사 붙여넣기 하여 사용한다.
https://github.com/jaehwachung/cloud_computing/blob/main/knou_mall/front_page/Cloud-init
#cloud-config
package_upgrade: true
packages:
- python3
- python3-pip
- build-essential
runcmd:
- python3 -m pip install flask waitress
- cd /opt
- git clone https://github.com/jaehwachung/cloud_computing.git
- cd /opt/cloud_computing/knou_mall/front_page
- python3 shop_main.py
생략
앞서 설정한 사항에 대한 상충여부를 확인하고, 유효성검사를 실시한다.
설정에 문제가 없으면 만들기를 클릭하면 되고, 변경 사항에 있을 경우 위의 사항들을 클릭하여 (앞서 설정했던) 변경 사항을 반영하면 된다.
앞서 포스팅된대로 설정을 똑같이 따라 진행했다면 새 키 쌍을 생성하는 문구가 나오는데, 프라이빗 키 다운로드 및 리소스 만들기를 클릭하면 VM생성이 진행된다.
VM 생성 성공!