관리 메뉴

공부공부 공부공부내용

[3] open stack 인스턴스 운영개념 본문

클라우드 구성 및 관리/프라이빗 클라우드 [오픈스택]

[3] open stack 인스턴스 운영개념

wkdth04 2020. 6. 29. 17:19
[실습1]

<os-controller>   _  컨트롤러
CPU: 4 (V Copy Host)   copy host cpu configuration 체크 (적용)
Memory: 8192
NIC2 추가: internal (Device Type: virtio)

  -네트워크 카드 하나 추가  (기존 nat의 default하나 추가로 internal 하나)
br-ex: 192.168.122.10
eth1: 192.168.123.10

<os-compute>  _컴퓨트
CPU: 4 (V Copy Host)  copy host cpu configuration 체크 (적용)
Memory: 4096
NIC2 추가: internal (Device Type: virtio) 

   -네트워크 카드 하나 추가  (기존 nat의 default하나 추가로 internal 하나)
eth0: 192.168.122.11
eth1: 192.168.123.11

root/toor

http://192.168.122.10
ID: admin
PWD: cat ~/keystonerc_admin 

[실습2]

<OpenStack Administrator>
Project: test-proj

Account: test-user (test-proj)

Flavor: test.tiny (vCPU:1, Mem: 256M, Root Disk: 1G)

Network(External): ext-net (Type: Flat, Name: extnet)
    # grep PHYSNET answers.txt 
        CONFIG_NEUTRON_OVS_EXTERNAL_PHYSNET=extnet
    Subnet: ext-subnet (192.168.122.0/24, 192.168.122.1)
        DHCP X
        Pool: 192.168.122.100,192.168.122.199
        DNS: 8.8.8.8
    
<User (Self Service)>
Image: cirros

Network(Internal): test-net
    Subnet: test-subnet (172.16.0.0/24)

Router: test-router (ext-net <--> test-net)

Security Group: SSH&ICMP&HTTP

Keypair: test-key

Instance: test-instance

Volume: test-vol (1G)

Floating IP

실습내용 구성하다보면 필요한 개념들 아래.


[1] admiin 계정 로그인

관리자 계정 사용자 이름은 admin

패스워드는 응답파일에서 지정한 패스워드 입력 후 로그인한다.

만약 패스워드를 모르거나 설정하지 않았다면 

/root/answer.txt 파일의 CONFIG_KEYSTONE_ADMIN_PW 항목을 확인하거나 /root/keystonerc_admin OS_PASSWORD 항목을 확인한다.

/root/keystonerc_admin 파일은 packstack 으로 설치 완료시 자동으로 생성되는 자격증명 파일이다.

 

 

 

[2]프로젝트 project  (=Tenant)

사용자가 리소스를 사용할 수 있는 범위이다.

최초 설치 시에는 두개의 프로젝트가 기본적으로 생성이 되는데 admin 프로젝트는 admin사용자가 속한 프로젝트이고 services 프로젝트는 오픈스택의 서비스 사용자가 속한 프로젝트이다.

설치 직후 기존에 지정된 계정들은 대부분 시스템 계정이다.

기업별로 만들수도 있고, 부서별로, 팀별로 묶어 만들수도 있으며 , 개인마다 각 계정마다 프로젝트를 부여할 수 도 있다. 논리적이기 때문에 프로젝트를 어떤 범위로 정할건지는 정할 수 가 있다.   (논리적으로 분리시키는 역할을 한다)

 

 

 

 

 

 

 

 

 

프로젝트 생성할 때 사용자를 지정해서 생성할 수 있다.

 

 

 

 

프로젝트 생성 할 때나 생성한 이후에도 이 작업이 가능하다.

 

 

 

 

사용자를 지정할 때는 반드시 역할 지정을 해줘야한다.

**

Project (=Tenant): Quota
User <---Role---> Project
Role: _member_, admin(Openstack Whole)

1)admin   (admin 이라는 프로젝트에 admin 역할이 부여되어있는 것을 확인할 수 있음)

2) _member_ or member

주의해야할 부분은 관리자는 모든 리소스의 관리자이지 프로젝트의 관리자라는 개념이 없다.

