OpenStack에서 가용성 영역(Availability Zone)은 네트워크 서비스(Neutron), 블록 스토리지(Cinder), 컴퓨트(Nova)를 논리적으로 구분한 파티션을 의미합니다. 가용성 영역의 핵심 역할은 워크로드를 그룹화하는 것으로, 프로덕션 환경과 비프로덕션 환경 설정을 모두 포함할 수 있습니다.
이 글에서는 리눅스 명령줄(CLI)을 통해 OpenStack에서 가용성 영역을 생성하고 활용하는 방법을 단계별로 살펴보겠습니다.
OpenStack을 처음 배포하면 컴퓨트(Nova)에 대한 기본 가용성 영역(Default Availability Zone)이 자동으로 생성됩니다. 이 Nova AZ에는 모든 컴퓨트 노드가 포함됩니다.
1. 가용성 영역 목록 확인
현재 존재하는 가용성 영역 목록을 확인하려면 다음 OpenStack 명령어를 실행합니다.
~# source openrc
~# openstack availability zone list
2. 컴퓨트 가용성 영역 조회
컴퓨트 관련 가용성 영역만 따로 확인하고 싶다면 아래 명령어를 실행합니다.
~# openstack availability zone list --compute
3. 컴퓨트 호스트 매핑 확인
컴퓨트 가용성 영역에 매핑된 호스트 목록을 확인하려면 다음 명령어를 실행합니다.
~# openstack host list | grep -E "Zone|nova"
4. 호스트 애그리게이트 그룹 생성
이제 두 개의 호스트 애그리게이트(host-aggregate) 그룹을 생성합니다. 하나는 non-production, 다른 하나는 production이라는 이름으로 만들고, compute-7, 8, 9는 non-production 그룹에, compute-4, 5, 6은 production 그룹에 각각 추가합니다.
~# openstack aggregate create non-production
~# openstack aggregate create production
5. 가용성 영역 생성 후 그룹 연결
가용성 영역을 생성하고 해당 호스트 애그리게이트 그룹과 연결합니다.
# openstack aggregate set --zone <az_name> <host_aggregate_name>
6. 컴퓨트 호스트 추가
다음으로 컴퓨트 호스트를 해당 호스트 애그리게이트 그룹에 추가합니다.
# openstack aggregate add host <host_aggregate_name> <compute_host>
같은 방식으로 나머지 컴퓨트 호스트도 non-production 그룹에 추가합니다.
~# openstack aggregate add host non-production compute-0-7
~# openstack aggregate add host non-production compute-0-8
~# openstack aggregate add host non-production compute-0-9
7. 생성 결과 확인
아래 명령어로 가용성 영역과 호스트 애그리게이트 그룹이 정상적으로 구성되었는지 확인합니다.
~# openstack aggregate list
가용성 영역 및 호스트 애그리게이트 그룹에 연결된 컴퓨트 목록을 자세히 보려면 다음 명령어를 실행합니다.
~# openstack aggregate show production
~# openstack aggregate show non-production
위 명령어의 출력 결과를 통해 리눅스 명령줄에서 OpenStack 가용성 영역을 성공적으로 생성했음을 확인할 수 있습니다.
가용성 영역 내 가상 머신(VM) 생성
가용성 영역 생성이 완료되면 두 개의 가용성 영역에 각각 다양한 가상 머신을 배포할 수 있습니다.
특정 AZ에 가상 머신 생성하기
특정 가용성 영역에 가상 머신을 생성하려면 다음 명령어 형식을 사용합니다.
~# openstack server create --flavor <flavor-name> --image <Image-Name-Or-Image-ID> --nic net-id=<Network-ID> --security-group <Security-Group-ID> --key-name <Keypair-Name> --availability-zone <AZ-Name> <VM-Name>
실제 적용 예시는 다음과 같습니다.
~# openstack server create --flavor m1.small --image Cirros --nic net-id=37b9ab9a-f198-4db1-a5d6-S789b0Sbfb4c --security-group f8dda7c3-f7c3-423b-923a-2b21fe0bbf3c --key-name mykey --availability-zone production-az test-vm-prod-az
생성된 가상 머신의 상세 정보를 확인하려면 아래 명령어를 실행합니다.
~# openstack server show test-vm-prod-az
특정 컴퓨트 노드에 가상 머신 생성하기
가용성 영역뿐 아니라 특정 컴퓨트 노드를 지정하여 가상 머신을 생성할 수도 있습니다. 이 경우 AZ 이름 뒤에 콜론(:)과 호스트 이름을 붙이면 됩니다.
~# openstack server create --flavor <flavor-name> --image <Image-Name-Or-Image-ID> --nic net-id=<Network-ID> --security-group <Security-Group-ID> --key-name <Keypair-Name> --availability-zone <AZ-Name>:<Compute-Host> <VM-Name>
예를 들어 production 가용성 영역의 특정 컴퓨트 노드(compute-0-6)에 가상 머신을 배포하려면 다음 명령어를 사용합니다.
~# openstack server create --flavor m1.small --image Cirros --nic net-id=37b9ab9a-f198-4db1-a5d6-S789b0Sbfb4c --security-group f8dda7c3-f7c3-423b-923a-2b21fe0bbf3c --key-name mykey --availability-zone production-az:compute-0-6 test-vm-prod-az-host
생성된 가상 머신의 세부 정보를 다시 확인하려면 아래 명령어를 실행합니다.
~# openstack server show test-vm-prod-az-host
명령어를 실행하면 지정한 컴퓨트 노드에 가상 머신이 배포된 것을 확인할 수 있습니다.
non-production AZ에 가상 머신 생성하기
마찬가지 방법으로 non-production 가용성 영역에도 가상 머신을 생성할 수 있습니다.
~# openstack server create --flavor m1.small --image Cirros --nic net-id=37b9ab9a-f198-4db1-a5d6-S789b0Sbfb4c --security-group f8dda7c3-f7c3-423b-923a-2b21fe0bbf3c --key-name mykey --availability-zone non-production-az vm-nonprod-az
생성된 가상 머신의 상세 정보는 다음 명령어로 확인합니다.
~# openstack server show vm-nonprod-az
명령어 실행 결과를 통해 non-production 가용성 영역에 가상 머신이 정상적으로 배포되었음을 확인할 수 있습니다.
작성자 소개
케빈 애로우즈(Kevin Arrows)
케빈 애로우즈는 10년 이상의 업계 경력을 보유한 베테랑 기술 전문가입니다. Microsoft Certified Technology Specialist(MCTS) 자격증을 보유하고 있으며, 최신 기술 동향을 꾸준히 학습하는 데 큰 열정을 가지고 있습니다. 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 기술 분야에 걸쳐 폭넓게 집필해 왔으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들에게 폭넓은 인정을 받고 있습니다.