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_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 구축; 싱글 노드 설치
\# 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
\# reboot
Openstack 설치
\# dnf update -y
\# dnf config-manager --enable powertools
- packstack --gen-answer-file /root/answers.txt; answers.txt를 만들어 달라
\# dnf install -y centos-release-openstack-yoga
\# dnf update -y
\# dnf install -y openstack-packstack
\# 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-ex 가 enp0s3와 연결해서 이를 통해 외부 네트워크와 가상의 네트워크를 브릿지를 한다.
- 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
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
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 의 관계 |
---|
그림 직접 수정하기 |
- 정상적으로 설치 시 결과