프로젝트에서의 admin은 어느특정 프로젝트의 관리자 역할을 하는 것이라고 착각할 수 있지만, 그게 아니라 모든 프로젝트에서 관리자 역할(생성, 삭제 등) 이 가능하다. 관리자계정에서의 관리탭에서의 리소스들은 각각의 프로젝트를 선택할 수 있는 부분도 참고. 관리자는 전체 관리를 할수있는 권한을 가진 최상의 권한을 가지고 있어서 실제로 이 프로젝트를 생성하는 단계에서 관리자로 역할을 부여할 일은 없다. 대부분 member로 선택

 

Quota (할당량) 관리->시스템->기본 에서도 확인 가능하다. 이 쿼터는 예를 들어 flating IP  할당에서 오른쪽 하단에 Quotas 라는 부분에서 어떻게 쓰이는지 확인해볼 수도 있는데 , 남은 양이 보이게 되는 이 부분을 초기에 셋팅할 수 있는 것이다. (교재 80p그림)

총량의 제한을 둘 수 있다.

 

도메인 아이디나 도메인 이름은 LDAP계정이 설정되어 있어야 활성화가 되는데 현재 실습에서는 LDAP 이 설정되어있지 않기 때문에 유효하지 않다.

 

 

 

 

총정리
Project (=Tenant): Quota
User <---Role---> Project
Role: _member_, admin(Openstack Whole)

Flavor: Root/Ephe/Swap <-- Nova

Image: Min RAM/Disk ( ==> Flavor )


Network - Subnet - Detail (DHCP O - Pool: DHCP 임대범위, DHCP X - Pool F-IP)
    Mgmt, Tunnel, External(Internet), Storage
dhcp 사용하는 경우에 pool = > 임대범위가 되고
dhcp 사용하지 않 경우에 pool = 플로팅 아이피의 범위가된다. ***
Mgmt , Tunnel, External(Internet) ,stroage

Security Group : Remote Security Group
ingress 출발지
egress 목적지 _ 

인스턴스
-pause
-suspend
-shelve
-snapshot => image 화가 된다
-Lock instance  : 만든사용자 외에는 동일 프로젝트를 하는 사용자이더라도 설정변경이나 삭제가 불가능하게 Locking하는 형태


볼륨 Volume: Blank, Image => New Volume
-빈 볼륨을 만들수도
-이미지를 통해서 새 볼륨을 만들수도 있다.

클라우드는 기본적으로 stateless 상태로 작동을하고 볼륨을 만들어서 필요한 경우 상태를 저장하는 형식이다.

 

 

 

 

[3] 사용자생성

어렵지않으니 생략

 

 

 

 

 

 

 

 

 

프로젝트 그룹은 프로젝트의 하위개념으로 조직구성단위에 필요한 기능이다.

사용자는 여러 프로젝트들에 각각 속할 수 도 있다.

 


[4] Flavor 관리 (관리자만 생스성가능)

Flavor는 인스턴스를 생성할 때 인스턴스를 사용할 하드웨어의 사이즈를 정의해 놓은 프로파일이다. Flavor를 관리하고 처리하는 것은 nova가 담당한다.

flavor 에서의 장치들은 원격이던 로컬이던 모두 블록장치이다.

nova가 제공하는 블록장치로 cinder하고는 관련이 없다.

기본적으로는 5개의 Flavor가 만들어져 있고, 필요에 따라 추가적으로 생성하거나 편집할 수 있다.

미리 Cpu양을 지정해놓는 용도로 쓰인다.

*VCPUs 는 인스턴스에 할당할 VCPU개수 (참고:  virtual cpu 로 실제 cpu와 매칭된다고 할 수는 없음. 물리적제한은 물론 있지만 가상에서는 조금 더 할당이 가능할 수 있다. 이는 overcommit 이라는 개념으로 필요에 따라 온오프가 가능하기도 하다.  비슷한 예시로 _ 디스크 사용했을 때 thin 프로비저닝에서 실제 물리적 용량보다 더 크게 지정했던 것처럼 ) , RAM은 인스턴스에 할당할 메모리

 

※CPU Pinning - 전용으로 사용하는 경우

CPU pinning은 시스템 전반의 효율화를 위해 만들어진 스케줄러의 빈틈을 노리는 것이기 때문에 다른 프로세스들은 모든 코어에서 정상적으로 돌고 있는 환경에서 효과를 극대화 할 수 있다. 그래서 일반적인 소프트웨어에서는 사용하지 않고 여러 개의 Virtual Machine이 동작하는 환경에서 VM의 성능을 조정할 때 주로 이용된다.

 

 

 

 

 

 

