클라우드 컴퓨팅 기반 기술과 오픈스택(kvm) 기반 provisioning

42
Copyright 2016 osci.kr. All Rights Reserved / Confidential 클라우드 컴퓨팅 기반 기술과 오픈스택(KVM) 기반 Provisioning (주) 오픈소스컨설팅

Upload: ji-woong-choi

Post on 16-Apr-2017

1.959 views

Category:

Software


13 download

TRANSCRIPT

Page 1: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

Copyright 2016 osci.kr. All Rights Reserved / Confidential

클라우드 컴퓨팅 기반 기술과 오픈스택(KVM) 기반 Provisioning

(주) 오픈소스컨설팅

Page 2: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

2

Hypervisor & KVM

RHEV & Openstack

시스템 자동화 프로세스

시연 (peacock )

KVM & Virtualization tuning

Openstack ( 오픈소스컨설팅 개발 인프라 환경 사례 )

시연 (ansible )

Page 3: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

3

PaaS Architecture

출처 : http://pivotal.io/platform

PaaS를 구축할 수 있는 많은 인프라 환경 중에 오픈스택은 하나의 클라우드 환경으로 점차 확대되어지고 있음.

Cloud Foundry는 AWS/OpenStack/Vmware(vSphere, vCloud)등의 infra architecture를 사용함

Openshift의 경우는 baremetal/AWS/OpenStack/RHEV(virt)/Vmware 등을 지원함.

출처 : http://redhat.com

Hypervisor & KVM

Page 4: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

4

OpenStack

“Newton”

“Olimpic”

Hypervisor & KVM

Page 5: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

5

OpenStack Compute node에서 지원되는 Hypervisor

출처 : http://blog.rackspace.com/architecting-vmware-vsphere-for-openstack/

OpenStack의 Compute node는 크게 Vmware/Hyper-V/Xen/KVM 등이 지원된다.

Compute node인 Nova는 API나 native management tools를 통해 관리된다.

출처 : http://suse.com

Hypervisor & KVM

Page 6: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

6

What’s the Hypervisor ?

