AOC55

Cloud, Devops, Backend, Kubernetes, Openstack, ...

Cloud/Openstack

Openstack :: Nova Cell 이란?

aoc55.soft@gmail.com 2025. 10. 18. 22:31
개인적으로 공부하는 관점에서 작성한 내용이라, 잘못된 부분이 있을 수 있습니다. 발견 시 말씀주시면 감사하겠습니다.



Nova Cell

현재 회사 환경에서 "복수의 Cell 구조"로 Nova Cell 을 활용하지는 않지만, 그래도 잘 모르고 있는 Nova의 Cell 에 대해 정확히 알고 있어야 할 것 같아서 아래와 같이 학습과 스스로 생각한 내용을 정리한다.

이 글 보다 더 정확한 내용 등은 Nova 공식문서 내  Cells (v2) — nova 32.1.0.dev43 documentation 에서 확인 할 수 있을 것 같다.

Cell 의 개념

Nova 에서 "Cell" 이라는 것은 운영 관점에서 Compute Node들을 논리적으로 그룹화한 단위이며, Cell의 가장 큰 특징은 Cell 별로 독립적인 Database와 Queue 기반으로 동작한다는 것이다.

위와 같의 Cell 구현의 가장 중요한 목적은 만약 Compute Node가 증가 시, 필연적으로 같이 증가하게 되는 Database 및 Queue 사용량(부하)에 대해 "Cell" 이라는 그룹으로 격리를 한 뒤, 각각의 Database & Queue 구성하는 방식을 통해 부하 분산과 함께 장애 혹은 작업(수평 확장 등) 등에 서로 영향을 받지 않게 하는 등의 효율적으로 운영 및 관리를 하기 위함으로 보인다.

Cell? Host Aggreate?

그러면 Nova 뿐만 아니라 Openstack 에서는 RegionAZ 및 Nova 에서는 Host Aggretage 라는 컨셉이 이미 있다. 이러한 컨셉들과 Cell 간엔 무슨 관계 혹은 차이가 있는 것일까?

가장 먼저 "Region"은 Nova와 같은 컴포넌트 수준이 아닌, Openstack 클러스터 레벨의 설정이다. 즉, 사실상 하나의 Region은 하나의 Openstack Cluster 라고 볼 수 있다. 그렇기에 각각의 Openstack 리전은 근본적으로 완전히 별도의 API Endpoint, Database, RabbitMQ 등을 구성한다.

그리고 다음으로 "AZ"의 경우 사실 Openstack을 사용할 때 중요한 요소인 "사용자 등에게 가용성을 표현하는 논리적인 구분"이다. 여기서 Openstack 에서 AZ를 설정 한다는 것은, 사전에 가용성 등이 반영된 물리적인 하드웨어 등을 구성 배치한 후, 이를 Openstack 상에서 "AZ"라는 개념을 통해 논리적인 의미로 표현하는 것이다. (당연히도) 하나의 Region 안에 여러 개의 AZ를 구성할 수 있다.

마지막으로 Nova에 존재하는 "Host Aggregate"는 Openstack Nova의 구성과 관련된 설정보다는 아키텍처보다는, Host를 그룹화 해서 스케줄링을 통해 'VM들을 배치하기 위한 스케줄링'을 정밀하게 제어하기 위한 목적이다. 따라서 운영관리 등을 위한 Cell 과는 결이 다르다고 볼 수 있다.

다시 위 요소들과 "Cell"을 비교하면, Cell은 "Nova" 라는 컴포넌트들을 안정적으로 '운영 및 관리'를 위한 그룹핑 단위로서, VM 스케줄링을 위한 Host Aggregate 등과는 목적 자체가 다른 것으로 생각할 수 있을 것 같다.

마지막으로 관계를 정리해보면, (Openstack) Region 하위에 Nova Cell 이 있고 -> 이제 Nova Cell 내에서 AZ를 설정할 수 있으며 -> AZ와 연관된 Host Aggregate를 구성할 수 있다. 물론 이는 오직 단위로서만 크기 순으로 정렬한 것으로, 필요성과 사용목적 등이 위에 언급했듯이 애초에 각기 다르기 때문에 개별적으로 각각의 목적과 필요성 등을 먼저 고민해야 할 것 같다.

