Amazon Web Services 한국 블로그

Amazon EC2 다중 인스턴스에 연결 가능한 프로비저닝 IOPS(io1) EBS 볼륨 출시 (서울 리전 포함)

Amazon Elastic Compute Cloud(EC2)에서 Linux 운영 체제를 실행하는 고객 분들은 프로비저닝된 IOPS(io1) Elastic Block Store(EBS) 볼륨을 여러 대의 EC2 인스턴스에 연결할 수 있게 되었습니다. 각 EBS 볼륨에 새로운 다중 연결 옵션(Multi-Attach)을 구성하면 각 인스턴스를 단일 가용 영역 내에 있는 최대 16개의 EC2 인스턴스에 연결할 수 있습니다. 또한 각 Nitro 기반 EC2 인스턴스는 다중 연결을 사용하는 여러 EBS 볼륨을 연결하는 것을 지원할 수 있습니다. 다중 연결 기능을 사용하면 스토리지 일관성을 유지하기 위해 쓰기 순서 지정을 제공하는 애플리케이션의 가용성을 손쉽게 높일 수 있습니다.

이제 여러분의 애플리케이션은 전체 읽기 및 쓰기 권한으로 다중 연결 볼륨을 비-부팅 데이터 볼륨으로 연결할 수 있습니다. 다중 연결이 구성된 볼륨도 일반 볼륨처럼 볼륨 스냅샷을 생성할 수 있지만, 볼륨이 연결되어 있는 모든 인스턴스에서 스냅샷을 시작할 수 있으므로 한층 더욱 편리합니다. 또한 다중 연결 볼륨도 암호화를 지원합니다. 다중 연결 사용 볼륨은 Amazon CloudWatch 지표를 사용하여 모니터링할 수 있으며, 인스턴스별로 성능을 모니터링하려는 경우 Linux iostat 도구를 사용하면 됩니다.

다중 연결 EBS 볼륨 시작하기
다중 연결 볼륨 구성 및 사용은 새 볼륨의 경우 AWS 명령줄 인터페이스(CLI) 또는 AWS 관리 콘솔을 사용하여 수행할 수 있는 간단한 프로세스입니다. 간단한 예로 이 게시물에서는 다중 연결이 구성된 볼륨을 생성한 후 해당 볼륨을 Linux EC2 인스턴스에 연결해보겠습니다. 한 인스턴스에서는 단순한 텍스트 파일을 작성하고 다른 인스턴스에서는 콘텐츠를 읽습니다. 시작해보겠습니다.

AWS 관리 콘솔에서 먼저 EC2 홈페이지로 이동하여 탐색 패널에서 볼륨을 선택한 다음, 볼륨 생성을 클릭합니다. 볼륨 유형에서 프로비저닝된 IOPS SSD(io1)를 선택하고 원하는 크기 및 IOPS를 입력한 후 다중 연결 옵션을 선택합니다.

대신 AWS 명령줄 인터페이스(CLI)를 사용하여 이 작업을 수행하기 위해 아래와 같이 --multi-attach-enabled 옵션과 함께 ec2 create-volume 명령을 사용합니다.

aws ec2 create-volume --volume-type io1 --multi-attach-enabled --size 4 --iops 100 --availability-zone us-east-1a

이제 볼륨을 선택하면 설명 탭에서 볼륨에 대해 다중 연결이 사용되고 있음을 확인할 수 있습니다. 볼륨 테이블에 간단히 ‘예/아니요’ 값이 표시된 다중 연결 사용 열도 포함되어 있어 여러 볼륨에서 다중 연결이 사용되고 있는지 여부를 쉽게 확인할 수 있습니다.

볼륨을 생성했고 사용할 준비가 되었으므로 이제 Linux를 실행하는 두 개의 T3 EC2 인스턴스를 시작해보겠습니다. 다중 연결을 사용하려면 AWS Nitro System 기반 인스턴스 유형이 필요하며 해당 인스턴스가 내 볼륨과 동일한 가용 영역에 생성되어 있어야 한다는 점을 기억하십시오. 내 인스턴스는 Amazon Linux 2를 실행하고 있으며 us-east-1a 가용 영역에 배치되어 있으므로 새로 생성한 다중 연결 사용 볼륨이 배치된 곳과 일치합니다.