하이퍼바이저(hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한

논리적 플랫폼(platform)을 말한다. - wikipedia

Type-1, native or bare-metal hypervisors

• 게스트 OS는 호스트의 각각의 process로 운영

• VMware vSphere/ESXi.

• Hyper-V

• Xen/the Citrix XenServer

• RHEV

• Oracle VM Server for x86

• IBM LPAR

Type-2 or hosted hypervisors

• 일반 프로그램과 같이 OS위에 하나의 프로세스로 운영된다.

• VMware Workstation

• VMware Player,

• VirtualBox

• QEMU

• KVM

KVM의 경우는 TYPE-2로 분류되어 있으나,

KVM은 kernel-module로 이미 Converting 되었기 때문에 실제적인 운

영은 TYPE-1 형태이다. 그래서 가끔 혼란스러운 경우가 있다.

Hypervisor & KVM

Guest OS Guest OS

Host OS

Ring 0

Ring 3

Page 7: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

7

HW virtualization type

하이퍼바이저(hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한

논리적 플랫폼(platform)을 말한다. - wikipedia

가. 전가상화 기술(Full Virtualization)

- 하드웨어를 완전히 가상화, 게스트 OS의 아무런 수정없이

윈도우에서 리눅스까지 다양한 OS 지원

- 전제조건 : CPU의 Intel-VT나 AMD-V 기능 필수

- 단점 : 위 CPU의 사용으로 성능 저하 발생

예: Mac-on-Linux, Parallels Desktop for Mac, Parallels Workstation

VMware Workstation, VMware Server (formerly GSX Server), VirtualBox

나. 반가상화 기술(Para-Virtualization)

- 전가상화 달리 하드웨어를 완전히 가상화하지는 않음

게스트OS가 직접 하드웨어를 제어하는 것이 아니고

하이퍼바이저에게 의뢰, 높은 성능 유지, 대표적 기술 XEN

게스트 OS의 커널을 일부 수정해서 게스트의 커널 함수를 호출하면

호스트의 컨널로 전달

- 단점 : 게스트 OS의 일부를 수정해야 함, 오픈소스가 가능

- 예 : Zen

Hypervisor & KVM

VMWare

Xen

Page 8: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

8

X86 processor virtualization techniques

Full Virtualization 기술은 클라우드 시대에 Guest OS의 변경없이 구현 가능한 쉽고, 신뢰성있는 기술중에 하나임.

Full Virtualization.

Intel (Intel VT) and AMD (AMD-V)

'Intel VT-x'-based Full Virtualization.

VMWare's Para Virtualization.

Xen's Para Virtualization.

Para Virtualization

Host OS Virtualization

출차:http://www.cubrid.org/blog/dev-platform/x86-server-virtualization-technology/ https://www.vmware.com/files/pdf/VMware_paravirtualization.pdf

Container-based Virtualization

Hypervisor & KVM

Kernel space

user mode

Page 9: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

9

X86 processor virtualization techniques

Full Virtualization 기술은 클라우드 시대에 Guest OS의 변경없이 구현 가능한 쉽고, 신뢰성있는 기술중에 하나임.

Full Virtualization. Para Virtualization

Host OS Virtualization Container-based Virtualization

Hypervisor & KVM

Page 10: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

10

KVM (Kernel based Virtual Machine)

전가상화를 지원하는 리눅스 커널 기반의 가상화 도구

리눅스 커널 2.6.20 버전부터 KVM 컴포넌트를 포함

리눅스 자체를 호스트 OS로 이용하고 하이퍼바이저를 서브 모듈로 취급

리눅스 커널 모듈 – 리눅스 커널의 다양한 이점과 기능을 상속, Virtualization 구현

리눅스를 하이퍼바이저로 쓸 수 있도록 만들어 줌

• KVM 은 가상머신을 인스턴스화 하기 위해 일부 수정된 QEMU(Emulator)를 사용

• 가상머신 인스턴스가 실행되게 되면 이 가상머신은 일반적인 프로세스 처럼 동작

Hypervisor & KVM

KVM의 경우는 TYPE-2로 분류되어 있으나,

KVM은 kernel-module로 이미 Converting 되었기 때문

에 실제적인 운영은 TYPE-1 형태이다.

Page 11: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

11

libvirt

다양한 하이퍼바이저를 관리할 수 있는 표준화되고 단일화된 어플리케이션 프로그래머블 인터페이스 프로젝트를

가리킵니다

가상머신을 생성, 수정, 관리, 모니터링, 마이그레이션, 정지 시키는 등 공통적인 기능들에 대한 API를 제공합니다

libvirt 자체로 도구는 아니지만 가상머신을 관리하는 도구를 작성하기위한 API입니다

Xen, KVM, QEMU, OpenVz, VirtualBox, VMware 까지 지원됩니다

Hypervisor & KVM

사용자 인터페이스 툴

Hypervisor

QEMU & KVM

Libvirt

virsh

virt-viewer

virt-manager

Page 12: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

12

RHEV(RED HAT ENTERPRISE VIRTUALIZATION)

RHEV는 KVM을 기반으로 하는 가상화 솔루션임

RHEV & Openstack

호스트 KVM 사용

VDSM, QEMU, libvirt 가 호스트에서 동작

VM / Networks / Storage 를 관리

중앙 집중식 관리

그래픽 인터페이스 제공

가상 리소스 보관

VM / Template /

ISOs

RHEV 상태를

지속적으로 추적 및 기록

외부 디렉토리 서버

유저 및 권한 제공

물리네트워크와 논리

네트워크가 연결 됨.

Page 13: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

13

OpenStack Hypervisor Support Matrix

OpenStack nova에서 지원하는 hypervisor는 아래와 같음.

KVM - Kernel-based Virtual Machine. The virtual disk formats that it supports is inherited from QEMU since it uses a modified QEMU program to launch the virtual machine. The supported formats include raw images, the qcow2, and VMware formats. LXC - Linux Containers (through libvirt), used to run Linux-based virtual machines. QEMU - Quick EMUlator, generally only used for development purposes. UML - User Mode Linux, generally only used for development purposes. VMware vSphere 4.1 update 1 and newer, runs VMware-based Linux and Windows images through a connection with a vCenter server or directly with an ESXi host. Xen (using libvirt) - Xen Project Hypervisor using libvirt as management interface into nova-compute to run Linux, Windows, FreeBSD and NetBSD virtual machines. XenServer - XenServer, Xen Cloud Platform (XCP) and other XAPI based Xen variants runs Linux or Windows virtual machines. You must install the nova-compute service in a para-virtualized VM. Hyper-V - Server virtualization with Microsoft's Hyper-V, use to run Windows, Linux, and FreeBSD virtual machines. Runs nova-compute natively on the Windows virtualization platform.

출처 :http://docs.openstack.org/liberty/config-reference/content/section_compute-hypervisors.html

RHEV & Openstack

Page 14: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

14

OpenStack Hypervisor

Nova의 경우 드라이버의 추상화 레이어를 가지며, 이것은 nova deploy를 지원하지만, 모든 driver가 전부 nova의

모든 기능을 fully 지원하는 것은 아님.

출처 :http://docs.openstack.org/developer/nova/support-matrix.html

RHEV & Openstack

Page 15: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

15

시스템 자동화 개요

가상화를 통한 클라우드 구축 기업에서는 프로세스에 대한 자동화 부분에 초점을 맞추고 있음

배경 및 이슈

소프트웨어/시스템

- 이원화된 시스템 및 소프트웨어 관리

- 엔지니어 의존적 소프트웨어 설치

장애 대처 능력

- 사용량 폭주시 시스템 구성의 즉각 대처 어려움

- 단편적인 모니터링에 의한 수동 대처

대응 방안

시스템 설치/구성 자동화

- 웹 서버/미들웨어/데이터베이스

- VM에 대한 운영 자동화 구성

장애대응 모니터링/자동확장

- 시스템 자원의 자동 증감

- 로드밸런싱/클러스터링 자동참여

오픈소스 SW 기반의 도구 개발

- 개발 커뮤니티 확산, 커미터 양성

- 오픈소스 기반의 SW 스택 구성

기대 효과

서비스 운용 효율성

- 시스템 운영 비용에 대한 절감

- 중앙 집중형 관리 시스템 구성

무정지 시스템 제공

- 사용량에 따른 시스템 자동 확장/감소

- 시스템 유연성, 확장성 증대

오픈소스SW 개발 가이드 제시

- 오픈소스SW 개발 방법에 대한 개발자 참여

- 자체 개발SW를 통한 이미지 강화

오픈소스 SW 활성화 정책

- 기업 내부의 오픈소스SW 활성화 정책

- 오픈소스 원천 기술 확보

• 자동 설치/구성(Provisioning): IT인프라 자원을 사용자 요구사항에 맞게 할당, 배치, 배포하여 시스템을 즉시 사용할 수 있도록 만드는 것

• 자동 확장(Auto Scaling): 시스템에 설정된 임계치에 의하여 사용량 등의 증가시 자동으로 확장하여 로드밸런싱에 참여. 예) 수강신청 시스템, 연

말정산 간소화 시스템, 스포츠 문자 중계 시스템 등

시스템 자동화 프로세스

Page 16: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

16

자동화 기대효과

실시간 장애대응

클라우드 가상머신 리소스 부족 등으로 인한 업무 프로세스에 대한 무중단

아키텍처 구현

비용 절감

기존 운영 관리에 소요되던 많은 시간과 서비스 인터페이스 모듈 정형화를 통한

서비스 표준화

즉시 대응

패치 등이 변경에 대한 자동화를 수행함으로써 시스템적인 변화에 즉각적으로 대응함으로써 실시간 적용 구현

경쟁력 향상

수작업으로 발생할 수 있는 문제점을 최소화함으로써 시스템 운영에 대한 안전성 확보와 경쟁력 향상

기술적 측면

• 자동 스케일링 핵심 기술 내재화 • 확장형 인터페이스 아키텍처 • 서비스 재활용 극대화 • 타 시스템 연계 유연성 및 통합

프로세스 측면 비즈니스 측면

•운영 프로세스 표준화 및 자동화 •요구에 따른 처리 프로세스 유연성 극대화 •업무 생산성, 운영 및 효율성 극대화 •운영 관리 프로세스 표준 정립

•운영 비용 절감으로 인한 총 소유 비용에 대한 감소 효과

•무중단 서비스 제공을 통한 고객 신뢰성 증대

•서비스 재조합을 통한 비즈니스 민첩성 증대

최적의 운영자동화

솔루션 개발에 의한 운영 표준 수립, 장애 대응 체계 마련, 운영 비용 감소 및 기업 경쟁력 확보

시스템 자동화 프로세스

Page 17: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

17

영역별 고려사항

요구기능

• 시스템 입고시 OS 설치 구성

• OS 버전별 설치, 하이퍼바이저 설치

• IP할당, 디스크 구성

요구기능

• WEB/WAS/DB 런타임 설치 구성

• CMS, 모니터링 에이전트 설치

요구기능

• 운영 체제(Linux) 패치(보안, 버그 등) 적용

• 시스템 소프트웨어 버전 업그레이드(WEB/WAS/DB)

요구기능

• 애플리케이션 버전 관리

• 빌드/배포 시스템에 대한 반자동화 구성(하이브리드 디플로이)

OS/하이퍼바이저 설치 시스템 소프트웨어, 에이전트 설치

패치 관리 애플리케이션 배포

서버, 하이버바이저, 패치, 리소스, 애플리케이션에 대한 프로비저닝 제공 Supported by OpenSource Cousulting

Enhanced 시스템 구축에 대한 모든 프로세스 영역에 대한 검토 필요

1) PXE: Preboot Execution Environment