- Flavor 는 nova 가 관리하며 flavor 안의 항목인 Root디스크와 /Ephemeral 디스크 /Swap 디스크도 당연히 Nova가 관리한다.

-Ephemeral은 빈디스크를 제공하는 역할을 한다.

-Flavor는 DB나 데이터 스토리지로 활용할 수도 있지만 데이터를 영구적으로 저장해주지는 않는다. 

-RX/TX항목은 Root디스크와 swap 디스크 성능을 제어하는 역할을 한다.

-공용(public) 항목은 다른 프로젝트에서도 사용할 수 있도록 sharing 기능을 설정할 수 있는 항목이다.

 

 

 

 

 

 

 

 

 

[5]이미지 생성

인스턴스를 생성하기 위해서는 꼭 이미지가 있어야한다.  또 이미지가 없으면 볼륨, 네트워크 등 리소스들을 활용할 수 없다.

http://docs.openstack.org/image-guide/obtain-images.html 에서 다운받을 수 있는데 여러 운영체제 설치 경로가 있는 각 벤더들의 경로가 모아져있는 주소이다. 이곳의 이미지들은 씰링작업이 다 끝난 이미지다.

 

 

 

 

 

-OVA (Vm  표준 포맷)

 

 

 

 

 

 

-커널 항목은 포멧에서 아마존 형식을 클릭하면 활성화가 된다. 아마존 이미지에서만 사용하는 기능이다.

-아키텍쳐 는 만약 cpu 노드가 여러개가 존재할 경우, (x86 일수도있고  AMD일 수도있고 등등이 존재할 수도 있다) 해당 cpu노드를 지정할 수 있다.

- 최소 디스크와 최소 RAM 부분에서는 Flavor에 제한을 줄 수가 있다.

flavor 와 상호작용하는 항목으로 만약 예를 들어서, Root 디스크 사이즈를 여기서 지정해주면  Flavor에 제한이 걸리게 된다는 것. 만약 제한을 줄 것이라면 꼭 필요한 최소 디스크를 확인 후 지정해야한다.

  /var/lib/libvirt/images 에서 ls를 통해 여러 이미지 파일들을 확인할 수 있는데, qemu-img -> info 를 토해 실제 정보를 확인하고 이후에 최소디스크와 램을 설정해주어야한다.

-이미지 공유에서 가시성은 다른 프로젝트에서도 이 해당 이미지를 확인하고 사용할 수 있도록 할 때 공용으로 설정하는 기능을 가지고 있다. 관리자 역할을 가지고 있는 사용자만이 설정할 수 있다.

반대로 사설을 선택하게 되면 해당 사용자의 프로젝트 내에서만 사용할 수 있는 이미지가된다.

-보호됨 항목은 다른사람이 지울 수 없도록 설정할 수 있는 기능을 가지고 있다. '예' 를 선택하게 되면 꼭 관리자만이 지울 수 있다.

 

사실 클라우드는 이미지를 직접올릴 수는 없는 구조로 되어있다.

 

[6] 외부 네트워크 생성 (관리자만 가능)

Network - Subnet - Detail (DHCP O - Pool: DHCP 임대범위, DHCP X - Pool F-IP)
    Mgmt, Tunnel, External(Internet), Storage
dhcp 사용하는 경우에 pool = > DHCP 임대범위가 되고
dhcp 사용하지 않 경우에 pool = 플로팅 아이피의 범위가된다. ***

네트워크 생성경로는 두개인데 각각 의미가 다르다. **

경로) 프로젝트 /네트워크/ 네트워크 = > 내부용 네트워크생성

관리자만 할수있는 메뉴인  관리  경로) /네트워크/네트워크 = >    외부용 네트워크생성  

현재는 외부용 네트워크를 생성하는 작업.

인스턴스가 사용할 내부 네트워크는 어떤 사용자나 만들어서 사용할 수 있지만, 외부네트워크는 관리자만 설정할 수 있다.

외부네트워크는 실제 외부로 연결되는 네트워크 대역으로 설정해야 하며, 이 외부 네트워크는 나중에 유동  IP생성에 사용될 네트워크다.

 