인스턴스가 실행되고 있으므로 이제 내 볼륨을 두 인스턴스에 연결할 차례입니다. EC2 대시보드에서 볼륨을 클릭하고 앞에서 생성한 다중 연결 볼륨을 선택합니다. 작업 메뉴에서 볼륨 연결을 클릭합니다. 아래 스크린샷을 보면 볼륨이 이미 한 인스턴스에 연결되었고 이제 두 번째 인스턴스에 연결 중임을 알 수 있습니다.

AWS 명령줄 인터페이스(CLI)를 사용하여 볼륨을 연결 중이라면 다른 볼륨 유형과 마찬가지로 ec2 attach-volume 명령을 사용합니다.

aws ec2 attach-volume --device /dev/sdf --instance-id i-0c44a... --volume-id vol-012721da...

볼륨을 선택할 때 AWS 관리 콘솔에 해당 볼륨에 연결되어 있는 인스턴스 또는 현재 연결되고 있는 인스턴스가 표시됩니다.

볼륨이 두 인스턴스에 모두 연결되어 있으므로 이제 간단한 테스트를 통해 볼륨을 사용해보겠습니다. EC2 대시보드의 인스턴스 보기에서 첫 번째 인스턴스를 선택하고 연결을 클릭한 다음, AWS Systems Manager의 Session Manager를 사용하여 인스턴스에 대한 셸 세션을 엽니다. 여기에 나온 지침에 따라 /dev/sdf로 연결되고 /data로 탑재된 새로운 볼륨에 파일 시스템을 생성하고 vi를 사용하여 파일에 텍스트를 작성합니다.

sudo mkfs -t xfs /dev/sdf
sudo mkdir /data
sudo mount /dev/sdf /data
cd /data
sudo vi file.txt

AWS 관리 콘솔에서 두 번째 인스턴스를 선택하고 연결 단계를 반복합니다. 이번에는 파일 시스템을 생성할 필요가 없지만 /dev/sdf 볼륨을 /data로 탑재하는 작업은 다시 수행해야 합니다(원하는 경우 다른 탑재 지점을 사용할 수도 있음). 디렉터리를 /data로 변경할 때 첫 번째 인스턴스에서 작성한 파일이 존재하며 예상 텍스트가 포함되어 있는 것을 확인할 수 있습니다.

다중 연결 볼륨을 생성하고 볼륨에 대해 작업을 하는 것은 간단합니다. 볼륨을 에 연결해야 하고 볼륨이 연결 대상 인스턴스와 동일한 가용 영역에 있어야 한다는 점만 기억하십시오. 이 게시물에서는 단순한 사용 사례를 사용했지만, 실제 애플리케이션 사용 시에는 일관성 유지를 보장하기 위해 일종의 쓰기 순서 지정을 구현하는 것도 고려해볼 수 있습니다.

다중 연결 볼륨에 Delete-on-Termination 사용
EC2 인스턴스 종료 시 연결된 볼륨을 삭제하는 옵션을 사용하는 경우, 다중 연결 볼륨이 연결되어 있는 인스턴스 전체에서 해당 옵션을 일관되게 설정하는 것이 좋습니다. all delete 또는 all retain을 사용하여 예측 가능한 종료 동작이 이루어지도록 하십시오. Delete-on-Termination 값이 서로 다른 인스턴스 세트에 볼륨을 연결할 경우, 볼륨을 분리할 마지막 인스턴스의 설정 값(삭제 또는 삭제 안 함)에 따라 볼륨 삭제 여부가 결정됩니다. 일관된 설정은 의심의 여지를 주지 않습니다.

정식 출시
자세한 내용은 Amazon Elastic Block Store(EBS) 기술 설명서를 참조하십시오. Amazon Elastic Block Store(EBS)의 프로비저닝된 IOPS(io1) 볼륨에 대한 다중 연결은 미국 동부(버지니아 북부 및 오하이오), 미국 서부(오레곤), EU(아일랜드) 및 아시아 태평양(서울) 리전에서 지금 바로 사용할 수 있으며 추가 요금이 부과되지 않습니다.

— Steve