Cell 의 종류

Cell 의 경우 기본적으로 Cell 0와 Cell 1, Cell 2.. 과 같은 두가지 계층으로 나누어진다.

Cell0

  • 스케줄링에 실패한 인스턴스 등을 저장하는 특수한 Cell.
  • 실제 컴퓨트 리소스가 있는 것은 아니다.
  • 스케줄링 실패 시 인스턴스가 삭제되지 않고 기록을 남기기 위해 사용된다.

Cell N (ex. Cell 1, Cell 2, ...)

  • 실제 Compute Node가 속한 Cell이다.
  • Cell 마다 독립적인 nova-compute 와 Database, Message Queue 를 사용한다.
  • 각 Cell 간은 서로 직접적으로 통신하지 않으며, 서로의 상태에 영향을 미치지도 않는다.

그러면 Cell 을 설정했을 때 Nova Component 에 대한 아키텍처를 확인해 보자

Cell 을 포함한 Nova 아키텍처

그림의 출처는 https://docs.openstack.org/nova/latest/admin/cells.html

Single Cell 기반

단일 Cell 사용 시
  • 특수한 Cell 0 말고, 일반적인 Cell 을 오직 한 개만 사용 하였을 때의 구조이다.
  • 참고로 Cell 0 역시 별도의 Database 를 사용하는 것을 알 수 있다. (단, MQ는 사용하지 않는다)

복수의 Cell 기반

복수 Cell 사용 시
  • 특수한 Cell 0 말고, 일반적인 Cell 을 2개 (Cell 1, Cell 2)를 사용하였을 때 구조이다.
  • 보면 알 수 있듯이 Cell 1Cell 2이 별도의 Cell Database 과 Cell MQ 구성 사용하는 것을 알 수 있다.
  • 이에 따라 nova-compute의 요청을 받아, 실제 각각의 Cell Database와 통신 역할을 하는 nova-conductor 역시도 분리되어 있음을 알 수 있다.
  • 참고로 API Server와 스케줄러 등은 Cell 내 종속적이지 않는 요소들로 별개의 Database와 MQ 구성을 가지고 있으며 이는 Cell의 개수와 무관하다.
  • 다만, Cell 이 증가함에 따라 상위에 Super Conductor 라는 개념이 등장한다.

Cell 확인해보기

실습하는 환경은 기본적인 Cell만 설치된 환경이다. (즉, 특수 Cell 인 cell0와 일반 Cell 인 cell1만 존재)

먼저 Cell 목록을 조회해보자.

nova-manage cell_v2 list_cells
Cell 리스트 조회
  • cell0, cell1 을 확인할 수 있으며, 각각의 별개로 구성된 MQ와 Database 구성 및 상태 등을 확인 할 수 있다.
  • 참고로 특수 Cell 인 cell0은 MQ를 사용하지 않는 것을 알 수 있음.

이후 Cell 에 할당된 Compute Host 목록을 조회해보자.

nova-manage cell_v2 list_hosts
Cell 내 Host 조회
  • 기본 Cell 인 cell1 에 할당된 Compute Host 목록을 확인 할 수 있다.

추가로 Openstack 이 사용중인 Database 목록을 조회하면 아래와 같이 확인할 수 있다.

mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| barbican            |
| cinder              |
| glance              |
| information_schema  |
| keystone            |
| mariadb             |
| mysql               |
| neutron             |
| nova                |   # ----> cell1 전용
| nova_api            |   # ----> API Server 전용
| nova_cell0          |   # ----> cell0 전용
| octavia             |
| octavia-persistence |
| performance_schema  |
| placement           |
| skyline             |
| sys                 |
+---------------------+

끝.

 

'Cloud > Openstack' 카테고리의 다른 글

Openstack :: Nova의 Service 목록과 Status & State  (0) 2025.09.23
Openstack :: Heat Study (1)  (0) 2025.05.17
Openstack :: Keystone System Role  (0) 2025.02.16
Openstack :: barbican 이란?  (1) 2025.02.08