가상화 - OpenStack 및 구축

jsbak·2023년 4월 4일
0

Cloud

목록 보기
9/59
post-thumbnail

20230404

OpenStack

  • ❗ 목표: OpenStack Service 의 명칭과 의미익히기
  • CentOS8 - 스트림 - CentOS-Stream-8-x86_64-latest-boot.iso Download
  • IaaS 형태의 클라우드 컴퓨팅 오픈 소스 프로젝트
  • 2012년 창설된 비영리 단체인 OpenStack Foundation에서 유지, 보수하고 있으며 아파치 라이선스 하에 배포
  • AMD, 인텔, 캐노니컬, 수세 리눅스, 레드햇, 시스코 시스템즈, 델, HP, IBM, NEC, VM웨어, 야후 등 150 개 이상의 회사가 이 프로젝트에 참가하고 있으며, 주로 리눅스 기반으로 운용과 개발이 이뤄짐.
  • 프로세싱, 저장공간, 네트워킹의 가용자원을 제어하는 목적의 여러 개의 하위 프로젝트로 이루어져 있고 대시 보드 프로젝트는 다른 하위 프로젝트의 운영 제어를 웹 인터페이스를 통해 담당합니다.
    • 💨 하이퍼 바이저를 컨트롤하기 위한 소프트웨어
      • KVM 이라는 하이버 바이저 위해 OpenStack 있고 레이턴시가 높다.
        • 대기 시간(Latency) 이란 하나의 데이터 패킷이 출발지에서 도착지까지 가는 데 걸리는 시간
      • KVM(커널 기반 가상 머신)이란 무엇인가요?
        • 커널 기반 가상 머신(KVM)은 물리적 Linux 시스템에 설치하여 가상 머신을 생성할 수 있는 소프트웨어 기능입니다. 가상 머신은 별도의 물리적 컴퓨터 없이 독립적인 컴퓨터 기능을 하는 소프트웨어 애플리케이션입니다. 가상 머신은 물리적 시스템과 CPU 사이클, 네트워크 대역폭 및 메모리와 같은 리소스를 공유합니다. KVM은 Linux에서 가상 머신에 대한 네이티브 지원을 제공하는 Linux 운영 체제 구성 요소입니다. KVM은 2007년부터 Linux 배포판을 통해 제공되고 있습니다.
  • 오픈스택은 열린 설계와 개발을 지향하며 커뮤니티는 6개월의 릴리즈 사이클로 개발을 진행하고 있습니다. 매 사이클의 기획단계에서는 오픈스택 디자인 서밋(OpenStack Design Summit)을 개최하여, 개발자 작업을 지원하고, 로드맵을 설정하고 있다.
  • 오픈스택은 클라우드를 내가 처음부터 만들어야하는 것.
  • AWS 와 상당히 많이 닮았다.
  • 💤 무료(오픈소스) / 웹 베이스 관리
  • OpenStack 은 LIBVIRT를 통해 KVM을 이용해서 VM 관리

    • KVM (Type 1 하이퍼 바이저)
    • LIB (Library) VIRT (Virtualization)
    • ESXi 보다 느리다. (직접 처리가 아니기 때문)
    • QEMU 라는 에뮬레이터 위로 VM 실행/중단 등
  • ❗ 개념적 아키텍처

    • 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; 인증(로그인)/권한(역할)
        • VM 관련 보안 부분을 전사적으로 처리
      • 나머지 Optional
        • Ceilometer - monitoring; Telemetry
        • Horizon - WEB UI(Dashborad); OpenStack의 서비스를 80% 정도만 이용가능,,, 계속 개발 중
      • Swift; Sixman
        • Object Storage
          • image, backups volumes(snapshot)
      • Sahara;
        • 빅데이터 처리(Hadoop)
      • Trove
        • DBMS
      • 💫 Ironic
        • 가상 머신 대신 Physical Machine(Bare Metal Server) 을 준비시키는 오픈스택 프로젝트
        • Openstack 자체를 배포
      • Heat; Sixman
        • IaC(Infra as Code)
        • Orchestration 도구; 자동화
    • 설치 해볼 것: Nova, Cinder, Neutron, Giance, Keystone, Swift, Heat

  • 논리적 아키텍처
    • 개념적 아키텍처에 나온 서비스를 상세하게 설명한 것
  • 오픈스택 서비스 관계도
    • 각 서비스에 해당하는 오픈 소스 프로젝트 생각해보기

