brunch

You can make anything
by writing

C.S.Lewis

by 가필드의 인사이트 Apr 24. 2019

오픈스택

CCCR

메모리 16GB이상

오토스케일링 필수 요소: 로드밸런서, 텔레메트리, 오케스트레이션


PackStack vs. DevStack

https://zetawiki.com/wiki/%ED%8C%A9%EC%8A%A4%ED%83%9D_Packstack 


VirtualBox

https://namu.wiki/w/VirtualBox


[HOL]

http://bit.ly/2GzxCBi 


1. Virtual Box 설치

2. Hypervisor = VMM(Virtual Machine Monitor)

3. Type1 HV = Native(Bare-Metal) vs. Type2 HV = Hosted





[VirtualBox 실행]

1. ProgramFiles\Oracle\VirtualBox

2. VM실행시 오류가 나면 재설치


# systemctl stop NetworkManager firewalld

# systemctl disable NetworkManager firewalld


# hostname   set-hostname controller.cccr.co.kr


[Compute1 VM에도 설정]

컨트롤러 VM에 host설정후 컴퓨트VM으로 복사




PackStack설치

# yum -y install openstack-packstack (캡처 빠짐)



#!/bin/bash yum -y install centos-release-openstack-rocky

yum -y install openstack-packstack packstack --gen-answer-file /root/answers.txt


sed -i 's/CONFIG_DEFAULT_PASSWORD=.*/CONFIG_DEFAULT_PASSWORD=dkagh1\./' /root/answers.txt

sed -i 's/CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=dkagh1\./' /root/answers.txt

sed -i 's/CONFIG_HEAT_INSTALL=.*/CONFIG_HEAT_INSTALL=y/' /root/answers.txt

sed -i 's/CONFIG_PANKO_INSTALL=.*/CONFIG_PANKO_INSTALL=y/' /root/answers.txt

sed -i 's/CONFIG_NTP_SERVERS=.*/CONFIG_NTP_SERVERS=kr\.pool\.ntp\.org/' /root/answers.txt

sed -i 's/CONFIG_COMPUTE_HOSTS=.*/CONFIG_COMPUTE_HOSTS=172.25.100.11/' /root/answers.txt

sed -i 's/CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=dkagh1\./' /root/answers.txt

sed -i 's/CONFIG_LBAAS_INSTALL=.*/CONFIG_LBAAS_INSTALL=y/' /root/answers.txt

sed -i 's/CONFIG_NEUTRON_OVS_BRIDGE_IFACES=.*/CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:enp0s3/' /root/answers.txt

sed -i 's/CONFIG_NEUTRON_OVS_TUNNEL_IF=.*/CONFIG_NEUTRON_OVS_TUNNEL_IF=enp0s8/' /root/answers.txt

sed -i 's/CONFIG_PROVISION_DEMO=.*/CONFIG_PROVISION_DEMO=n/' /root/answers.txt


# packstack --answer-file /root/answers.txt



성능체크

로드값 1.18~2.18 의 코스수로 나누면 대략 1.0  -> 100% 사용중이라는 뜻?



admin 로그인이 안됨 ㅠㅠ

(1)VM이미지를 import 하고

(2) openstack 유틸 설치 (콘트롤러, 컴퓨트)

     # yum -y install openstack-utils

     # ssh comput1 yum -y install openstack-utils(콘트롤러 VM에서)

(3) openstack 서비스 재기동 (콘트롤러, 컴퓨트)

    # openstack-service restart

    # ssh comput1 yum -y install openstack-utils(콘트롤러 VM에서)

(4) horison  config파일 열러서 서버주소 변경

    # cd /etc/httpd/conf.d

    #ls vi 15-horizon_vhost.conf

           172.xxx.xxx.xx -> 192.168.56.10

  (5) 웹서버 데몬 재기동

    # service  httpd restart





대시보드(Horison)

-----admin 역할 필요 -----

1. 프로젝트 생성

2. 사용자 생성(역할 지정)

3. 플레이버(Flavor) 생성

4. 외부네트워크 생성

-----_member 역할 사용-----