-공급자 네트워크유형 (Provider Network) -> 클라우드를 제공해주는 회사 혹은 오픈스택 서비스를 제공해주는 회사가 이 항목을 설정하게 된다.

공급자 네트워크유형에는 여러가지가 있는데, 이 중에서 GRE, VXLAN, Geneve는 터널링 프로토콜로서 외부용 네트워크를 생성하는 작업에서는 보통 공급자 네트워크 유형에 이 세가지를 선택하지는 않는다. 

만약 일반사용자가 내부용 네트워크를 생성하게 되면 무조건 VXLAN으로 생성된다.

목록중 VLAN은 터널링 프로토콜이 아니다** (VLAN기능 이후 다시 설명)

결론으로 외부용 네트워크는 Flat(평면네트워크, L2 네트워크)으로 설정하게 된다.

 

-물리적인 네트워크

외부용 네트워크 노드가 여러개가 존재할 수도 있다. 그럴 경우에 각각의 네트워크에 이름을 부여해서 해당 네트워크를 선택하게 하는 항목인 셈이다.

 

 

 

 

 

 

 

 

네트워크 활성화를 위해 외부네트워크 체크를 꼭 해준다.

 

 

 

 

 

 

 

 

-외부 네트워크를 생성하는 작업ㅇ서는 DHCP 기능을 사용하지 않는다.

pool 할당은 -> floating  ip (유동IP) 범위를 지정하는 것을 의미하는데, 현재 실습환경에서 게이트웨이로 사용하고 있는 192.168.122.1 

(위에서 바로 말한 것처럼 dhcp 사용하는 경우에 pool = > 임대범위가 되고 dhcp 사용하지 않 경우에 pool = 플로팅 아이피의 범위가된다. ***)

그리고 컴퓨트 컨트롤러 각각 192.168.122.10    192.168.122.11  을 사용하고 있어서 충돌이 일어나는 것을 방지하기 위해 안정적인 범위를 지정해주는 것이다. 그래서 아에 해당하지 않는  192.168.122.100,192.168.122.199 대역으로 범위를 정했다(이 범위는 공인 IP범위가 된다) .

-DNS 네임서버에서 8.8.8.8 를 할당해주었고 이는 위 범위에서 지정된 IP와 함께 DHCP프로토콜에 같이 얹혀서 전달된다.

-호스트 경로는 라우팅 테이블을 의미하는데 생략한다.

 

 

기존 실습에서 생성해둔 ext-net 외부네트워크 확인됨

 

 

기존 실습에서 생성해둔 ext-net 외부네트워크 확인됨 3

 

 

-외부 항목이 아니오라고 되어있는 것을 확인할 수 있다. 실제 vm이 인터넷과 연결되기 위한 외부네트워크임이 표시되어있다.

 

※네트워크를 삭제할 때에는 라우터를 먼저 삭제해야 가능하다.

라우터에서 게이트웨이를 먼저 삭제하고 (외부네트워크와의 연결을 끊는다) 이후에 인터페이스를 삭제한 다음 네트워크를 삭제한다

 

 

 

[7]  라우터 와 플로팅 IP (유동IP)

 

 

 

 

 

 

내부용 네트워크는 DHCP에 의해 자동으로 할당되어 얼마든지 바뀔 수가 있다. 그래서 유동아이피를 라우터에 할당해주어야 한다.

 

[8] 보안그룹생성 *원격보안그룹 이해하기

Security Group : Remote Security Group
ingress 출발지
egress 목적지 


- 보안그룹도 하이퍼바이저(nova)가 관리한다.

- 보안그룹항목은 오픈스택에서 관리하는 방화벽을 의미한다.(서비스시 커맨드로 firewall-cmd 작업이 필요없는 이유)

어떤 IP를 가진 사용자가 자신이 생성한 인스턴스에 접속할 수 있고 인스턴스에서 실행되는 서비스에 접근할 수 있는지 룰을 설정하는 기능을 한다.

 

-내보냄(Egress)는 전체 포트가 허용이 되어있지만, 들어오는 들어옴(Ingress)는 포트별로 직접 허용을 해줘야 한다.

이 의미를 아웃바운드 정책은 IPv4/IPv6 는 모두 허용되어있지만 인바운드 정책은 필요시 기존규칙에 규칙 추가 및 삭제를 해야한다.

