220504

HyeonKi Jo·2022년 5월 4일
0
post-thumbnail

IP

  • 네트워크가 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)


교재

코어서비스(+ Swift)

  • 코어서비스는 없으면 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) 파일공유 서비스이다. 필수 코어서비스는 아니지만 자주 쓰이며 중요하다고 할 수 있다.

5 core service

    1. Compute Service(CPU, RAM) : Nova, AWS(EC2)
    1. (Block)Storage Service(SSD, HDD) : Cinder(Block storage), AWS(EBS, Elastic Block storage)
    1. Network Service(G/W, S/W) : Neutron, AWS(VPC)
    1. Image Service(OS) : Glance, AWS(AMI)
    1. Identify Service(AUTH, keypair) : KeyStone, AWS(IAM)
    1. Orchestration Service(IaC) : Heat, AWS(CloudFormation)

구성요소 (서비스)

  • 클라우드 운영체제라고도 하는 Openstack프로젝트는 여러 다른 프로젝트로 구성된다. OpenStack설치 시 여러 프로젝트 중 일부만 포함 할 수 있다.

OpenStack Compute (Nova)

  • 모든 클러스터 노드 컴퓨터(서버)에 설치된다. 노드안에는 VM들이 여러개가 존재하고 있다가, 한 컴퓨터가 다운되더라고, 다른 VM들이 역할을 맡아, 어떻게든 서비스를 유지할 수 있도록 한다.
    • 클러스터는 여러 컴퓨터를 하나처럼 사용할 수 있게 묶어놓은 시스템이다.
    • 우리는 현재 하나의 컴퓨터에 모든 VM을 연결하지만, 실무에서는 말도안되는 상황이다. 하나의 컴퓨터가 다운되면 모든게 다운되기 때문이다.
    • 실무에서는 최소 2개, 보통 3개 이상의 컴퓨터를 연결하여 클러스터를 구성한다.
  • 인스턴스 (VM, 프로세서, 메모리, 블록장치, 네트워크)의 추상화 수준을 관리한다.
    - 인스턴스 : 전통적인 서버와는 다르게 인스턴트식품처럼 빠르고 간단하게 설정하고 버릴 수 있는 서버
  • 또, 하이퍼바이저(KVM)을 통해 인스턴스(VM)의 라이프사이클을 관리한다.

OpenStack Networking(Neutron)

  • 네트워크 연결을 담당하는 서비스
  • 사용자는 가상 네트워크, 가상 라우터를 생성하고 floating IP(공인IP, AWS(EIP)) 기능을 통해 IP주소를 설정할 수 있다. 또, 네트워크 부하분산 서비스(HAproxy와 매우 유사), 방화벽, VPN등의 기능을 모듈로 설치하여 이용할 수 있다.

옵셔널 서비스(With out Swift)

  • Horizon은 WEB UI를 제공하는 서비스이다.
  • Heat는 IaC (Infrasturcture as Code)를 제공하는 서비스이다.

Object file share

  • 링크주소로 파일을 다운로드 받을 수 있는 파일공유 시스템

Openstack 가상화


  • extnet은 VM이 봤을때, 가장 밖에 있는 랜카드로 보인다.

Openstack 구축

VMware









CentOS 설치



  • MANUAL PARTITION을 진행한다.




  • 이 설정 후, Begin Installation 진행한다.

CentOS 설정

설명

  • 이후 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 사용하기

Openstack 사이트 살펴보기

  • 설치가 완료되었다면, 웹 브라우져에서 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을 보내봐서 잘 보내진다면 성공이다.

OpenStack Template

flavor

  • EC2 인스턴스를 생성할때 많이 본것같은 페이지이다.
  • Ephemeral Disk : 임시디스크, 빠르다. 그러나 VM이 지워지면 같이 지워진다. 클라우드기술 초기에는 데이터베이스가 아닌, 웹서버만 이용했었고, 영구적 데이터 저장이 필요 없을거라 생각했었다.
  • Root Disk : 영구적인 볼륨, VM이 지워질 때 데이터가 남아있다.
  • AWS에서 볼 수 있는, Micronano사이즈가 없다.
    - 그래서 생성해보도록 하겠다.
    - 이 생성은 관리자의 권한이다.
  • 이름을 다른 flavor와 유사하게 m1.micro로 적용
  • ID는 auto로 다른 flavor와 겹치지 않게 한다.
  • VCPUs : 1
  • RAM : 1024 Mb
  • Root 디스크 10(Gb) (CINDER)

Images

  • Openstack에서 Image를 올려서 사용할 수 있도록 한다.
  • Openstack에서 사용할 수 있는 qcow2 포멧을 사용하도록 하겠다.

Keypair 생성

  • 키 페어 생성
    - 이름 : 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)를 들어옴으로 추가해준다.

Floating IP

  • 공인IP를 가지고 있다면 여기서 관리를 할 수 있다.

  • 아직 VM이 생성되지 않았으니 ping이 나가지는 않는다.

인스턴스 시작 (launch == Create)





  • WEB01이기 떄문에, EXTERNAL을 올리면 안된다.
  • 또, 이미 EXTERNAL에 IP주소를 부여했기 때문에 나중에 연결하면 되는 것이다.
  • default는 사용하지 않기 때문에 내려주고, SG-WEB을 올려줘야 한다.


  • 조금 대기 후, Runnung인지 확인
  • 콘솔로 화면이 잘 출력되는지 확인
  • IP주소중 가장 빠른 번호로 IP를 부여해본다.

  • 핑이 나가는 것 까지 확인할 수 있다.
  • MobaXterm에서 작동되는지 확인해본다.
    - 접근시 계정명을 centos 로 해준다.
  • IP주소로 잘 접속된다.
  • 1:1 NAT (Floating IP와 Private(Internal)su IP를 연결한다.)

인스턴스 웹서버 만들기

  • 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실행, 및 웹 접속이 가능한지 보기
  • 접속이 가능하다.!
profile
Talking Potato

0개의 댓글