OpenStack Service
❗ 개념적 아키텍처
- VM 을 어떻게 서포트 할지, (무중단), 가용 가능한 모든 자원 동원, 주변 서비스들이 VM 가동을 돕는다.
- Compute Service (cpu, ram)
- Nova; cpu & memory Setting
- Storage Service
- Cinder; Block Storage, SSD / HDD
- Network Service
- Neutron; public / private subnet
- Image Service
- Glance; OS(CentOS, Ubuntu, ...)
- Keystone; 인증(로그인)/권한(역할)
- 나머지 Optional
- Ceilometer - monitoring; Telemetry
- Horizon - WEB UI(Dashborad); OpenStack의 서비스를 80% 정도만 이용가능,,, 계속 개발 중
- Swift; Sixman
- Object Storage
- image, backups volumes(snapshot)
- Sahara;
- Trove
- 💫 Ironic
- Heat; Sixman
- IaC(Infra as Code)
- Orchestration 도구; 자동화
- 설치 해볼 것: Nova, Cinder, Neutron, Giance, Keystone, Swift, Heat, Horizon
논리적 아키텍처
- 개념적 아키텍처에 나온 서비스를 상세하게 설명한 것
오픈스택 서비스 관계도
- 각 서비스에 해당하는 오픈 소스 프로젝트 생각해보기
구성요소(서비스)
클라우드 운영 체제라고도 하는 OpenStack 프로젝트는 여러 다른 프로젝트로 구성됩니다. OpenStack 설치시 여러 프로젝트중 일부만 포함살 수 있습니다.
OpenStack Compute (Nova)
- 인스턴스 (프로세서, 메모리, 블록장치, 네트워크)의 추상화 수준을 관리
- 모든 클러스터 노드 컴퓨터에 설치
- 하이퍼 바이저(KVM)을 통해 인스턴스 라이프 사이클을 관리
- 가상 머신, 베어메탈 서버 생성을 지원하며(ironic 사용을 통해) 시스템 컨테이너에 대한 지원이 제한
- Nova는 해당 서비스를 제공하기 위해 기존 Linux 서버 위에 데몬 세트로 실행
OpenStack Networking (Neutron)
- 네트워크 연결을 담당
- 사용자는 가상 네트워크 및 가상 라우터를 생성하고 floating IP 기능을 통해 인터넷 공급자 (IP) 주소를 설정할 수 있습니다. 이 메커니즘 덕분에 인스턴스는 외부로부터 고정 IP 주소를 할당 받는다.
- 네트워크 부하분산 서비스와 방화벽, VPN 등의 기능을 모듈로 설치하여 이용
OpenStack Identification (Keystone)
- 클라우드 운영 체제의 통합 인증 시스템
- 사용자 계정의 유효성과 OpenStack 프로젝트 및 역할에 대한 사용자의 일치 여부를 확인
- 다른 서비스에 액세스하기 위한 토큰 제공
OpenStack Image Service (Glance)
- 이미지 서비스 💨 AMI; Amazon Machine Image
- 인스턴스의 이미지를 관리하며 인스턴스를 실행하기 위한 템플릿으로 사용
- 템플릿; 이미 OS 설치 및 필요한 소프트웨어가 되어 있는 이미지
- 백업과 스냅샷 생성 기능 제공
- vhd, vmdk, vdi, iso, qcow2 및 ami를 포함한 다양한 형식을 지원
- 다른 것과는 다르게 iso 는 💢 무조건 설치 과정이 필요하다.
OpenStack Block Storage (Cinder):
- 인스턴스를 실행하여 사용할수 있는 블록 스토리지 관리
- 영구 데이터 스토리지
- 과거에는 인스턴스 스토어(휘발)있었는데 지금은 껏다 켜도 남아 있는 영구 데이터 스토리지
- 스냅샷 이용 가능
- 데이터 저장 및 복원 또는 복제 대부분의 경우 GNU / Linux 서버 기반의 데이터 스토리지는 Cinder와 함께 사용된다.
OpenStack Object Strage (Swift)
- 객체 저장소
- 사용자가 파일 저장가능
- 분산 아키텍처를 갖추고 있어 장애 조치를 위한 수평 확장 및 복제 가능
OpenStack Orchestration (Heat)
- IaC; Infra as Code 서비스
- AWS CloudFormation 형식의 템플릿을 사용하여 다른 모든 OpenStack을 관리
- 대부분의 유형의 리소스(가상 머신, 볼륨, 유동 IP, 사용자, 보안 그룹 등)을 생성 할 수 있습니다.
- Ceilometer의 데이터를 사용하여 응용 프로그램 스케일링을 자동화할 수 있다.
Nova
- 오픈스택 컴퓨트 서비스 Nova는 대규모의 가상머신을 제공하거나 관리할 수 있으며 언제든지 이중화 및 서비스 확장이 가능한 클라우드 컴퓨팅 시스템을 생성하기 위해 디자인된 오픈스택의 핵심 서비스
- nova-api 서비스는 대시보드 또는 콘솔을 통해 사용자의 인스턴스 생성을 요청
- nova-api는 요청을 메시지 큐 서비스를 통해 컴퓨트 노드에서 실행 중인 nova-compute 서비스에게 전달
- nova-api로부터 요청을 받은 nova-compute 서비스는 컴퓨트 노드에서 실행중인 하이퍼바이저에게 이를 전달
- 하이퍼바이저는 이 요청을 받아들여 미리 설정해 놓은 네트워크 및 Flavor 등을 사용해서 인스턴스를 생성
- 이렇게 생성된 인스턴스를 사용자는 콘솔 서비스를 통해 접근 및 사용 가능
, nova-novncproxy 서비스를 통해 vnc 를 통한 접속도 가능
Neutron
- 오픈스택 네트워크 서비스 Neutron
- 오픈스택 클라우드에서 가상 네트워크 인프라를 생성하고 관리할 수 있도록 허용하는 섭시ㅡ
- 네트워크 서비스(FWaaS, LBaaS, VPNaaS), 외부 및 내부 네트워크(Flat, VXLAN, 라우터(Floating IP), 보안그룹(Security Group) 등과 같이 실제 네트워크 장비와 같은 물리적 요소들의 기능을 모방해 이들과 유사한 기능을 제공
- neutron-server는 일반적으로 컨트롤러 노드에 설치되며 네트워크, 서브넷 및 라우터 생성 및 관리 등의 요청을 API를 통해 처리
- neutron l2 agent는 컴퓨트 노드에 설치되며 neutron-server와 통신하여 호스트 상의 네트워크를 설정하는 역할도 한다. 또한 LinuxBridge, OVS 그리고 보안 그룹 및 VLAN 태깅도 처리할 수 있다.
- nenutron l3 agent는 neutron-server로부터 라우터 관리, 라우팅 그리고 플로팅 IP에 대한 메시지를 받아서 관리
- neutron dhcp agent는 IP 주소 할당에 사용
Keyston
- 오픈스택 인증 서비스 Keystone
- 오픈스택 서비스와 사용자를 위한 인증과 권한 부여 그리고 서비스의 카탈로그를 관리하기 위한 통합 서비스를 제공하는 오픈 스택의 핵심 구성 요소
- 사용자: 사람, 시스템 또는 서비스를 의미 Keystone 서비스는 이러한 사용자의 서비스 요청을 검증하는 역할을 수행
- 토큰: 사용자가 오픈스택 서비스가 제공하는 자원에 접근할 때 그 신분을 증명하기 위해 사용하는 임의의 텍스트로 이뤄진 데이터
이러한 각 토큰 내부에는 사용자가 어떤 자원에 접근이 가능한지 그 범위가 지정돼 있다.
- 프로젝트 : 과거 테넌트(임차인)이라는 이름으로 사용됐으나 현재는 프로젝트로 변경
어느자원이나 애플리케이션에 대한 권리를 가진 보안 그룹으로 자원에 대한 소유권을 정의
- 서비스: nova, glance, cinder, neutron 같은 서비스를 의미
- 엔드포인트: 사용자가 서비스를 이용하기 위해 연결 정보를 제공하는 접근 가능한 네트워크 주소로서 이를 위해 URL 즉 IP 주소와 포트 번호 그리고 버전 정보를 사용
- 역할: 서비스들은 이러한 역할을 통해 사용자들이 어떤 동작 및 어떤 자원에 접근이 가능한지 파악
- 도메인: Keyston의 구성 요소를 효과적으로 관리하기 위해서 그 활동 범위가 제한된 사용자와 그룹 그리고 프로젝트의 연합체로 정의 가능
Glance
- 디스크와 서버의 이미지를 발견하고 등록하고, 검색하는 기능을 제공하는 이미지 서비스
- 일반적으로 템플릿 형태로 저장되며 인스턴스 생성을 위해 사용
- 인스턴스의 한 시점을 저장하기 위한 스냅샷 기능 제공
- glance-api는 Nova 서비스나 최종 사용자로부터 이미지에 대한 API 요청을 받아들인다. 그리고 그 이미지 파일을 Swift와 같은 오브젝트 스토리지 또는 Cinder 같은 블록 스토리지 등에 저장
2.glance-registry와 glance-database는 이미지에 대한 메타데이터 정보를 저장, 진행 그리고 검색하기 위해 사용
- glance-store는 이미지 저장하는 공간으로 AWS S3, Swift, Cinder, VMware 등의 백엔드 저장 장치를 이용
- Glance 서비스의 디스크 포멧
- RAW, vhd, vmdk, qcow2, vdi, iso, ovf, ova
Cinder
- 오픈스택 블록 스토리지
- Nova 서비스가 생성한 인스턴스에 저장 공간으로 사용되는 블록 스토리지를 제공하는 서비스
- cinder-api는 여러 클라이언트 서비스로부터 API 요청을 받아 cinder-volume 서비스에게 전달하는 역할
- cinder-volume은 가상머신에게 스토리지를 제공하기 위해서 백엔드에 존재하는 볼륨 디바이스에 대한 읽기 또는 쓰기 등의 요청에 대해 응답, 이러한 요청은 아래 cinder-scheduler로부터 도착하며 볼륨을 생성, 수정 또는 삭제할 수 있다.
- cinder-sechduler는 nova-scheduler처럼 볼륨을 생성할 수 있는 최선의 스토리 노드를 선택하는 역할을 하며 일반적으로 컨트롤러 노드에서 실행되며, 요청 내용을 진행하기 위해서 그 선정된 호스트에 위치한 cinder-volume과 지속적으로 의사 소통을 진
Swift
- 오픈스택 오브젝트 스토리지 Swift는 대량의 데이터를 저장하기 위해 HTTP 프로토콜을 통해 접근이 가능한 스토리지 시스템을 제공하는 서비스
- Object - Videos, Images, Documents File, ...etc
- swift-proxy-server는 클라이언트로부터 오픈스택 오브젝트 스토리지 API와 HTTP 요청을 받아들인다. 이러한 요청은 파일을 업로드하고 메타데이터를 수정하고 컨테이너를 수정할 경우 필요하다. 또한 웹 브라우저를 통해 파일 도는 컨테이너의 목록도 제공
- swift-account-server는 오브젝트 스토리지에서 정의된 계정 및 account 데이터베이스에 저장된 컨테이너 목록을 관리
- swift-container-server는 오브젝트 스토리지에서 컨테이너 또는 폴더의 매핑 정보와 스토리지 정책을 관리하고 컨테이너 데이터베이스에서 특정 컨테이너에 포함된 오브젝트 목록도 관리
- swift-object-server는 실제 데이터인 오브젝트를 저장하고 검색하고 삭제하는 역할을 수행
Heat
- 오픈스택 오케스트레이션 서비스
- 스토리지, 네트워킹, 인스턴스 그리고 기타 애플리케이션과 같은 오픈스택 클라우드 서비스의 주요 자원을 파일 기반의 템플릿에 기초해서 생성하고 관리할 수 있는 서비스
- 사용자는 API를 직접 호출하여 오케스트레이션 서비스를 요청하거나 CLI를 통해 동일한 작업을 수행할 수 있다. 이때 CLI 역시 사용자 명령을 API로 변환하여 처리하게 된다.
- 수신된 API 서버는 AMQP 규격 기반의 메시지 통신을 통해 Heat Engine으로 이를 전달
- Heat Engine은 수신한 템플리소가 API의 파라미터에 포함된 사용자 요청 데이터를 기반으로 인프라 및 클라우드 애플리케이션을 생성하기 위해 Nova API, Neutron API 등과 같은 오픈스택 프로젝트들의 API를 호출
- 오케스트레이션
- 컴퓨터 시스템과 애플리케이션, 서비스의 자동화된 설정, 관리. 조정을 의미