시스템 자동화 프로세스

Page 18: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

18

시스템 자동화 대상 영역

Infrastructure

Middleware

Application

물리적 머신

VM

… • 서비스 별 VM deploy 상황

• VM 상태 모니터링

• VM 사용량 모니터링(CPU, 메모리,…)

• 자동 스케일링

VM VM VM

DB

WAS

WEB Server

3rd Party

Solution

Log DB

Log File

• 프로비저닝/환경설정

- 소프트웨어 자동설치

- 설치 소프트웨어 환경 구성 설정

• 솔루션 별 맞춤형 모니터링

- 적절한 log 수집 쿼리를 지정하여

Log DB의 내용을 수집

- 정규 표현식 기반의 파일 로그 수집

물리적 머신

플랫폼의 서비스 구성 요소 - IaaS 인프라 위에 웹 서버, 미들웨어 및 데이터베이스 서버

구성

상위 애플리케이션은 각 비즈니스에 따라 별도로 구축되어 관리

시스템 자동화 프로세스

Page 19: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

19

Peacock Introduction

클라우드 환경의 업무 운영을 위한 OS, DBMS, WEB, WAS 등의 설치, 구성, 배포, 패치 관리 등에 필요한 운영 자동화 서버 및 에이전트

사용자가 폭주하는 특정 시간 또는 기간에 발생하는 상황에 능동적으로 대처할 수 있는 자동 확장 및 감소 기능을 통해 장애 대응 및 운영 효율성 극대화