실습에서는 SSH (20번포트) HTTP (80번포트) 를 허용하는 규칙을 추가했다.  

외부에서 인스턴스로  ping테스트를 하기 위해서는 ICMP프로토콜이 필요하기 때문에  ICMP 프로토콜도 추가해준다. default 그룹에 이 세가지 프로토콜을 추가해준다.

명령어로 추가하게 되면 root@controller창에서 #openstack security group rule create --proto icmp default 쳐주면 됨.

 

-이 기능은 출발지에 따라서 네트워크를 격리하는 효과를 가져온다. 다시말해서, 클라우드환경에서는 여러 가상의 네트워크를 생성할 수 있고, 각기능과 용도에 따라 네트워크를 분류할 때  이렇게 원격보안그룹을 지정해놓으면 지정해놓은 그룹만이 시스템에 접근할 수 있도록 설정하는 역할을 하는 것이다.

 

-하나이상의 보안그룹생성이 가능하기 때문에 실습에서는 ssh icmp http 묶어서 했지만 기능별로 보안그룹을 나누는것이 더좋다.

클라우드 환경에서도 똑같이 존재한다.

 

 

 

 

-꼭 네트워크를 분류하지 않더라도 특정 출발지에 대한 제어가 가능하기 때문에 이 보안그룹을 활용하면 유용하다.(논리적으로 네트워크를 격리시키는 것이 가능하다)

 

-원격보안그룹으로 설정된 시스템만 해당 가상머신에 들어올 수 있도록 접근 설정을 하는 것.

 

 

(필기 그림 첨부)

원격 IP접두사

원격보안그룹 

 

 

 

ipv4 ipv6 전체 가능하게 되어있다.

 

 

[8]키페어

-키기반 인증과 패스워드인증중 키기반이 더 우선순위가 높다.

-cloud config설정이 가능함.

 

[키기반인증]

-모든 키는 처음에 없다. 부팅을 할 때 자동으로 생성이 된다. 즉, 가상머신을 새로 만들 때마다 키가 달라진다.
- PKI 구조가 아니기 때문에 인증을 제 3자가 해줄 수 없으므로 우리가 해야한다.

server - /etc/ssh/ 아래에 키 파일이 있다.
ssh-keygen
~/.ssh/id_rsa --------------> ~/.ssh/authorized_keys  (클라이언트의공개 키가 저장되어있는 파일)

~/.ssh/id_rsa 파일이 없으면 반드시 
ssh 접속시 -i 옵션을 지정해줘야함. 기본위치가 아니면 어디에 있는지 모르기 때문에 -i옵션을 줘야한다는 것.

id 가 안붙어있는 파일이라면 위치를 알 수없음.
실제 서버의 공개키와 클라이언트 공개키를 비교해야하기 때문에 사용한다.
맞으면 인증이되고 틀리면 인증이 되지 않는 것.


-클라우드는 이러한 기능이 없어서 이 역할을 클라우드 이닛이 하는데 클라우드 init에 의해서   ~/.ssh/authorized.keys 파일에 퍼블릭 키가 등록이 되어있다.

-.pem  -> private key 파일이다. 생성할 때 한번만 다운받을 수 있다.

-키는 교체가 되지 않음. 보안상 안전하지 않기 때문에 교체기능을 제공하지 않는다.


키를 다운받으면 권한이 일반적으로 664 이기 때문에 600으로 권한 설정해준다


[패스워드인증]
shinjaehun@losttemple:~$ ssh administrator@192.168.122.201
The authenticity of host '192.168.122.201 (192.168.122.201)' can't be
established.
ECDSA key fingerprint is
d9:ca:30:2b:6c:80:7a:41:ac:07:7e:ec:f2:ec:af:57.
Are you sure you want to continue connecting (yes/no)? 

fingerprint -> 키의 해쉬값 ?  , 지문을 의미
yes -> 서버의 공개키가 맞다고 하는 것.
        그럼 이 공개키가 ~/ssh/known_hosts 에 저장이된다.
        그래서 재 접속시 다시 안묻는 것. 이후 나중에 같은 네트워크대역으로 이 지문이 안맞게 접속하면 충돌이 나는 것

 

 

키 오류
warnning  : remote host identification has changed!
-> 이전에 접속한 키와 현재 접속한 키의 충돌문제가 발생. 오류게시물 참고