OpenStack_Yoga 구축

스펙

OpenStack(Oracle VirtualBox) - provisioning; 가상화 시스템 자원 설정
CPU : 6C(8C-2C(host))-중첩된 가상화(nested virtualization)
RAM : 10GB(16GB-6GB(host))-10240MB
SSD : 128GB(동적할당)
NET : Bridge(public), vSwitch(private; 10.19.1.0/24); 10.19.1.0 ~ 10.19.1.255(ESXi와 다른 네트워크를 이용하기 위해 ESXi와 통신하려면 라우터가 필요하다(라우팅이 필요-서로 다른 네트워크이기 때문이다.)) 나중에 10.19.0.0/16
IMG : CentOS-Stream-8.iso

CentOS-Stream-8 환경에 yum install 방식으로 설치하게 된다. 인터넷에 연결되지 않아도 설치가 불가능하다. (cf. ESXi는 ISO 이미 설치이기 때문에 인터넷이 없어도 설치가 가능하다.)

VM 만들기

  • 순서
    VirtualBox ➡ 새로 만들기 ➡ 이름 및 운영 체제 설정 ➡ 메모리 (10240MB; 10GB, 원래는 ESXi보다 더 무겁기 때문에 추천은 16GB이다.) ➡ 새 가상 하드 디스크 만들기 ➡ 하드 디스크 파일종류; VDI ➡ 동적할당(Thin 방식) ➡ 128.00GB
  • VirtualBox ➡ 새로 만들기
  • 이름 및 운영 체제 설정; Openstack_Yoga, Linux, Red Hat (64-bit)
  • 메모리 크기 설정 (10240MB; 10GB, 원래는 ESXi보다 더 무겁기 때문에 추천은 16GB이다.)
  • 하드 디스크 설정; 새 가상 하드 디스크 만들기
  • 하드 디스크 파일종류; VDI
  • 물리적 하드 드라이브에 저장; 동적할당(Thin 방식)
  • 파일 크기; 128.00GB

VM 설정

  • 순서
    VirtualBox ➡ 설정(S) ➡ 시스템; 마더보드; 플로피 디스크 해제 ➡ 프로세서(P); 프로세서 개수 6개; 확장된 기능, 네스티드 VT-x/AMD-V 사용하기(V) 체크 ➡ 저장소; CentOS-Stream-8 이미지 추가 ➡ 네트워크; 어댑터에 브릿지 ➡ 오디오; 해제 ➡ USB; 해제 ➡ 확인
  • VirtualBox ➡ 설정(S)
  • 시스템; 마더보드; 플로피 디스크 해제
  • 프로세서(P); 프로세서 개수 6개; 확장된 기능, 네스티드 VT-x/AMD-V 사용하기 체크 (중첩된 가상화 활성화; VM 위에 올려진 OpenStack에서 구동되는 VM들의 성능이 떨어진다.)
  • CentOS-Stream-8 이미지 추가

  • 네트워크; 어댑터에 브릿지
  • 기타 인터페이스 제거
    오디오; 해제 ➡ USB; 해제 ➡ 확인

CentOS 설치(VM 시작)

  • 💤 중지된 사진( 시작 누르는 사진 캡쳐에서 넣기)
  • 네트워크 활성화
  • 디스크 파티션 설정

  • Home 용량 제거
  • 부족한 메모리를 보완할 SWAP 용량 추가
  • 나머지 용량 / 경로에 추가
  • Accept Changes
  • Root 패스워드 설정
  • Time & Date 설정
  • Software Selection - 가벼운 버전으로 설치
    • CentOS Stream 8 버전은 인터넷이 되어야한다. 설치중 미러 사이트에서 최신의 내용을 수행하기 때문
  • Begin Installation - CentOS Stream 8 설치

OpenStack 구축; 싱글 노드 설치

  • update
    • 3.4. YUM/DNF를 사용한 패키지 관리
    • yum -> dnf; RHEL 8에서는 DNF 기술을 기반으로 하는 YUM 툴을 통해 소프트웨어를 설치
    • 안될 수도 있다. 이미 설치하면서 최신 데이터를 가져오기 때문
\# dnf update -y
\# dnf install -y bash-completion

네트워크 인터페이스 설정

  • 서버이기 때문에 IP 수동(none)
    우리가 보통 systemctl restart network network 서비스를 다시 시작하는데 여기는 network 서비스가 없다.
  • CentOS7까지는 network 있어서 설정할 수 있으나 CentOS Stream 8 이후로는 NetworkManager를 이용(nmcli nmtui; text user interface)
