뉴타닉스 가상 컴퓨팅 플랫폼의 모든 NX 시리즈 모델은 2U 사이즈의 섀시(Chassis)를 사용한다. 2U 사이즈의 섀시는 "뉴타닉스 블록(Nutanix Block)"이라고 불리며, 뉴타닉스 노드(Nutanix Node)를 장착하는 컨테이너이며, 뉴타닉스 블록 단위로 랙에 장착된다. 뉴타닉스 블록의 추가적인 기능적 역할은 다음과 같다.
[그림 1]은 4개의 뉴타닉스 노드를 포함하는 뉴타닉스 블록이다. 뉴타닉스 노드는 CPU, 메모리, SSD, HDD 및 네트워크 인터페이스를 가지고 있는 독립적인 서버이다.
[그림 1] 뉴타닉스 블록(Nutanix Block)
[그림 2]에서와 보는 것과 같이, 뉴타닉스 가상 컴퓨팅 플랫폼은 모듈러 기반의 스케일-아웃 아키텍처를 지원하므로 뉴타닉스 클러스터(Nutanix Cluster)를 뉴타닉스 노드 단위로 유연하게 확장할 수 있다. 뉴타닉스 블록에서 뉴타닉스 노드를 매우 쉽게 추가 또는 제거할 수 있다.
[그림 2] 뉴타닉스 가상 컴퓨팅 플랫폼의 모듈러 아키텍처
뉴타닉스 가상 컴퓨팅 플랫폼의 기본 구성 단위는 "뉴타닉스 노드(Nutanix Node)"이다. 뉴타닉스 클러스터는 최소 3개 이상의 뉴타닉스 노드로 구성된다. 뉴타닉스 노드는 스토리지가 장착된 독립된 서버로 가상화 환경에서는 "호스트 컴퓨터"라고도 불리며, 다음과 같은 컴포넌트로 구성되어 있다.
뉴타닉스 클러스터를 구성하는 모든 뉴타닉스 노드에는 하이퍼바이저(VMware의 ESXi, Microsoft의 Hyper-V, Citrix의 XenServer, 뉴타닉스의 AHV)와 뉴타닉스 분산 파일 시스템을 구현한 Controller VM이라고 불리는 가상머신이 디폴트로 탑재된다.
뉴타닉스 가상 컴퓨팅 플랫폼의 제품 모델 명명 규칙은 [그림 3]과 같다. 현재 NX-1000, NX-3000, NX-6000, NX-8000 시리즈 모델의 제품이 출시되어 있다. 대부분의 모델은 HDD 및 SSD를 장착한 Hybrid 타입과 SSD만을 장착한 All Flash 타입을 지원한다.
[그림 3] 뉴타닉스 모델 명명 규칙
뉴타닉스 모델명 (NX-ABCD-GE)의 규칙은 다음과 같다.
뉴타닉스 블록에 포함되어 있는 뉴타닉스 노드를 명확하게 구분하기 위하여 사전에 정의된 이름을 가지고 있으며, 모델에 따라 다음과 같은 규칙이 적용되어 있다.
NX-1000 및 NX-3000 시리즈의 모델에서 뉴타닉스 블록은 최대 4개까지의 뉴타닉스 노드를 포함할 수 있고, 다음과 같은 명명 규칙을 가지며, 뉴타닉스 노드에 라벨로 표시되어 있다. NX-3155 및 NX-3175 모델은 GPU를 포함하고 있는 모델로 1노드로 구성된 블록이다.
NX-1000 및 NX-3000 시리즈 모델의 전면부는 [그림 4]와 같다. 각 노드의 첫 번째 드라이브에는 SSD가 장착되어 있으며, Controller VM과 메타 데이터가 저장되며, 입출력 I/O을 성능을 향상시키기 위해 Write 버퍼 및 Read 캐시로 사용된다.
[그림 4] NX-1000/3000 시리즈 모델의 전면부
[그림 5]는 NX-1000 및 NX-3000 시리즈 모델의 후면부이다. 각 노드는 네트워킹을 위해 2개의 10G 이더넷 인터페이스, 2개의 1G 이더넷 인터페이스, IPMI를 위한 1개의 10/100Base-T 포트를 지원한다. 그리고 콘솔 연결을 위한 1개의 VGA 인터페이스와 2개의 USB 포트를 가지고 있다. 뉴타닉스 블록은 전원공급의 이중화를 위해 2개의 Power Supply를 가지고 있으며 220V를 사용한다.
[그림 5] NX-1000/3000 시리즈 모델의 후면부
NX-6000 및 NX-8000 시리즈 모델은 대용량의 스토리지를 필요로 하는 워크로드를 지원하기 위한 제품으로, 4TB 용량의 3.5"의 HDD를 장착하고 있기 때문에, 뉴타닉스 블록은 최대 2개까지의 뉴타닉스 노드를 포함할 수 있고, 다음과 같은 명명 규칙을 가지며, 뉴타닉스 노드에 라벨로 표시되어 있다. NX-6155 및 NX-8150 모델은 디스크를 많이 장착할 수 있는 모델로 1노드로 구성된 블록이다.
NX-6020 모델의 전면부는 [그림 6]과 같다. 각 노드의 첫 번째 슬롯에는 SSD가 장착되고, 2번~6번 슬롯에는 HDD가 장착되는 구조이다. 첫 번째 슬롯에 장착되어 있는 SSD는 Controller VM과 메타 데이터의 저장 공간으로 사용되고, 입출력 I/O 성능을 향상시키기 위한 Write 버퍼 및 Read 캐시로 사용된다.
[그림 6] NX-6020 모델의 전면부
NX-6020 모델을 제외한 다른 모든 NX-6000 시리즈 모델의 전면부는 [그림 7]과 같다. 첫 번째 슬롯과 두 번째 슬롯에는 SSD가 장착되고, 3번~6번 슬롯에는 HDD가 장착된다. 첫 번째 슬롯에 장착되어 있는 SSD는 Controller VM과 메타 데이터의 저장 공간으로 사용되고, 입출력 I/O 성능을 향상시키기 위한 Write 버퍼 및 Read 캐시로 사용된다. 두 번째 슬롯에 장착된 SSD는 입출력 I/O 성능을 향상시키기 위한 Write 버퍼 및 Read 캐시로 사용된다.
[그림 7] NX-6020을 제외한 NX-6000 시리즈 모델의 전면부
[그림 8]은 NX-6000 시리즈 모델의 후면부이다. 뉴타닉스의 다른 모델과 동일한 사양의 인터페이스를 지원한다.
[그림 8] NX-6000 시리즈 모델의 후면부
뉴타닉스의 핵심 기술력 및 경쟁력은 뉴타닉스 가상 컴퓨팅 플랫폼의 모든 뉴타닉스 노드에 탑재되어 뉴타닉스 분산 파일 시스템(Nutanix Distributed File System)을 구성하는 "Controller VM" 또는 약어로 "CVM"이라고 불리는 뉴타닉스 소프트웨어에 있다. 뉴타닉스 소프트웨어는 설명의 목적에 따라 다음과 같은 이름으로 다르게 불릴 수 있지만, 결국 동일한 뉴타닉스 소프트웨어를 의미한다.
뉴타닉스 노드의 소프트웨어 및 하드웨어 아키텍처는 [그림 11]과 같다. 뉴타닉스 분산 파일 시스템이 정상적으로 동작하기 위해서는 모든 뉴타닉스 노드에는 다음과 같은 소프트웨어가 탑재되어야 한다.
[그림 11] 뉴타닉스 노드의 소프트웨어 및 하드웨어 아키텍처
[NOTE] 뉴타닉스 가상 컴퓨팅 플랫폼의 뉴타닉스 노드에 장착되어 있는 모든 SSD 및 HDD 스토리지는 하이퍼바이저가 아닌 Controller VM에 의해 제어된다. ① 가상머신의 모든 입출력 I/O 요청은 하이퍼바이저로 전달되고, ② 입출력 I/O 요청을 받은 하이퍼바이저는 이것을 Controller VM으로 전달하고, ③ Controller VM이 PCI pass-through 기능을 이용하여 SCSI Controller를 통하여 모든 SSD 및 HDD 스토리지를 제어한다.
뉴타닉스 노드에 가상머신으로 탑재되는 Controller VM의 소프트웨어 컴포넌트는 [그림 12]와 같다. [그림 12]는 Controller VM의 모든 컴포넌트를 포함하는 것은 아니며, 핵심적인 역할을 수행하는 5개의 주요 컴포넌트에 대한 그림이다. 각 컴포넌트간에 연결된 화살표는 단지 컴포넌트간의 통신관계를 포함하는 것이며, 컴포넌트간의 의존관계를 표시하는 것은 아니다.
[그림 12] Controller VM의 소프트웨어 컴포넌트
제우스(Zeus)는 뉴타닉스 클러스터에서 클러스터 설정 정보를 관리하는 역할을 담당한다. 오픈 소스인 Apache Zookeeper를 기반으로 구현되었다. Controller VM의 다른 소프트웨어 컴포넌트는 제우스를 통하여 주키퍼와 인터페이스 한다. 클러스터 설정 정보는 클러스터를 구성하는 물리적 또는 논리적 컴포넌트에 대한 상세 정보를 포함한다.
제우스는 뉴타닉스 클러스터에서 임의의 3개 노드에서 동작한다. 제우스가 동작하는 노드는 홀수로 구성되는데, 그 이유는 각 노드에서 저장하고 있는 설정 정보에 불일치가 발생하였을 경우에, 다수결의 원칙에 따라 데이터 값에 대한 합의를 이루기 위한 것이다. 클러스터의 3개의 제우스 노드 중에서 임의의 노드가 리더 노드로 선택되며, 만약 리더 노드에 장애가 발생하면 나머지 2개 노드 중에서 리더 노드가 선택된다. 제우스는 다른 컴포넌트에 의존하지 않고 독립적으로 동작한다.
메두사(Medusa)는 뉴타닉스 분산 파일 시스템에 저장되는 모든 파일에 대한 메타 데이터(Meta data)를 관리하는 역할을 수행하며, 대용량의 분산 데이터를 효율적으로 처리하기 위하여 대용량의 분산 NoSQL DBMS인 Apache Cassandra를 기반으로 구현되었다. 파일 시스템에서 메타 데이터는 파일의 이름, 저장위치, 생성일, 크기 등의 정보를 의미하는데, 클러스터의 노드들이 증가함에 따라 메타 데이터는 급격히 증가할 수 있다. 또한, 모든 유저 데이터는 최소 2개 노드에서 중복되어 관리되기 때문에, 복제 파일에 대한 메타 데이터도 추가적으로 관리해야 한다. 대부분의 NoSQL DBMS는 성능을 고려하여 "Eventual Consistency"를 지원하며, "Strict Consistency"를 지원하지 않는다. 뉴타닉스는 PAXOS 알고리즘을 구현하여 파일 시스템에서 필수적으로 요구하고 있는 "Strict Consistency"를 보장한다. 메두사는 뉴타닉스의 클러스터의 모든 노드에서 동작하며, 메타 데이터는 클러스터의 최소 3개 노드에 중복되어 관리된다. 메타 데이터는 항상 홀수 개수의 노드에 중복되어 저장되는데, 그 이유는 메타 데이터에 불일치가 발생하였을 경우에, 다수결의 원칙에 따라 데이터 값에 대한 합의를 이루기 위한 것이다. 메두사는 클러스터 설정 정보를 참조하기 위해 제우스와 통신한다.
스타게이트(Stargate)는 가상머신이 요청하는 스토리지와 관련된 모든 입출력 I/O 오퍼레이션을 처리한다. 스타게이트는 하이퍼바이저의 I/O 오퍼레이션에 대한 메인 인터페이스 역할을 담당한다. 하이퍼바이저로 요청된 가상머신의 모든 입출력 I/O vSwitchNutanix를 통하여 스타게이트로 전달된다. 스타게이트는 클러스터의 모든 노드에서 동작한다. 스타게이트는 클러스터 설정 정보를 위해 제우스와 통신하고, 메타 데이터 정보를 위해 메두사와 통신한다.
큐레이터(Curator)는 분산 컴퓨팅 환경에 필요한 작업(Job) 또는 태스크(Task)를 관리하는 역할을 담당하는데, 맵리듀스 프레임워크(Map-Reduce Framework) 기반의 백그라운드 프로세스로 다음과 같은 작업을 수행한다.
큐레이터는 클러스터의 모든 노드에서 동작하며, 클러스터에서 임의의 노드가 리더 노드로 선택된다. 만약 리더 노드에 장애가 발생하면, 정상 동작 중인 노드들 중에서 임의의 노드가 새로운 리더 노드로 선택되는데, 새로운 리더 노드는 수백 밀리 세컨드 이내에 완료되기 때문에 클러스터의 성능에 영향을 주지 않는다. 큐레이터 리더 노드는 주기적으로 메타 데이터를 스캔하고, 만약 클린업 또는 최적화 등의 작업이 필요한 경우에, 해당 작업을 스케줄링하고, 스타게이트 등의 모듈에 작업을 할당하는 역할을 수행한다. 큐레이터는 1시간 주기로 실행되며, 다음과 같은 비정상적인 이벤트가 발생하였을 경우에 수시로 실행된다.
큐레이터는 클러스터 설정 정보를 위해 제우스와, 메타 데이터를 위해 메두사와, 그리고 스토리지와 관련된 작업을 위해 스타게이트와 통신한다.
프리즘(Prism)은 뉴타닉스 클러스터의 설정 및 모니터링을 위해 사용할 수 있는 웹 콘솔(Web Console)과 nCLI를 위한 메인 인터페이스 역할을 담당한다. 프리즘은 클러스터의 모든 노드에서 동작하며, 클러스터에서 임의의 노드가 리더 노드로 선택된다. 클러스터의 설정 및 모니터링과 관련된 모든 요청은 Linux iptables를 이용하여 리더 노드로 전달되기 때문에, 관리자는 클러스터 내의 임의의 Controller VM에 접속하여 관련 작업을 수행할 수 있다. 만약 리더 노드에 장애가 발생한 경우에, 임의의 노드가 새로운 리더 노드로 선택된다. 프리즘은 클러스터 설정 정보를 위해 제우스와, 각종 통계정보를 위해 메두사와 통신한다. 또한, 가상머신 관련 정보 및 하드웨어 정보를 참조하기 위해 하이퍼바이저와 통신한다.
뉴타닉스 클러스터를 구성하는 모든 뉴타닉스 노드에는 다음과 같은 3개의 컴포넌트에 각각 별도의 고정 IP를 할당하여야 한다.
뉴타닉스 클러스터가 정상적인 동작을 하기 위해서는 뉴타닉스 클러스터에 할당된 모든 IP들간의 통신이 가능하여야 한다. 뉴타닉스는 동일 서브 클래스의 IP 주소를 할당하는 것을 권장하지만, 클러스터의 노드 수가 증가하면 여러 개의 C 클래스를 사용하여야 하므로, 이 경우에는 모든 IP간의 통신이 가능하도록 라우팅되어야 한다. [그림 13]은 뉴타닉스 노드의 네트워킹 아키텍처로 IP 할당 구조 및 스토리지 관련 입출력 I/O을 위해 뉴타닉스에서 고정으로 사용하고 있는 내부 IP 대역과 관련된 내용이다. 뉴타닉스 노드에서 IP 할당과 관련된 주의사항 및 고려사항은 다음과 같다.
[그림 13] 뉴타닉스의 노드의 네트워킹 아키텍처
VMware vSphere의 경우에, 모든 뉴타닉스 노드에는 디폴트로 vSwitch0와 vSwitchNutanix가 생성된다. vSwitch0는 모든 종류의 네트워크 I/O를 위해 사용하는데, VM Network와 Management Network의 두 종류가 있다. VM network는 모든 가상머신에서 사용하는 가상 스위치이며, Management Network는 VMware vSphere에서 HA, vMotion, vCenter에 의해 사용된다.
뉴타닉스 가상 컴퓨팅 플랫폼을 구성하는 노드들은 뉴타닉스 클러스터(Nutanix Cluster)로 구성되었을 때 뉴타닉스 분산 파일 시스템이 정상 동작한다. 뉴타닉스 클러스터는 최소 3개 이상의 노드로 구성되어야 한다. 뉴타닉스 클러스터의 하드웨어 아키텍처는 [그림 14], 소프트웨어 아키텍처는 [그림 15]와 같다. 앞에서 설명한 것과 같이 클러스터의 모든 노드에는 하이퍼바이저와 Controller VM이 탑재된다. Controller VM은 로컬 노드에 장착된 스토리지를 제어하며, 다른 노드의 Controller VM과 10GbE 인터페이스를 통하여 뉴타닉스 분산 파일 시스템을 구성한다. 클러스터에 존재하는 모든 스토리지 자원은 클러스터에서 하나의 공유 스토리지 풀(Storage Pool)로 구성되고, 클러스터의 모든 노드에서 접근할 수 있다.
[그림 14] 뉴타닉스 클러스터의 하드웨어 구조
[그림 15] 뉴타닉스 클러스터의 소프트웨어 구조
뉴타닉스 노드는 스토리지 디바이스로 SSD와 HDD가 장착하고 있는데, SSD와 HDD는 용량과 입출력 속도에서 매우 큰 차이를 갖고 있다. 뉴타닉스 플랫폼에서는 SSD와 HDD의 특성을 최대한 활용하고 입출력 I/O 성능을 극대화하기 위해 다음과 같이 각각의 별도의 계층으로 정의하여 사용한다. NDFS는 뉴타닉스 클러스터 내에 존재하는 모든 SSD 디바이스를 공유하여 하나의 SSD Tier로 구성하는데, 입출력 I/O 속도가 매우 좋기 때문에 메모리와 SSD를 Performance Tier 또는 Hot Tier로 정의한다. 입출력 I/O 성능을 극대화하기 위해 Write 버퍼 및 Read 캐시로 사용하는데, 빈번하게 참조되는 "Hot 데이터"가 저장되는 영역이다. 또한, 클러스터 설정 정보 및 NDFS의 메타 데이터 등의 저장장치로 사용한다. SSD는 뉴타닉스 플랫폼에서 내부적으로만 사용되며, 사용자에게는 보여지지 않는다. NDFS는 Nutanix 클러스터 내에 존재하는 모든 HDD 디바이스를 공유하여 하나의 HDD Tier로 구성하는데, SSD에 비해 용량이 크기 때문에 Capacity Disk Tier 또는 Cold Tier로 정의한다. 데이터의 영구 저장 디바이스로 사용하는데, 입출력 I/O 성능을 향상시키기 위해 데이터를 1차적으로 SSD에 저장하고, ILM(Information Lifecycle Management) 정책에 따라 SSD에 저장된 데이터를 HDD로 이동한다. 빈번하게 참조되지 않는 "Cold 데이터"가 저장되는 영역이다. 뉴타닉스 가상 컴퓨팅 플랫폼에서는 유저 데이터를 항상 이중화하기 때문에, 실제 유저가 사용할 수 있는 용량은 실제 물리적 용량의 1/2이다. 즉, 10TB의 물리적 HDD 용량이 존재하는 경우에, 실제 유저 데이터를 위해서는 5TB 용량의 유저 데이터만 저장할 수 있다.
뉴타닉스 클러스터는 최소 3개 이상의 노드로 구성되어야 하며, 이종의 뉴타닉스 모델을 혼합하여 구성할 수 있다. 이론적인 측면에서, 하나의 뉴타닉스 클러스터가 포함할 수 있는 뉴타닉스 노드의 최대 개수에는 제약이 없다. 클러스터 사이즈는 뉴타닉스 노드에 탑재되는 하이퍼바이저의 종류 및 가상머신의 특성 등을 고려하여 적절하게 조절해야 한다. VMware vSphere가 구성할 수 있는 클러스터의 최대 개수는 32개의 호스트인데, 하나의 뉴타닉스 클러스터에서 여러 개의 VMware vSphere 클러스터를 구성하여 사용할 수도 있다.
NX-1020 모델은 다른 종류의 모델과 혼합하여 클러스터를 구성할 수 없다. NX-1050 모델은 10GbE 네트워크에서는 다른 뉴타닉스 모델과 혼합하여 구성할 수 있지만, 1GbE 네트워크에서 다른 모델과 혼합하여 구성할 수 없다. 만약 NX-1000 노드를 1GbE 네트워크로 구성하는 경우의 최대 클러스터 사이즈는 8개이며, 10GbE 네트워크에서는 최대 클러스터 사이즈에 제약이 없다.
뉴타닉스 클러스터의 모든 노드에는 동일 종류의 하이퍼바이저가 탑재되어야 한다. 또한, 뉴타닉스 클러스터의 모든 노드에는 동일 버전의 Controller VM(동일 NOS 버전)이 탑재되어야 한다.
뉴타닉스 클러스터는 최소 3개 이상의 노드로 구성되어야 한다. 만약 뉴타닉스 클러스터가 4개 이상의 노드로 구성된 경우에는, 1개의 노드에 장애가 발생하면, 장애가 발생한 노드를 클러스터에서 동적으로 제거할 수 있다. 그러나, 뉴타닉스 클러스터가 단지 3개의 노드로 구성되어 있는 경우에는, 장애가 발생한 노드를 클러스터에서 동적으로 제거할 수 없다.
[그림 16]은 뉴타닉스 클러스터의 일반적인 네트워크 구성도이다. 뉴타닉스 클러스터의 성능을 보장하기 위해, 뉴타닉스 노드는 반드시 10GbE 네트워크에 연결되어야 한다. 뉴타닉스 노드에서 제공하고 있는 2개의 10GbE 포트 및 1GbE 포트는 이중화를 위해 각각 별도의 L2 Leaf 스위치와 연결되어야 한다. 뉴타닉스 클러스터는 대량의 데이터를 고속으로 처리하여야 하기 때문에, 스위치에서 병목현상이 발생하지 않도록 Low Latency 스위치를 사용해야 한다.
[그림 16] 뉴타닉스 클러스터의 네트워크 구성