소프트웨어 로드 밸런서를 활용한 동적 로드 밸런싱 기능 추가와 후단 머신에 대한 다양한 알고리즘 적용 및 구성을 통한 관리

Core Modules

Operation Management Monitoring

서비스 상태 감시 성능 감시 소프트웨어 관리 운영 프로세스 관리

가상화 관리 인스턴스 관리

Operator

Admin.

로그수집 뷰어 통계 정보

IAM 사용자 인증 권한 제어

명령어 서비스 접근 통제

필터링 (Filtering) 암호화 (Encryption)

Scaling/Provisioning

로드 밸런서 OS 프로비저닝

자동 스케일링 소프트웨어 프로비저닝

User Interface & Control Channel

Cont

rol R

eposi

tory

IaaS Orchestration

Page 20: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

20

Peacock 시스템 아키텍처

시스템특징

특징1

특징2

특징3

De-facto(사실상

표준) 오픈소스를

활용한 범용성

운영환경 및

업무환경에

최적화된 응용 구조

중앙 집중화된

관리를 위한 관리자

포털 제공

솔루션영역 연계대상

오픈소스 기반 클라우드 운영 자동화 솔루션

시스템 관리 리포지토리

열람·활용관리

패키지 관리 SW관리

관리자 포털

구성관리 그룹 관리 사용자관리 가상화 관리

서버 관리

모니터링

MySQL

톰캣

JBoss

아파치

기타

RHEV, AWS

에이전트관리

메모리 CPU 디스크

관리 데이터베이스 자동확장

통지 임계치 HAProxy

호스트

데이터센터

네트워크

가상머신

Page 21: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

21

Peacock 시스템 상태 모니터링

• Server Summary: 현재 접속된 가상화 관리자의 내용을 포함, 현재 가상머신의 갯수, 템플릿, 인스턴스 구동수, 문제가 발생하는 서버에 대한 알람 정보 • Project Summary: ALM을 통하여 현재 사업부서에서 사용하고 있는 프로젝트에 대한 정보로써 프로젝트 수, SVN 리포지토리의 수, Jenkins Job의 수 • S/W Summary: 현재 관리중인 인스턴스들에 대한 소프트웨어 설치 요약 정보를 표시합니다. Jboss EWS(HTTPD), JBoss EWS(Tomcat), JBoss EAP5의 현재 설치된 소프트웨어 정보

• 하위 그래프: 그래프는 현재 높은 사용량을 보이는 서버의 목록을 상위부터 5개를 보여줌. 각 CPU, Memory, 디스크 정보를 보여주며, 문제가 발생하는 서버를 쉽게 찾을 수 있도록 도와줌

Page 22: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

22

Peacock 소프트웨어 프로비저닝

소프트웨어 설치 설치 결과 설정 확인 설정 변경사항 확인

• 모든 인스턴스의 소프트웨어 구성 정보를 표준화하여, 전체 프로젝트의 설정에 대한 일관성을 부여하는 것이 가능함 • 관리자가 임의로 소프트웨어의 설정 정보를 수정하는 것을 확인하고, 변경사항에 대한 내용 히스토리를 모두 기록하여 추적함 • 소프트웨어 설치, 설정 변경, 삭제를 통합된 중앙 관리 콘솔을 통하여 수행

Page 23: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

23

SDS (Software Defined Storage)

Page 24: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

24

Peacock ( www.osci.kr PROJECT WITH ATHENA PEACOCK VIDEO )

https://youtu.be/ilbZrRh08Hg

Page 25: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

25

Openstack ( 오픈소스컨설팅 개발 인프라 환경 사례 )

Compute node : 4대 VM : 약 50대

사내 운영 환경 및 개발 환경 ( Centos 7 + community OpenStack(Liberty) + Ceph Hammer)

Page 26: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

26

OpenStack Controller HA 구성

Pacemaker & HA-Proxy

Active-backup

resources

Active-Active

resources

Page 27: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

27

OpenStack Controller HA 구성

Pacemaker & HA-Proxy

Controller1 ->

controller3

Controller1의

component Stop

Page 28: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

28

OpenStack Tuning

Galera cluster Active-backup 설정

# vi /etc/haproxy/haproxy.cfg

----------------------------------------------------------------------------------------------

listen galera_cluster

bind 10.0.0.100:3306

mode tcp

balance leastconn

option mysql-check user haproxy_check

server controller1 10.0.0.101:3306 check inter 2000 rise 2 fall 5

server controller2 10.0.0.102:3306 check inter 2000 rise 2 fall 5 backup

server controller3 10.0.0.103:3306 check inter 2000 rise 2 fall 5 backup

----------------------------------------------------------------------------------------------

Multi-Master로 설정 시, 이슈 발생하여 Active-backup으로 변경

Page 29: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

29

OpenStack Tuning ( RHEL/CentOS 7 )

throughput-performance/tuned.conf

[cpu]

governor=performance energy_perf_bias=performance min_perf_pct=100 [disk] readahead=>4096 [sysctl] kernel.sched_min_granularity_ns = 10000000 kernel.sched_wakeup_granularity_ns = 15000000 vm.dirty_ratio = 40 vm.dirty_background_ratio = 10 vm.swappiness=10

virtual-host/tuned.conf

[main] include=throughput-performance [sysctl] vm.dirty_background_ratio = 5 kernel.sched_migration_cost_ns = 5000000

/usr/lib/tuned/virtual-guest/tuned.conf