wkdthvkf1004.tistory.com/50

 

 

 

 

프라이빗 키는 따로 저장해야하고 한번만 저장이 가능하다!

 

 

 

 

test-key 생성

 

인스턴스 시작 , 생성

 

네트워크의 플로팅아이피할당 ->> 인스턴스 연결

 

볼륨  test-vol1 1기가  ->> 인스턴스에 연결

 

 

우분투 핑 확인

$ ping 192.168.122.123  -c4

$ ssh -i test-key.pem cirros@192.168.122.123    // 키를 가지고 인증을 할때

이렇게 접속하면 too open 경고 문구 뜬다.   프라이빗 키기 때문에 본인만 접속이 가능하기 때문에 보안 관련해서 오류가 발생하는 것.

$ chmod 600 test-key.pem    //해주고 해야함.

다시 $ ssh -i test-key.pem cirros@192.168.122.123    접속

$cat web.sh
while true;
do
	echo -e "HTTP/1.1 200 OK\n\n HELLO WORLD" | nc -l -p 80;
done
sudo sh web.sh    
// 80 번 포트열어두었던 것 확인하려고!  ssh 접속은 이미 ssh 창 접속되어서 가능한 것을 알 수 있었다.

 

간단하게 확인할 때 curl 쓰거나 웹 들어가서 확인해보기  192.168.122.123

우분투 창에서 curl기능 없으면 설치 sudo apt install curl

우분투 $ curl 192.168.122.123

 

 

[9] 인스턴스

-pause
-suspend
-shelve
-snapshot => image 화가 된다
-Lock instance  : 만든사용자 외에는 동일 프로젝트를 하는 사용자이더라도 설정변경이나 삭제가 불가능하게 Locking하는 형태

 

 

기능  (빨간색 항목들은 모두 꺼졌다가 다시켜진다. 재부팅이 이루어진다는 뜻) , 정지와 일시중단의 차이를 이해하기

- 스냅샷생성

      -부팅 상태에서 스냅샷을 찍으면 파일이 깨질수도 있으니 반드시 끄고 진행해야한다.

      - 이미지와 스냅샷은 거의 같은 것이라고 볼 수가 있다. 왜냐하면 스냅샷한 이미지에서 씰링 작업을 거치면 배포가능한 최종 이미지 가 되기 때문이다. 결국 같은 이미지인 셈이다.

 

인스턴스 정지와 일시중단 모두 시스템을 처음부터 부팅시키지는 않는다.

-  인스턴스 정지(pause)

윈도우의 절전같은. 현재 실행중인 프로세스는 메모리에 저장이되는데 절전을 하게되면 이 메모리에 전력이 올라간다. 데이터도 이 메모리에 저장이되고 있는 상태

 

인스턴스 일시중단 (suspend) (시스템이 있는 상태 그대로 일시중지) 

- 메모리에 전력을 주지않는것이 가장 큰 차이. ( 전력을 주지 않으면 데이터는 손실이 된다.)

- 메모리에 있는 데이터를 디스크 어딘가에 저장이 되어야 다시 메모리에 올릴 수 있고 복원이 가능하기 때문.

-  윈도우의 최대절전과 같이 생각하면 된다. 

- 리소스를 모두 해제.  그래서 부팅시간이 더 오래걸린다.

- 물리 메모리에 있는 내용들을 디스크에 떨군다. 다른 누군가가 그 키만큼 사용할 수 있다.

 

-shelve

- 디스크 중지나 실행을 할 때, nova에서 디스크 작업중일 경우에 이 shelve를 하게 되면, 관련 디스크 파일이나 리소스 정보들이 glans로간다.

- vm을 쉼터에 가져다 놓는 개념과 같다. 다른곳에 일시보관해놓는 것.이미지 저장소.

- 지금은 필요없는데 삭제는 하기싫은 경우 이 shelve사용

-shelve를 해제하면 glance -> nova 로 가져오게 된다.

 

-인스턴스  잠금 lock

같은 프로젝트의 사용자들은 인스턴스를 삭제, 수정할 수 있지만 Lock을 걸어놓으면 해당 인스턴스를 생성한 사용자만 삭제 및 수정이 가능하다.

-우발적 작업을 방지한다.

 

 

- 소프트 리부트 & 하드리부트

