- 네트워크가 192.168.0.x/24일때,
- SubnetMask를 255.255.255.192 로 만들면 4개의 네트워크주소 범위를 만들 수 있다.
- 11111111.11111111.11111111.11000000
- 255. 255. 255. 192
- 4번째 위치의 비트 앞자리 2bit로 네트워크 서브넷을 구별하고, 나머지 4bit로 IP주소를 할당하는 방법이다.
- 비트 마스크와 서브넷 마스크 별 네트워크개수와 host의 개수이다.
- 제일 아래 /32 bit mask는
특정주소 하나
를 의미한다. (Host Only)
- 코어서비스는 없으면 VM을 구성할 수 없다.
- Openstack을 사용하며 ESX와 동기화 할 수 있다.
- LiBVIRT를 사용하여 연결할 수 있다.
- 중요한것은 화살표이다. 모두 VM에게로 몰려있다.
- 결국 VM에게 서비스를 제공하는 그림이다.
- VM이 어떤 비즈니스 서비스를 제공하기 위해 필요한 서비스 및 기능들을 제공한다.
NOVA
가 하는일은 CPU, MEMORY등의 계산(Compute)자원을 제공한다.Keystone
은 인증과 권한을 제공해준다. (ID, PW을 제공하여 로그인 서비스를 제공한다.)Glance
는 이미지(Iso파일과 같은, 결국 OS를 말한다.) 서비스를 제공한다.Neutron
네트워크를 제공하는 서비스이다.Cinder
Volume Storage를 제공하는 서비스이다.- 이 5개 이외의 서비스는 옵셔널 서비스이다.
- 마지막
Swift
는 Webshare처럼 파일공유를 위해 URL을 만들어 공유하는객체(Object) 파일공유 서비스
이다. 필수 코어서비스는 아니지만 자주 쓰이며 중요하다고 할 수 있다.
- Compute Service(CPU, RAM) : Nova, AWS(EC2)
- (Block)Storage Service(SSD, HDD) : Cinder(Block storage), AWS(EBS, Elastic Block storage)
- Network Service(G/W, S/W) : Neutron, AWS(VPC)
- Image Service(OS) : Glance, AWS(AMI)
- Identify Service(AUTH, keypair) : KeyStone, AWS(IAM)
- Orchestration Service(IaC) : Heat, AWS(CloudFormation)
- 클라우드 운영체제라고도 하는 Openstack프로젝트는 여러 다른 프로젝트로 구성된다. OpenStack설치 시 여러 프로젝트 중 일부만 포함 할 수 있다.
- 모든 클러스터 노드 컴퓨터(서버)에 설치된다. 노드안에는 VM들이 여러개가 존재하고 있다가, 한 컴퓨터가 다운되더라고, 다른 VM들이 역할을 맡아, 어떻게든 서비스를 유지할 수 있도록 한다.
- 클러스터는 여러 컴퓨터를 하나처럼 사용할 수 있게 묶어놓은 시스템이다.
- 우리는 현재 하나의 컴퓨터에 모든 VM을 연결하지만, 실무에서는 말도안되는 상황이다. 하나의 컴퓨터가 다운되면 모든게 다운되기 때문이다.
- 실무에서는 최소 2개, 보통 3개 이상의 컴퓨터를 연결하여 클러스터를 구성한다.
- 인스턴스 (VM, 프로세서, 메모리, 블록장치, 네트워크)의 추상화 수준을 관리한다.
- 인스턴스 : 전통적인 서버와는 다르게 인스턴트식품처럼 빠르고 간단하게 설정하고 버릴 수 있는 서버- 또, 하이퍼바이저(KVM)을 통해 인스턴스(VM)의 라이프사이클을 관리한다.
- 네트워크 연결을 담당하는 서비스
- 사용자는 가상 네트워크, 가상 라우터를 생성하고 floating IP(공인IP, AWS(EIP)) 기능을 통해 IP주소를 설정할 수 있다. 또, 네트워크 부하분산 서비스(HAproxy와 매우 유사), 방화벽, VPN등의 기능을 모듈로 설치하여 이용할 수 있다.
Horizon
은 WEB UI를 제공하는 서비스이다.Heat
는 IaC (Infrasturcture as Code)를 제공하는 서비스이다.
- 링크주소로 파일을 다운로드 받을 수 있는 파일공유 시스템
extnet
은 VM이 봤을때, 가장 밖에 있는 랜카드로 보인다.
- MANUAL PARTITION을 진행한다.
- 이 설정 후, Begin Installation 진행한다.
- 이후
packstack
이라는 도구를 설치하여 Openstack을 설치할 것이다.- 또,
yum
을 사용하던 기존 bash에 비해 CentOS8은dnf
를 사용한다.- CentOS7과 다르게, network script를 수정하기 위해서는 network-scripts를 설치해야한다.
- 또, firewall과 NetworkManager를 disable할 것이다. 현재 필요 없다.
- 그리고, Openstack을 사용하기 위해, powertools라는 도구를 사용해야 한다.
- powertools가 활성화 되면, centos-release-openstack-yoga를 다운로드하고 설치한다.
- yoga가 최신 안정화버전이다.- NTP_SERVER로 kr.pool.ntp.org를 사용할 것이다.
- HEAT_INSTALL=y 로 HEAT를 설치한다.
- NEUTRON L2스위치로
openvswitch
를 사용할 것이다.- NEWTRON DRIVER로 vxlan(사용자 네트워크로 사용할것), flat을 사용한다.
vi /etc/sysconfig/network-scripts/ifcfg-ens160
- 랜카드 network-scripts 설정TYPE=Ethernet BOOTPROTO=none NAME=ens160 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.0.10 NETMASK=255.255.240.0 GATEWAY=192.168.0.1 DNS1=8.8.8.8 DNS2=8.8.4.4
vi /etc/selinux/config
SELINUX=disabled
dnf install network-scripts -y
- network-scripts를 설치해준다.systemctl disable --now firewalld
- stop과 동시에 disable한다.systemctl disable --now NetworkManager
- NetworkManager도 정지시켜준다.systemctl enable network
- 네트워크는 부팅시켜준다.dnf update -y
- 업데이트가 있다면 ㄱdnf config-manager --enable powertools
- powertools를 활성화 시킨다.dnf install -y centos-release-openstack-yoga
- openstack을 설치한다.dnf update -y
- 다시 업데이트를 하면 업데이트 할게 많아진다.
- 설치중에 네트워크가 불안하면, 설치가 안되는 경우가 존재한다.
dnf install -y openstack-packstack
- openstack을 퍼펫이라는 자동화 도구를 이용하여 openstack-packstack으로 자동쉽게으로 설치하고 잇다.packstack --gen-answer-file /root/answers.txt
- packstack으로 gen(generate한다. 파일을)
- 에러가 아니다.
cp answers.txt answers.txt.bak
- answers.txt를 사본을 만들어 놓는다.vi /root/answers.txt
CONFIG_DEFAULT_PASSWORD=Test1234! CONFIG_KEYSTONE_ADMIN_PW=Test1234! CONFIG_CINDER_VOLUMES_SIZE=100G CONFIG_NTP_SERVERS=kr.pool.ntp.org CONFIG_HEAT_INSTALL=y CONFIG_NEUTRON_L2_AGENT=openvswitch
- CONFIG_NEUTRON_L2_AGENT는 기본값을
ovn
을 가지고 있는데, 이건 최근 버전의 스위치이고, bridge 네트워크 설정도 스위치의 역할도 한다. 우리는 openvswitch를 사용할 것이다.CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan
- vxlan이 가장 다루기 만만하다.
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
- 위 extnet:br-ex에서 extnet은 이름을 바꿀 수 잇다. 그러나 한번 바꾸면 이후 설정에서 다 바꿔야한다.
그래서 확인차 검색해본 것이다.CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:ens160
- br-ex : [interface name]으로 설정한다.
CONFIG_PROVISION_DEMO=n
- 네트워크 세팅을 자주 할것인데, 위 설정은 연습용으로 네트워크를 꾸며주는 설정이다.
- 우리는 DEMO를 사용하지 않겠다.- vi로 들어가서
/
명령어로 검색하며 바꿔준다packstack --answer-file /root/answers.txt
- 설치 시작 (12:20시작)
- 설치가 완료되었다면, 웹 브라우져에서 Openstack의 IP주소로 들어가본다.
- 아까 설정한 ID(admin), PW로 접속하면 접속이 가능하다.
- 관리 항목은 admin으로 접속해야지 볼 수 있는 항목이다.
- 관리 -> 네트워크 -> 네트워크 이곳은 관리자(admin)만 설정할 수 있다.
- 기존에 Network를 설정하기위해 여러가지 했던 것을 , 여기서는 클릭 몇번으로 설정할 수 있다.
- 외부를 연결할 네트워크 설정으로 EXTERNAL을 생성한다.
- 공급자 네트워크
Flat
은 외부를 연결하는 네트워크이며,Bridge
와 유사하다.- 아까 중요하다고 했던
extnet
이다. 만약 이 이름을 변경했었다면, 이부분도 변경 되어 있어야한다.
- 기본 마스크
192.168.0.0/24
가 아니라 더욱 IP 범위를 늘려/20
로 하여서 256 2222 =4096개의IP주소를 사용할 수 있도록 하였다.
- 192.168.11.129 ~ 192.168.11.254 를 내 IP주소 범위로 사용하도록 한다.
- 또, DHCP를 사용하지 않을 것이다.
내부 네트워크는 가입자마다 네트워크를 꾸밀 수 있다.
- 내부 게이트웨이인 10.0.28.1을 베이스로 네트워크 주소를 설정한다.
- DHCP를 사용하여 IP를 부여받을 것이다.
- DNS서버는 192.168.0.66 (강의실 강사님 DNS서버)를 사용한다.
- 라우터의 역할은 외부(EXTERNAL)과 내부(INTERNAL)을 연결시켜 주는 것이다.
- EXTERNAL만 연결되어있다.
- EXTERNAL과 INTERNAL모두 잘 연결되었다.
- 명령프롬프트에서 EXTERNAL IP주소로 PING을 보내봐서 잘 보내진다면 성공이다.
- EC2 인스턴스를 생성할때 많이 본것같은 페이지이다.
- Ephemeral Disk : 임시디스크, 빠르다. 그러나 VM이 지워지면 같이 지워진다. 클라우드기술 초기에는 데이터베이스가 아닌, 웹서버만 이용했었고, 영구적 데이터 저장이 필요 없을거라 생각했었다.
- Root Disk : 영구적인 볼륨, VM이 지워질 때 데이터가 남아있다.
- AWS에서 볼 수 있는,
Micro
와nano
사이즈가 없다.
- 그래서 생성해보도록 하겠다.
- 이 생성은 관리자의 권한이다.
- 이름을 다른 flavor와 유사하게
m1.micro
로 적용- ID는 auto로 다른 flavor와 겹치지 않게 한다.
- VCPUs : 1
- RAM : 1024 Mb
- Root 디스크 10(Gb) (CINDER)
- Openstack에서 Image를 올려서 사용할 수 있도록 한다.
- Openstack에서 사용할 수 있는 qcow2 포멧을 사용하도록 하겠다.
- 키 페어 생성
- 이름 : mz-open-key
- 키유형 : SSH 키
- 항목 생성 및, 다운로드가 완료되었다.
- 키는 분실하면 안된다.
- Default가 나오면, 사용하지 않는것으로 생각하면 된다.
- 해커들의 가장 첫번째의 공격 대상이다.
SG-WEB
이라는 이름의 보안그룹을 만들었다.- 내보냄 = outbound = egress (오픈스택에서 밖으로)
- 방화벽은 밖에서 들어오는 접근은 모두 막는다.
- 그래서 밖에서 들어오는 특정 접근을 open하는 방식으로 접근을 허용했다.
- 사용자 정의 tcp : add Port
- 만약 tcp port로 22번을 허용한다면, SSH를 허용한 것과 같다.- http : 80 port
- http접근을 허용해준다.
- 들어옴 = inbound = ingress (밖에서 오픈스택으로 들어옴)
- 결국 모든 ICMP, 22번포트(SSH), 80번포트(HTTP)를 들어옴으로 추가해준다.
- 공인IP를 가지고 있다면 여기서 관리를 할 수 있다.
- 아직 VM이 생성되지 않았으니 ping이 나가지는 않는다.
centos
로 해준다.
sudo yum install httpd
: httpd 설치 진행한다. root계정이 아니기 때문에 sudo 붙혀서 설치한다.sudo vi /etc/sysconfig/selinux
: selinux를 꺼준다.SELINUX=disabled
sudo rpm -qa | grep firewalld
: 아무것도 안나온다. 방화벽이 설치되어있지 않다.sudo systemctl enable --now httpd
: http실행, 및 웹 접속이 가능한지 보기
- 접속이 가능하다.!