Azure에서 VM(가상 머신)을 프로비전하려면 네트워킹 및 스토리지 리소스를 포함하여 VM 자체 외에 추가 구성 요소가 필요합니다. 이 문서에서는 Azure에서 보안 Linux VM을 실행하는 모범 사례를 보여 줍니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
워크플로
Resource group
리소스 그룹은 관련 Azure 리소스를 보유하는 논리 컨테이너입니다. 일반적으로 리소스의 수명 및 관리하는 주체에 따라 리소스를 그룹화합니다.
동일한 수명 주기를 공유하는 긴밀하게 연결된 리소스를 동일한 리소스 그룹에 배치합니다. 리소스 그룹을 사용하여 리소스를 그룹 단위로 배포 및 모니터링하고, 리소스 그룹별로 청구 비용을 추적할 수 있습니다. 리소스를 하나의 집합으로 삭제할 수도 있습니다. 이러한 기능은 테스트 배포에서 유용합니다. 의미 있는 리소스 이름을 할당하면 간단하게 특정 리소스를 찾고 해당 역할을 이해할 수 있습니다. 자세한 내용은 Azure 리소스에 대해 권장되는 명명 규칙을 참조하세요.
가상 머신
게시된 이미지 목록 또는 Azure Blob Storage에 업로드된 사용자 지정 관리되는 이미지나 VHD(가상 하드 디스크) 파일에서 VM을 프로비전할 수 있습니다. Debian, RHEL(Red Hat Enterprise Linux) 및 Ubuntu를 비롯한 다양한 인기 Linux 배포를 실행하는 Azure 지원. 자세한 내용은 Azure 및 Linux를 참조하세요.
Azure는 다양한 가상 머신 크기를 제공합니다. 자세한 내용은 Azure의 가상 머신 크기를 참조하세요. 기존 워크로드를 Azure로 이동하는 경우 온-프레미스 서버와 가장 가까운 VM 크기로 시작합니다. 그런 다음, CPU, 메모리, 디스크 IOPS(초당 입력/출력 작업 수)에 따라 실제 워크로드의 성능을 측정하고 필요에 따라 크기를 조정합니다.
일반적으로 내부 사용자 또는 고객에게 가장 가까운 Azure 지역을 선택합니다. 일부 VM 크기는 일부 지역에서 사용할 수 없습니다. 자세한 내용은 지역별 서비스를 참조하세요. 지정된 지역에서 사용할 수 있는 VM 크기 목록을 보려면 다음 Azure CLI 명령을 실행합니다.
az vm list-sizes --location <location>
게시된 VM 이미지를 선택하는 방법에 대한 자세한 내용은 Linux VM 이미지 찾기를 참조하세요.
디스크
최상의 디스크 I/O 성능을 위해서는 SSD(반도체 드라이브)에 데이터를 저장하는 Premium Storage가 권장됩니다. 비용은 프로비전된 디스크 용량을 기준으로 산정됩니다. IOPS 및 처리량(즉, 데이터 전송 속도)도 디스크 크기에 따라 달라지므로 디스크를 프로비전할 때 세 가지 요소(용량, IOPS, 처리량)를 모두 고려합니다. 또한 Premium Storage는 워크로드 패턴에 대한 이해와 결합된 무료 버스팅 기능을 제공하며, IaaS 인프라에 대한 효과적인 SKU 선택 및 비용 최적화 전략을 제공하여 과도한 과도한 프로비전 없이 고성능을 가능하게 하고 사용하지 않는 용량의 비용을 최소화합니다.
Managed Disks는 스토리지를 처리하여 디스크 관리를 간소화합니다. 관리 디스크에는 스토리지 계정이 필요하지 않습니다. 디스크의 크기와 유형을 지정하면 고가용성 리소스로 배포됩니다. 또한 관리 디스크는 과도하게 프로비저닝할 필요 없이 원하는 성능을 제공하고, 워크로드 패턴의 변동을 고려하며, 사용되지 않는 프로비저닝된 용량을 최소화하여 비용 최적화를 제공합니다.
OS 디스크는 Azure Storage에 저장된 VHD이므로 호스트 컴퓨터가 중단되어도 계속 유지됩니다. VHD는 로컬로 연결된 NVMe 또는 여러 VM SKU에서 사용할 수 있는 유사한 디바이스일 수 있습니다.
임시 디스크는 추가 비용 없이 좋은 성능을 제공하지만, 비영구적이고, 용량이 제한되고, OS 및 임시 디스크 사용으로만 제한되는 상당한 단점이 있습니다. Linux VM의 경우 OS 디스크는 /dev/sda1
입니다. 또한 애플리케이션 데이터에 사용되는 영구 VHD인 데이터 디스크를 하나 이상 만드는 것이 좋습니다.
VHD를 만들 때 형식은 지정되지 않습니다. VM에 로그인하여 디스크의 형식을 지정합니다. Linux 셸에서 데이터 디스크는 /dev/sdc
, /dev/sdd
등으로 표시됩니다. lsblk
를 실행하여 디스크를 포함하는 블록 디바이스를 나열할 수 있습니다. 데이터 디스크를 사용하려면 파티션 및 파일 시스템을 만들고 디스크를 탑재합니다. 다음은 그 예입니다.
# Create a partition.
sudo fdisk /dev/sdc # Enter 'n' to partition, 'w' to write the change.
# Create a file system.
sudo mkfs -t ext3 /dev/sdc1
# Mount the drive.
sudo mkdir /data1
sudo mount /dev/sdc1 /data1
데이터 디스크를 추가하면 디스크에 LUN(논리 단위 번호) ID가 할당됩니다. 예를 들어, 디스크를 교체하고 동일한 LUN ID를 유지하거나 특정 LUN ID를 검색하는 애플리케이션이 있는 경우 필요에 따라 LUN ID를 지정할 수 있습니다. 그렇지만 LUN ID는 디스크마다 고유해야 합니다.
Premium Storage 계정에서 VM의 디스크가 SSD이기 때문에 I/O 스케줄러를 변경하여 SSD의 성능을 최적화하려고 할 수 있습니다. SSD에 NOOP 스케줄러를 사용하는 것이 일반적으로 권장되지만 iostat 와 같은 도구를 사용하여 워크로드에 대한 디스크 I/O 성능을 모니터링할 수 있습니다.
VM은 임시 디스크를 사용하여 만들어집니다. 이 디스크는 호스트 컴퓨터의 실제 드라이브에 저장됩니다. Azure Storage에는 저장되지 않으며 다시 부팅되는 동안에 그리고 다른 VM의 수명 주기 이벤트 동안에 삭제될 수 있습니다. 페이지 또는 스왑 파일과 같은 임시 데이터에 대해서만 이 디스크를 사용합니다. Linux VM의 경우 임시 디스크는 /dev/disk/azure/resource-part1
이며 /mnt/resource
또는 /mnt
에 탑재됩니다.
네트워크
네트워킹 구성 요소에는 다음 리소스가 포함됩니다.
가상 네트워크. 모든 VM은 서브넷으로 분할되는 가상 네트워크에 배포됩니다.
NIC(네트워크 인터페이스). NIC를 통해 VM을 가상 네트워크와 통신하도록 할 수 있습니다. VM에 여러 NIC가 필요한 경우 각 VM 크기에 대해 최대 NIC 수가 정의됩니다.
공용 IP 주소. 공용 IP 주소는 VM과 통신하는 데 필요합니다(예: RDP(원격 데스크톱 프로토콜)). 이 공용 IP 주소는 동적 또는 정적일 수 있습니다. 기본값은 동적입니다.
- 변경되지 않는 고정 IP 주소가 필요한 경우(예: DNS 'A' 레코드를 만들거나 안전한 목록에 IP 주소를 추가해야 하는 경우) 고정 IP 주소를 예약합니다.
- IP 주소의 FQDN(정규화된 도메인 이름)을 만들 수도 있습니다. 그런 후 FQDN을 가리키는 DNS에 CNAME 레코드를 등록할 수 있습니다. 자세한 내용은 Azure Portal에서 정규화된 도메인 이름 만들기를 참조하세요.
NSG(네트워크 보안 그룹) . 네트워크 보안 그룹은 VM에 대한 네트워크 트래픽을 허용하거나 거부하는 데 사용됩니다. NSG는 서브넷 또는 개별 VM 인스턴스로 연결할 수 있습니다.
- 모든 NSG에는 모든 인바운드 인터넷 트래픽을 차단하는 규칙을 포함하여 기본 규칙 집합이 있습니다. 기본 규칙은 삭제할 수 없으나 다른 규칙으로 재정의할 수 있습니다. 인터넷 트래픽을 사용하도록 설정하려면 특정 포트(예: HTTP용 포트 80)로의 인바운드 트래픽을 허용하는 규칙을 만듭니다. SSH(Secure Shell)를 사용하도록 설정하려면 TCP 포트 22에 대한 인바운드 트래픽을 허용하는 NSG 규칙을 추가합니다.
Azure NAT 게이트웨이. NAT(네트워크 주소 변환) 게이트웨이를 사용하면 프라이빗 서브넷의 모든 인스턴스가 완전히 비공개로 유지되는 동안 인터넷에 아웃바운드로 연결할 수 있습니다. 아웃바운드 연결에 대한 응답 패킷으로 도착하는 패킷만 NAT 게이트웨이를 통과할 수 있습니다. 인터넷에서 원치 않는 인바운드 연결은 허용되지 않습니다.
Azure Bastion. Azure Bastion 은 개인 IP 주소를 통해 VM에 대한 보안 액세스를 제공하는 완전 관리형 플랫폼인 서비스 솔루션입니다. 이 구성을 사용하면 VM에 인터넷에 노출되는 공용 IP 주소가 필요하지 않으므로 보안 태세가 향상됩니다. Azure Bastion은 Azure Portal 또는 네이티브 SSH 또는 RDP 클라이언트를 비롯한 다양한 방법을 통해 TLS(전송 계층 보안)를 통해 직접 VM에 대한 보안 RDP 또는 SSH 연결을 제공합니다.
작업
SSH. Linux VM을 만들기 전에 2048비트 RSA퍼블릭-프라이빗 키 쌍을 생성합니다. VM을 만들 때 공개 키 파일을 사용합니다. 자세한 내용은 Azure에서 Linux 및 Mac과 함께 SSH를 사용하는 방법을 참조하세요.
진단. 기본 상태 메트릭, 진단 인프라 로그 및 부팅 진단을 모니터링 및 진단을 사용하도록 설정할 수 있습니다. 부팅 진단은 VM이 부팅할 수 없는 상태로 전환되는 경우 부팅 오류를 진단하는 데 도움이 될 수 있습니다. 로그를 저장할 Azure Storage 계정을 만듭니다. 표준 LRS(로컬 중복 스토리지) 계정은 진단 로그에 충분합니다. 자세한 내용은 모니터링 및 진단 사용을 참조하세요.
가용성. VM은 계획된 유지 관리 또는 계획되지 않은 가동 중지 시간의 영향을 받을 수 있습니다. VM 다시 부팅 로그를 사용하여 VM 재부팅이 계획된 유지 관리로 발생했는지 여부를 결정할 수 있습니다. 고가용성을 위해 가용성 집합 또는 지역의 가용성 영역에 여러 VM을 배포합니다. 이러한 두 구성은 모두 더 높은 SLA(서비스 수준 계약)를 제공합니다.
백업 실수로 인한 데이터 손실을 방지하려면 Azure Backup 서비스를 사용하여 VM을 지역 중복 스토리지에 백업하세요. Azure Backup은 애플리케이션 일치 백업을 제공합니다.
VM 중지. Azure에서는 "중지됨"과 "할당 취소됨" 상태를 구분합니다. VM 상태가 중지되면 요금이 청구되지만 VM 할당이 취소되면 청구되지 않습니다. Azure Portal에서 중지 버튼은 VM 할당을 취소합니다. 로그인한 상태에서 OS를 통해 종료하면 VM은 중지되지만 할당 취소되지 않으므로 비용이 계속 청구됩니다.
VM 삭제. VM을 삭제하는 경우 디스크를 삭제하거나 유지하는 옵션이 있습니다. 즉, 데이터 손실 없이 안전하게 VM을 삭제할 수 있습니다. 그러나 디스크에 대한 요금은 계속 청구됩니다. 다른 Azure 리소스와 마찬가지로 관리 디스크를 삭제할 수 있습니다. 실수로 삭제하지 않도록 하려면 리소스 잠금을 사용하여 전체 리소스 그룹을 잠그거나 VM과 같은 개별 리소스를 잠급니다.
고려 사항
이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.
사용량 및 워크로드에 따라 VM 크기에 대한 다양한 옵션이 있습니다. 이 범위에는 기계 학습에 최적화된 최신 GPU VM에 대한 Bs 시리즈의 가장 경제적인 옵션이 포함됩니다. 사용 가능한 옵션에 대한 자세한 내용은 Azure Linux VM 가격 책정을 참조하세요.
예측 가능한 워크로드의 경우 1년 또는 3년 계약으로 컴퓨팅에 Azure Reservations 및 Azure 저축 계획을 사용하고 종량제 가격에서 상당한 절감액을 받습니다. 예측 가능한 완료 시간 또는 리소스 사용량이 없는 워크로드의 경우 종량제 옵션을 고려합니다.
Azure Spot VM을 사용하여 중단될 수 있는 워크로드를 실행하며 미리 결정된 시간 프레임 또는 SLA 내에서 완료할 필요가 없습니다. Azure는 사용 가능한 용량이 있는 경우 스폿 VM을 배포하고 용량을 다시 필요로 할 때 제거합니다. 스폿 가상 머신과 관련된 비용은 상당히 낮습니다. 다음과 같은 워크로드에는 스폿 VM을 사용하는 것이 좋습니다.
- 고성능 컴퓨팅 시나리오, 일괄 처리 작업 또는 시각적 렌더링 애플리케이션
- 연속 통합 및 지속적인 업데이트 워크로드를 포함한 테스트 환경
- 대규모 상태 비저장 애플리케이션
Azure 가격 계산기를 사용하여 비용을 예측합니다.
자세한 내용은 Microsoft Azure Well-Architected Framework의 비용 섹션을 참조하세요.
보안
우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.
클라우드용 Microsoft Defender를 사용하여 Azure 리소스의 보안 상태를 중앙에서 살펴봅니다. 클라우드용 Defender는 잠재적인 보안 문제를 모니터링하고 배포의 보안 상태에 대한 종합적인 그림을 제공합니다. 클라우드용 Defender는 Azure 구독별로 구성됩니다. 클라우드용 Defender 표준에 Azure 구독 온보딩에서 설명된 대로 보안 데이터 컬렉션을 활성화합니다. 데이터 수집이 사용되도록 설정되면 클라우드용 Defender는 해당 구독에서 만든 모든 VM을 자동으로 검색합니다.
패치 관리. 이 기능이 설정된 경우 클라우드용 Defender는 보안 및 중요 업데이트 누락 여부를 확인합니다.
맬웨어 방지. 이 기능이 설정되면 클라우드용 Defender는 맬웨어 방지 소프트웨어 설치 여부를 확인합니다. 또한 클라우드용 Defender를 사용하여 Azure Portal 내에서 맬웨어 방지 소프트웨어를 설치할 수도 있습니다.
액세스 제어. Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 Azure 리소스에 대한 액세스를 제어합니다. Azure RBAC를 통해 DevOps 팀의 구성원에게 권한 역할을 할당할 수 있습니다. 예를 들어 읽기 권한자 역할은 Azure 리소스를 볼 수 있지만 만들거나 관리하거나 삭제할 수는 없습니다. 일부 권한은 Azure 리소스 형식에 적용됩니다. 예를 들어 Virtual Machine Contributor 역할은 VM을 다시 시작하거나 할당을 취소하고, 관리자 암호를 재설정하고, 새 VM을 만드는 등의 작업을 수행할 수 있습니다. 이 아키텍처에 유용할 수 있는 기타 기본 제공 역할에는 DevTest Labs 사용자 및 네트워크 기여자가 포함됩니다.
참고
Azure RBAC는 VM에 로그온한 사용자가 수행할 수 있는 작업을 제한하지 않습니다. 이러한 사용 권한은 게스트 OS의 계정 유형에 따라 결정됩니다.
감사 로그. 감사 로그를 사용하여 프로비전 동작 및 기타 VM 이벤트를 확인합니다.
데이터 암호화. OS 및 데이터 디스크를 암호화해야 하는 경우 Azure Disk Encryption을 사용하세요.
운영 우수성
운영 우수성은 애플리케이션을 배포하고 프로덕션에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 운영 우수성 핵심 요소 개요를 참조하세요.
단일 Azure Resource Manager 템플릿을 사용하여 Azure 리소스 및 해당 종속성을 프로비전합니다. 모든 리소스는 동일한 가상 네트워크에 있으므로 동일한 기본 워크로드에서 격리됩니다. 워크로드의 특정 리소스를 DevOps 팀에 쉽게 연결할 수 있으므로 팀에서 해당 리소스의 모든 측면을 독립적으로 관리할 수 있습니다. 이러한 격리를 통해 DevOps 팀은 CI/CD(연속 통합 및 지속적인 업데이트)를 수행할 수 있습니다.
또한 다양한 Azure Resource Manager 템플릿을 사용하고 Azure DevOps Services와 통합하여 몇 분 안에 다양한 환경을 프로비전할 수 있습니다. 예를 들어 필요한 경우에만 프로덕션 유사 시나리오를 복제하거나 테스트 환경을 로드하여 비용을 절감할 수 있습니다.
고가용성 아키텍처의 경우 Apache Cassandra를 사용하는 Azure의 Linux N 계층 애플리케이션을 참조하세요. 참조 아키텍처에는 둘 이상의 VM이 포함되고 각 VM은 가용성 집합에 포함됩니다.
Azure Monitor를 사용하여 인프라의 성능을 분석 및 최적화하고 가상 머신에 로그인하지 않고 네트워킹 문제를 모니터링 및 진단하는 것이 좋습니다.
다음 단계
- Linux VM을 만들려면 빠른 시작: Azure Portal에서 Linux 가상 머신 만들기를 참조하세요.
- Linux VM에 NVIDIA 드라이버를 설치하려면 Linux를 실행하는 N 시리즈 VM에 NVIDIA GPU 드라이버 설치를 참조하세요.
- Linux VM을 프로비전하려면 Azure CLI로 Linux VM 만들기 및 관리를 참조하세요.
- Azure의 기본 아웃 바운드 액세스