[main] include=throughput-performance [sysctl] vm.dirty_ratio = 30 vm.swappiness = 30

# tuned-adm profile throughput-performance

# tuned-adm active

Current active profile: throughput-performance

# tuned-adm profile virtual-host

# tuned-adm active

Current active profile: virtual-host

Controller node Compute node

Page 30: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

30

OpenStack Tuning

nova.conf 수정

# vi /etc/nova/nova.conf

---------------------------

[libvirt]

cpu_mode=host-model

---------------------------

Instance 의 CPU

Page 31: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

31

Instance 의 CPU

OpenStack Tuning

nova.conf 수정

# vi /etc/nova/nova.conf

---------------------------

[libvirt]

cpu_mode=host-passthrough

---------------------------

출처 : http://openstack-in-production.blogspot.kr/2015/08/cpu-model-selection-for-high-throughput.html

Page 32: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

32

OpenStack with CEPH

SSD를 Journal disk로 설정

# ceph-deploy osd create --zap-disk osc-ceph001:/dev/sdc:/dev/sda4 osc-

ceph001:/dev/sdd:/dev/sda5 osc-ceph001:/dev/sde:/dev/sda6

Glance에 Image는 raw format으로 업로드

Ceph는 qcow2를 지원하지 않음, qcow2 image 사용하면, 인스턴스 생성 시 compute-node에서 qcow2

-> raw로 변환(local disk 사용, convert 시 CPU 부하)

Page 33: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

33

OpenStack Tuning

# modinfo kvm_intel | egrep ept

# vi /etc/modprobe.d/kvm_intel.conf

--------------------------

options kvm_intel ept=N

--------------------------

[Unload kvm_intel module]

# modprobe -r kvm_intel

[Load kvm_intel module]

# modprobe kvm_intel

# cat /sys/module/kvm_intel/parameters/ept

N

kvm_intel module parameter 수정

http://openstack-in-production.blogspot.kr/2015/08/ept-and-ksm-for-high-throughput.html

EPT(Extended Page Table) : MMU(Memory Management Unit)를 가상 머신에 최적화시키는 CPU의 기능 – Intel

Page 34: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

34

OpenStack Tuning

# echo 2048 > /proc/sys/vm/nr_hugepages

Or

# vi /etc/sysctl.d/10-hugepage.conf

vm.nr_hugepages=2048

# sysctl -p

Setting Huge-Pages

# virsh edit <vm name> <memoryBacking> <hugepages> <page size='2048' unit='KiB' nodeset='0'/> </hugepages> </memoryBacking>

Setting to enable huge-pages via Libvirt

# nova flavor-key <flavor-ID> set hw:mem_page_size=<Number of Huge pages>

Setting to enable huge-pages to nova

# cat /proc/meminfo | grep -i huge AnonHugePages: 13791232 kB HugePages_Total: 2048 HugePages_Free: 2048 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB

Page 35: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

35

Ansible

Ansible : Python 기반의 Configuration Management System(like, Chef, puppet etc) Shade : OpenStack Cloud 환경을 운영하기 위한 Client Library

# yum install git gcc glibc tzdata glibc-common python-devel # git clone git://github.com/ansible/ansible.git –recursive # pip install paramiko PyYAML Jinja2 httplib2 six # pip install shade

Installation Ansible 2.1 & shade

Page 36: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

36

Ansible

clouds: testing: auth: auth_url: http://controller.osci.kr:5000/v2.0

username: jyy password: XXXXX project_name: infra

• ~/.config/openstack/clouds.yaml : 오픈스택 인증정보

- name: Gather facts about hosts: localhost tasks: - name: Executing osserver facts os_server_facts: server: test* cloud: testing - name: debuging debug: var: openstack_servers

• os_server_facts.yml : test로 시작되는 인스턴스 정보 수집

# ansible-playbook test_os_server_facts.yml

• os_networks_facts.yaml : 오픈스택에 설정된 네트워크 정보 수집

- name: Gather network facts hosts: localhost tasks: - name: Executing os_subnets_facts os_subnets_facts: cloud: testing - name: Print out the result debug: var: openstack_subnets

• os_subnet_facts.yml : 오픈스택에 설정된 Subnet 정보 수집