\# vi /etc/sysconfig/network-scripts/ifcfg-ens160
----------------------------------------
TYPE=Ethernet
BOOTPROTO=none 
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.1.82
NETMASK=255.255.248.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
----------------------------------------

SELinux Disable

  • selinux; disable
    # sestatus
\# vi /etc/selinux/config
----------------------------------------------------
SELINUX=disabled
----------------------------------------------------

network 서비스 설치

  • CentOS 9 부터는 network-scripts 마저도 없고 NetworkManager만 이용해야한다.
  • firewalld 이용하지 않고 자체적인 security group 을 이용
  • network 서비스를 사용하기 때문에 NetworkManager 서비스를 중지한다.
\# dnf install network-scripts -y
\# systemctl disable firewalld
\# systemctl disable NetworkManager
\# systemctl enable --now network # systemctl enable network & systemctl start network
\# reboot

Openstack 설치

  • powertools 저장소 활성화
    \# dnf update -y

	## powertools 저장소 활성화
	## powertools가 활성화 되야 openstack 설치 가능
	\# dnf config-manager --enable powertools 
  • packstack --gen-answer-file /root/answers.txt; answers.txt를 만들어 달라
## 제반 사항 설치
\# dnf install -y centos-release-openstack-yoga

## centos-release-openstack-yoga에 관련된 업데이트
\# dnf update -y

## 오픈스택을 쉽게 설치하기 위한 자동화 도구 (퍼펫이라고하는)
\# dnf install -y openstack-packstack

## answers.txt를 만들어달라(gen)
\# packstack --gen-answer-file /root/answers.txt

answers.txt 파일 수정

  • NTP : 네트워크 타임 프로토콜
  • CONFIG_NEUTRON_L2_AGENT: 가상 스위치; L2 랜케이블 연결 스위치 종류 지정
  • CONFIG_NEUTRON_ML2_TYPE_DRIVERS: 네트워크 드라이버 설정
    • vxlan 내부네트워크(프라이빗)로 설정
    • flat 외부네트워크(퍼블릭)
  • CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES: TENANT 가입자; 가입자가 사용할 네트워크 타입
  • CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS: 스위치 드라이버 설정 (L2 Agent에 따름)
  • CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS; extnet:br-ex
  • CONFIG_NEUTRON_OVS_BRIDGE_IFACES; br-ex:enp0s3
    • 💥 enp0s3 이것은 연결하려는 네트워크 인터페이스 맞게 변경해준다. Ex. ens160 💥
    • br-ex; br(ridge의 약자)
    • extnet:br-ex; extnet라는 가상 NIC와 br-ex가 연결되어 있고 br-exenp0s3와 연결해서 이를 통해 외부 네트워크와 가상의 네트워크를 브릿지를 한다.
    • VM 들은 extnet과 연결
  • CONFIG_PROVISION_DEMO; 테스트 데모 네트워크 사용 여부
\# vi /root/answers.txt
----------------------------------------------------
CONFIG_DEFAULT_PASSWORD=Test1234!
CONFIG_KEYSTONE_ADMIN_PW=Test1234!
CONFIG_CINDER_VOLUMES_SIZE=100G
CONFIG_NTP_SERVERS=0.kr.pool.ntp.org
CONFIG_HEAT_INSTALL=y
CONFIG_NEUTRON_L2_AGENT=openvswitch
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch

## extnet 이름을 바꿀 수도 있다. physnet1 등 임의로 바꿀수도 있으나 기본으로 하자
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
## br-ex; br(ridge의 약자)
## enp0s3은 각 인스턴스에 맞게 변경
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:enp0s3
CONFIG_PROVISION_DEMO=n
----------------------------------------------------

openstack 설치

  • packstack; Puppet 모듈을 사용하여 사전 설치된 여러 서버에 OpenStack 의 다양한 부분을 자동으로 배포하는 유틸리티
  • 💨 작업이 정상적으로 끝나면 IP를 확인해서 변경해주자 answers 파일의 영향으로 변경된다.
\# packstack --answer-file /root/answers.txt
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex; CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:enp0s3 의 extnet:br-ex:enp0s3 의 관계
그림 직접 수정하기
  • 정상적으로 설치 시 결과
profile
끄적끄적 쓰는곳

0개의 댓글