1. OpenStack 이란?
출처 : https://www.redhat.com/ko/topics/openstack
출처 : https://docs.openstack.org/ko_KR/
OpenStack 이란 풀링된 가상 리소스를 사용하여 프라이빗 및 퍼블릭 클라우드를 구축하 관리하는 오픈소스 플랫폼
- OpenStack 플랫폼을 포함하는 툴 "프로젝트"는 컴퓨팅, 네트워킹, 스토리지 및 이미지 서비스의 핵심 클라우드 컴퓨팅 서비스를 처리한다
OpenStack 구성 요소
- 오픈스택 아키텍처는 오픈소스 프로젝트들로 이루어져있다
- OpenStack 은 Open Source Daemon 을 끌어모아서 하나의 서비스로 제공해준다
- 컴퓨팅, 네트워킹, 스토리지, ID, 이미지를 처리하는 6가지의 핵심 서비스가 있으며 개발이 진행됨에 따라 수십가지 이상의 옵션이 제공된다. 이 6가지 핵심 서비스는 나머지 프로젝트에서 대시보드, 오케스트레이션, 베어메탈 프로비저닝, 메시징, 컨테이너, 거버넌스를 처리할 수 있도록 하는 인프라가 된다
- NOVA: 오픈스택 컴퓨팅 리소스를 위한 전체 관리 및 액세스 툴로 스케줄링, 생성, 삭제를 처리를 해준다. network / router / VM 을 생성하는 컴퓨팅 서비스를 제공해준다. 이는 실질적으로 Hyper-Visor 이다
- NEUTRON: OpenStack 서비스 전반에서 네트워크를 연결
- SWIFT: 내결함성이 뛰어난 오브젝트 스토리지 서비스로 RESTful API를 사용해 구조화되지 않은 애플리케이션을 저장 및 검색
- CINDER: 셀프서비스 API를 통해 액세스할 수 있는 퍼시스턴트 블록 스토리지
- KEYSTONE: 모든 오픈스택 서비스를 인증하고 권한을 부여하며 모든 서비스를 위한 엔드포인트 카탈로그의 역할도 한다
- GLANCE: 다양한 위치에 있는 가상머신 디스크의 이미지를 저장하고 검색
OpenStack이 지원하는 것
- 프라이빗 클라우드
- 퍼블릭 클라우드
- 네트워크 기능 가상화
- 컨테이너
2. OpenStack 인증 & 대시보드
로그인하기
- 111 주소에 접속하자. admin / test123 으로 로그인하면 된다
- 사용자는 cli 나 gui ( 대시보드 서비스 ) 를 통해 인증 서비스에 Data 를 넘긴다. 인증 서비스는 DATABASE 의 인증 정보와 해당 계정의 Role 을 확인한다. 인증이 되면, 사용자에게 Token 을 넘긴다
- Token 에는 authorization ( role ) 정보와 timeout ( 유효 기간 ) 정보가 담겨있다
- 따라서 Token 유효 기간이 끝나면 자동으로 로그아웃이 된다
대시보드 살펴보기
- 왼쪽 admin 은 Project 명, 오른쪽 admin 은 계정 이다
- floating Ip 는 정적 NAT 를 통해 외부와 통신이 가능한 공인 IP 이다. AWS 의 EIP 같은 것이다
- 보안 그룹도 존재한다
- 컴퓨팅 자원의 경우 admin 에서 제한할 수 있다
인증 살펴보기
사용자 시간을 대한민국으로 설정하자
services : Tenant for the openstack services
admin: admin tenant
demo: default tenant
- Project 의 사용자를 살펴보면, 여러 사용자가 있다. admin 을 제외한 사용자는 모두 서비스 이다
- 각 사용자에 대한 역활을 확인할 수 있다
- 프로젝트 생성시, 프로젝트 참여 멤버와 해당 멤버의 프로젝트에 대한 권한을 설정할 수 있다
- 만약, demo 계정으로 들어온다면, 일반 사용자이므로 관리 탭이 사라졌다. 이 demo 사용자는 kiamotors 프로젝트에 기본적으로 참여되있다
관리 살펴보기
기존에 남아있는 라우터, 네트워크, 이미지를 모두 삭제해주자
- 관리는 관리자인 Admin 만 접속할 수 있다
- 모든 사용자가 배포한 인스턴스를 확인할 수 있다
- 이미지도 등록하여 사용 가능하다. 이 이미지를 기본 템플릿으로 인스턴스 배포에 사용할 수 있다
- 이는 인스턴스 생성을 위한 이미지 서비스인 glance 서비스로 AWS 에서의 AMI 서비스와 비슷하다
3. Project 살펴보기
Project 간 통신 & 관리자 Admin
- Project 는 서로 분리되어 있다. 이때, Project 의 인스턴스 간의 통신이 가능하다
- 참여자는 각각의 인스턴스만 확인할 수 있다. 관리자인 Admin 은 인스턴스를 모두 확인할 수 있다
- 위 그림상에서 참여자 admin 과 관리자 admin 은 다르다. 참여자 admin 은 Project 에 참여한 멤버로서의 admin 이고, 관리자 admin 은 관리자로서 관리 탭을 통해 Project 를 관리한다. 이는 AWS 의 root 사용자와 같은 것이다. 이러한 사용자를 IAM 사용자라고 한다
이미지 등록
https://docs.openstack.org/image-guide/obtain-images.html
- download page 에 접속
- 0.5.1 버전에 들어가서 위에 맞는 이미지를 다운 받자
- 관리의 이미지에 들어가서 이미지 생성을 누르자
- 위와 같이 다운 받은 이미지를 선택하여 등록하자
네트워크 생성
- 프로젝트의 네트워크의 네트워크에 들어가자
- 공유를 Check 하게 되면, 다른 Project 에서도 해당 네트워크를 확인할 수 있다
- 서브넷은 위와 같이 설정한다. 게이트웨이는 지정하지 않으면 자동으로 1 로 설정된다
- DHCP 는 201~239 로 범위를 지정하고, 외부와 통신을 하기 위해 네임 서버는 8.8.8.8 로 설정한다
- 생성되었다
라우터 생성 및 인터페이스 설정
- 라우터를 하나 생성하자. 이는 가상화된 라우터이다. 가용 구역을 확인하면, NOVA 라고 되어있다. 이 NOVA 가 만들어주는 것이다
- NOVA 서비스는 network / router / VM 을 생성하는 컴퓨팅 서비스를 제공해준다. 이는 AWS 의 EC2 와 유사하다. 이는 실질적으로 Hyper-Visor 이기도 하다
- 인터페이스를 설정해준다. 이 라우터의 인터페이스는 네트워크의 게이트웨이 이므로 1 로 지정한다
- 연결되었다
4. 인스턴스 배포 및 활용
인스턴스 생성 및 확인
- 인스턴스 탭에 들어가서 생성을 누르자
- 개수를 2 로 늘리자
- 새로운 볼륨 생성은 오류의 여지가 있으므로 사용하지 않는다. 사용 가능한 이미지를 올리자
- flavor 는 가장 작은 것으로 한다
- 할당된 네트워크를 확인하고, 인스턴스를 생성하자
- DHCP 로 부터 Ip 를 할당 받았으며, Active 상태 임을 확인할 수 있다. 가용 영역은 nova 이며, 작업은 배포시 실행할 작업인데, 우리는 따로 설정하지 않았으므로 None 이다
인스턴스 접속 및 확인
- 네트워크 토폴로지를 확인하면, 인스턴스가 생긴 것을 확인할 수 있다
- 콘솔 열기를 눌러주자
- 각 인스턴스의 콘솔 창을 열었다
- 로그인 정보를 통해 로그인하고, 다른 인스턴스와 게이트 웨이에 핑을 보내보자
- 디스크를 확인하면, vda 디스크가 파티션 되있는 것을 확인할 수 있다
5. Cli 에서 살펴보기
인증 정보 확인 및 인증
- keystonerc_admin 에는 계정 정보가 담겨있다
- 로그인을 위한 계정 정보, Region 정보, 로그인을 위한 Api 주소 가 나와있다
- PS1 은 프롬프트이다. 이는 인증 성공시 보여줄 것을 설정한 것이다
- 위와 같이 보여줄 프롬프트를 수정하자
- source 를 통해 인증을 하면 프롬프트에 adm 이라고 나온다. 이는 Token 을 발급 받은 것이다
계정의 인스턴스 및 네트워크 확인
- server 와 network list 를 확인하면, keystonerc_admin 에 Project 가 admin 이라고 지정되었기에, admin Project 의 인스턴스와 네트워크를 확인할 수 있다
- 서브넷을 확인하면, ID 를 확인할 수 있다. 이는 PK 로 서브넷 식별용이다
인증 서비스
- 이러한 인증 서비스인 keystone 은 mariadb 를 통해 제공된다
- 여러 Database 로 구성되어 있다. glance DB 에 들어가자
- image 테이블을 확인하면, 등록한 이미지를 확인할 수 있다
6. OpenStack 설치하는 방식
설치하는 방식
- 수동 설치
- 자동 설치
- packstack -> 저사양에서는 POC로 one node로 사용 할 수 있다
- devstck
- openstack on openstack
우리는 packstack 에 answer.txt 를 통해 자동 설치하게 했다
txt 파일 확인
- answer.txt 를 확인하자. 서비스들을 설치하는 설정이 있다. y 로 설정하면, 자동으로 패키지가 저장된 저장소로부터 패키지를 불러와서 설치해준다. 이러한 과정을 packstack 이 해준다
- cinder : 프로비저너 제공
- neutron : 네트워크 제공
- horizon : 대시보드 제공
- HOST 설정을 확인하자. 우리는 control, compute, network, storage 를 모두 111 로 하나의 Node 의 주소로 설정했다
- 만약, compute Node 를 늘린다면, 위에 파일에 Ip 주소를 추가해주면 된다
7. Cloud 플랫폼 구조
- Cloud 플랫폼은 위와 같다
- Storage 는 높은 용량을 필요로 한다
- Compute 는 다수의 Node 가 필요하다