5.내부네트워크 생성

6.라우터 생성

7.이미지 생성

8.보안그룹 생성

9.키페어 생성

10. 인스턴스(VM) 생성

11. 유동IP생성

12.볼륨생성 => 연결

  12-1.볼륨스냅샷

  12-2.볼륨루트디스크

13.오브젝트 스토리지



프로젝트(테넌트) 생성



외부네트워크 생성

1. 외부 네트워크(Provider네트워크)에 반드시 체크해야 함

2. GRE는 10억개, VXLan은 1600만개 정도 커버

   - NOVA는 4900개 정도 커버 -> 그래서 NEUTRON 프로젝트가 나옴

3.



[내부 네트워크]

대시보드 testuser로 로그인



서브넷

서브넷이름: testsubnet

네트웍주소: 192.168.100.0/24

게이트웨이IP는 넣지말것(동적할당)

ㄴ 서브넷세부정보에서 DHCP사용

    ㄴ DNS네임서버: 8.8.8.8(구글 DNS서버)


[라우터]

이름: testrouter

외부네트워크: public

라우터생성버튼 클릭

라우터목록-인터페이스 탭 - 인터페이스 추가

 ㄴ 서브넷 추가 창 - 서브넷 선택 - 제출

네트워크 토폴로지로 확인

콘트롤러 쉘에서 #ip netns (namespace)로 확인

qrouter (id)

qdhcp (id)

ip netns exec (qrouter id) ping -c3 google.co.kr 로 테스트



[이미지 받기]

구글링: Openstack getimage

https://docs.openstack.org/image-guide/obtain-images.html



이미지 = Boot disk(템플릿)

클라우드에서는 OS설치가 아닌 OS사용개념(launch), 그래서 이미지를 복사

이미지 만드는 도구도 있음

Pure image 에 Cloud-init

Glance 의 백엔드 object  storage인데 기본이 file(/var/lib/glance/images)

분산 아키텍처 - 파일을 쪼개 분산하는 것이 아닌 복제방식으로 더 안전하게



user -> NOVA (Flavor)  -> Glance(image)

  /var/lib/nova/instances/ID/Distk  /va/lib/glance/images/





[인스턴스 생성]


#!bin/bash

echo "dkagh1." | passwd --stdin centos



watch 명령어로 인스턴스 생성/삭제과정 모니터링 가능

watch -nl 'ls -l'



Console을 열면 VBOX의 기본 IP(172.25.100.10)로 나오게 되어 연결안됨


192.168.56.10 IP로 변경하면 웹콘솔이 열림



[오픈스택의 작동원리]

# openstack-status





== Glance services ==

openstack-glance-api:                   active

openstack-glance-registry:              active



== neutron services ==

neutron-server:                         active

neutron-dhcp-agent:                     active

neutron-l3-agent:                       active  (라우터)

neutron-metadata-agent:                 active

neutron-lbaasv2-agent:                  active (로드밸런서)

neutron-openvswitch-agent:              active (OVS, 콘트롤러에서는3개, 컴퓨트에서는2개)

neutron-metering-agent:                 active



# ps -ef | grep dnsmasq


COMPUTE 비교


브릿지의 인퍼페이스는 바로 포트임



[보안 그룹 만들기]

testsg 보안그룹 만들고 규칙관리 설정



[키페어 생성]

프로젝트-컴퓨트-키페어

개인키-공개키

공개키를 저장함

clound-init이 공개키를 저장함

사용자는 개인키로 인증

개인키가 크롬브라우저에 다운로드됨(대시보드는 testkey는 공개키)


개인키는 600으로 맞춰야함





VM에 키페어를 지정해서 다시 생성


기존VM에서는 키페어 연결할 수 없음

VM을 다시 생성함



[유동IP 설정]

맨 오른쪽열 [연결(Associate)] 누름


인스턴스에서도 유동IP연결된 사항 확인 가능


SNAT(Src-NAT)

DNAT(Dest-NAT)


외부에서 연결하려면 Port-Forwarding으로 해야 함


NAT로 연결됨


# ip netns