- name: Gather network facts hosts: localhost tasks: - name: Executing os_networks_facts os_networks_facts: cloud: testing - name: Print out the result debug: var: openstack_networks

Page 37: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

37

Ansible

[root@cent7-temp ~]# ansible-playbook os_server_facts.yml [WARNING]: Host file not found: /etc/ansible/hosts [WARNING]: provided hosts list is empty, only localhost is available PLAY [Gather facts about all instances] **************************************** TASK [setup] ******************************************************************* ok: [localhost] TASK [Executing os server facts] *********************************************** ok: [localhost] TASK [debuging] **************************************************************** ok: [localhost] => { "openstack_servers": [ { "HUMAN_ID": true, "NAME_ATTR": "name", "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone": "nova", "OS-EXT-SRV-ATTR:host": "compute04", "OS-EXT-SRV-ATTR:hypervisor_hostname": "compute04", "OS-EXT-SRV-ATTR:instance_name": "instance-0000017e", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2016-03-17T07:43:35.000000", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private-10.10.10.0": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:39:a2:xx", "OS-EXT-IPS:type": "fixed", "addr": "10.10.10.42", "version": 4 },

"az": "nova", "cloud": "testing", "config_drive": "", "created": "2016-03-17T07:42:36Z", "flavor": { "id": "3" }, "hostId": "0fe4f96621ffa5db7268ac0cb5320ec6b1404a30ba43a23b2780ba58", "human_id": "testserver", "id": "bd73715c-0fc4-4183-8dbc-6aa699ddfa55", "image": { "id": "06315c8c-0f68-48bb-a3be-3e9b8c07370b" }, "key_name": "jyy-key-001", "metadata": {}, "name": "testServer", "networks": { "private-10.10.10.0": [ "10.10.10.42", "192.168.0.155" ] }, "os-extended-volumes:volumes_attached": [], "progress": 0, "region": "", "request_ids": [], "security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "0c6a2e1f1992416f892292778fa61423", "updated": "2016-03-17T07:43:36Z", "user_id": "7ae4af63f88b431f897243140b3e541c", "volumes": [], "x_openstack_request_ids": [] }, PLAY RECAP ********************************************************************* localhost : ok=3 changed=0 unreachable=0 failed=0

Page 38: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

38

Ansible

- name: Launch the new instance hosts: localhost tasks: - name: Upload key os_keypair: name: jyy-key-001 public_key_file: jyy-public-key cloud: testing - name: Boot Test instance os_server: name: testServer image: CentOS7 flavor: m1.medium security_groups: default key_name: jyy-key-001 auto_ip: yes nics: - net-name: private-10.10.10.0 wait: yes cloud: testing register: test_server_result - name: Print out the result of launching instance debug: var: test_server_result - name: Wait for the test instance wait_for: port: 22 host: "{{ test_server_result.openstack.accessIPv4 }}" search_regex: OpenSSH timeout: 200 - name: Add new host to inventory add_host: name: "{{ test_server_result.openstack.name }}" ansible_ssh_host: "{{ test_server_result.openstack.accessIPv4 }}"

- name: Setup Nginx on the Test Instance hosts: testServer become: yes remote_user: centos tasks: - name: Install EPEL repo yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm state: present - name: Import EPEL GPG key rpm_key: key: /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }} state: present - name: Run yum update yum: name=* state=latest update_cache=yes - name: Install Nginx server yum: name: nginx state: present notify: enable nginx - name: Copy test page copy: src: example.html dest: /usr/share/nginx/html/example.html notify: - restart nginx - name: enable nginx action: service name=nginx enabled=yes - name: restart nginx action: service name=nginx state=restarted

# ansible-playbook --verbose --private-key=jyy-private-key test_os_launching_instance.yml

• test_os_launching_instance.yml

Page 39: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

39

To do

Network I/O

SR-IOV나 DPDK 적용 Jumbo frames 적용(Storage 대역)

Storage I/O

Ceph Tuning

LBaaS

Ceilometer & Heat를 이용한 Auto-scaling

Page 40: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

40

NewsLetter

Page 41: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

41

NewsLetter

Page 42: 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning

42

OPEN SHARE CONTRIBUTE ADOPT REUSE