쓰기작업중 하드리부트를 하게되면 파일이 깨지고 부팅오류가 날 수도있으니 주의

소프트리부트는 안전적으로 정상종료를 하게됨. (재부팅시 최악의상황이아니면 하드리부트하면 안되고 소프트리부트할것)

하드리부트는 kvm  의 force off같은  것. 소프트 리부트가 kvm 의 그냥 reboot

 

-rebuild

삭제하고 새로 만드는 것과 같음. 처음상태로 리셋하는 것.

 

 

 

부팅소스에서 미리 만들어놓은 스냅샷이 있으면 스냅샷 이미지 인스턴스도 생성이 가능하다.

만약 부팅 소스에서 볼륨을 선택하게 되면 , 볼륨을 가지고도 인스턴스를 생성할 수 있다는 것. 어떻게? 

이전에 새로운볼륨생성을 통해 만들어진 볼륨이 있을경우 사용이 된다.

왜냐면 노바가 제공하는 블록장치인 flavor 는 인스턴스를 지우면 같이 지워지는데 새로운 볼륨생성을 선택 하게되면 새로운 cinder볼륨을만들어서 이미지로부터 데이터를 복제한다.

그렇게 되면 인스턴스를 지워도 남아있는데 안남아있도록 하거나 남아있도록 하거나 그 설정도 위의 '인스턴스 삭제시 볼륨삭제 ' 항목에서 선택을 할 수 있다.



부팅소스 선택
전에 찍어놓은 스냅샷을 쓸 수 있다
볼륨으로 만들 수 있다. 볼륨스 생성 → 볼륨 소스 → 볼륨에 있는 데이터는 이미지에서 복사해서 사용. volume = cinder가 제공하는 블록장치

새로운 볼륨생성 → 예 → 인스턴스 삭제시 볼륨 삭제 → 아니오 → 인스턴스를 지워도 볼륨이 삭제가 안된다. object가 다르기 때문에. 나중에 누군가 이 볼륨을 이용해서 부팅시 사용할 수 있다.

 

 

 

 

[10] 볼륨

볼륨 Volume: Blank, Image => New Volume
-빈 볼륨을 만들수도
-이미지를 통해서 새 볼륨을 만들수도 있다.
클라우드는 기본적으로 stateless 상태로 작동을하고 볼륨을 만들어서 필요한 경우 상태를 저장하는 형식이다.

 

블록장치는 sharing이 안된다.
특정 이미지로 볼륨을 만들 수 있다.
상태를 저장하기 위해 volume을 사용한다. → 일반적으로 stateless로 시작되기 때문에

 

스냅샷
찍고 볼륨 생성을 해야 사용할 수 있다. 그대로 쓸 수 없다.
마운트를 했었을 때는 umount로 해야 깨지지않는다.

이전 시작(transfer)
다른 프로젝트에서 볼륨 이전받기를 하여 사용할 수 있다. → id, key 필요
특정 볼륨을 다른 프로젝트로 넘기고 싶을 때 사용.

 

 

 

 

이어서

오브젝트 스토리지..

heat,,,

 

 


총정리
Project (=Tenant): Quota
User <---Role---> Project
Role: _member_, admin(Openstack Whole)

Flavor: Root/Ephe/Swap <-- Nova

Image: Min RAM/Disk ( ==> Flavor )


Network - Subnet - Detail (DHCP O - Pool: DHCP 임대범위, DHCP X - Pool F-IP)
    Mgmt, Tunnel, External(Internet), Storage
dhcp 사용하는 경우에 pool = > 임대범위가 되고
dhcp 사용하지 않 경우에 pool = 플로팅 아이피의 범위가된다. ***
	Mgmt , Tunnel, External(Internet) ,stroage

Security Group : Remote Security Group
ingress 출발지
egress 목적지 _ 

인스턴스
-pause
-suspend
-shelve
-snapshot => image 화가 된다
-Lock instance  : 만든사용자 외에는 동일 프로젝트를 하는 사용자이더라도 설정변경이나 삭제가 불가능하게 Locking하는 형태


볼륨 Volume: Blank, Image => New Volume
-빈 볼륨을 만들수도
-이미지를 통해서 새 볼륨을 만들수도 있다.

클라우드는 기본적으로 stateless 상태로 작동을하고 볼륨을 만들어서 필요한 경우 상태를 저장하는 형식이다.