# ip netns exec qrouter-b55ecfb7-06ab-4ba7-be50-7ffb884cd711 iptables -L -nv -t nat



[Volume 생성]

영구스토리지 사용하고자 할때

Status가 error라면

에러난 볼륨 삭제후 Cinder 를 재기동

# openstack-service restart cinder

만일 그래도 에러난다면 오픈스택 전체 재기동

# openstack-service restart


볼륨 생성후 마운트, 쉐어하려면 nfs/smb (MANILA서비스)


[오브젝트 스토어]

- 컨테이너 생성


- 컨테이너에 담길 파일 업로드

파일 시스템 용량 확인

컨테이너의 링크를 Public Access로 변경하고 Link클릭하면 오류



Port 포워딩

VBox - Controller - 환경설정 - 네트워크 - 편집- osp-network선택 - 포트 포워딩 버튼 - 추가


디펜더 보안 경고 확인

앞부분 FQDN을 localhost로 변경



[Public 네트워크 지우기]


관리자로 로그인


관리-네트워크-네트워크로 들어가서 삭제



[osp-user 생성]


이미지 링크 복사

wget으로 이미지 당겨옴


wget 명령어 사용을 위해서 명령서 설치 (osp-user / qwer1@34)


wget으로 이미지 당겨옴



[OpenStack 명령어 연습]



echo "Credential admin"

source /root/keystonerc_admin

echo ""

echo "Create the Project and User"

openstack project create prod-project

openstack user create prod-user --password dkagh1.

openstack role add --project prod-project --user prod-user _member_

echo ""

echo "Create the Flavor"

openstack flavor create --vcpus 1 --ram 1024 --disk 10 --ephemeral 1 --swap 512 m2.small

echo ""

echo "Create the Public Network(flat)"

openstack network create --provider-network-type flat --provider-physical-network extnet --external ext-network

openstack subnet create --network ext-network --subnet-range 172.25.100.0/24 --gateway 172.25.100.1 --allocation-pool start=172.25.100.100,end=172.25.100.199 --no-dhcp ext-subnet

echo ""

echo "Create Credential User file"

cp /root/keystonerc_admin /root/keystonerc_prod-user

sed -i 's/OS_USERNAME=admin/OS_USERNAME=prod-user/g' /root/keystonerc_prod-user

sed -i 's/keystone_admin/keystone_prod-user/g' /root/keystonerc_prod-user

sed -i 's/OS_PROJECT_NAME=admin/OS_PROJECT_NAME=prod-project/g' /root/keystonerc_prod-user

echo ""

echo "Credential User"

source /root/keystonerc_prod-user

echo ""

echo "Create Private Network and Subnet"

openstack network create prod-network

openstack subnet create --network prod-network --subnet-range 192.168.100.0/24 --allocation-pool start=192.168.100.100,end=192.168.100.199 --dns 8.8.8.8 prod-subnet

echo ""

echo "Create the Router"

openstack router create prod-router

openstack router add subnet prod-router prod-subnet

openstack router set --external-gateway ext-network prod-router

echo ""

echo "Download and Create Image"

yum -y install wget

wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2

openstack image create --file CentOS-7-x86_64-GenericCloud.qcow2 prod-centos7

echo ""

echo "Create Key pair"

openstack keypair create --private-key /root/prod-sshkey.pem prod-sshkey

chmod 600 /root/prod-sshkey.pem

echo ""

echo "Create the Security Group"

openstack security group create prod-sec

openstack security group rule create --dst-port 22 prod-sec

openstack security group rule create --protocol icmp prod-sec

echo ""

echo "Create the Insance"

openstack server create --flavor m2.small --image prod-centos7 --network prod-network --security-group prod-sec --key prod-sshkey prod-server --wait

echo ""

echo "Create the Volume"

openstack volume create --size 1 prod-vol

echo ""

echo "Add the Floating IP to Instance"

openstack floating ip create ext-network

openstack server add floating ip prod-server  $(openstack floating ip list -c 'Floating IP Address' -f value)

echo ""


작가의 이전글 DeepRacer 워크샵
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari