SlideShare uma empresa Scribd logo
1 de 73
Baixar para ler offline
[OpenStack]
Ice House 설치하기
김지은
yeswldms@gmail.com
# IceHouse
[참고]
http://docs.openstack.org/icehouse/
http://naleejang.tistory.com/
http://sola99.tistory.com/
http://blog.naver.com/love_tolty/220312783624
OpenStack
▲ IceHouse Conceptual Arhitecture▲ Openstack Series
# OpenStack Services
OpenStack
service description
Nova 컴퓨팅 서비스, OpenStack클라우드 인프라 관리(하이퍼바이저에 행하는 모든 행위 관리)
Neutron 네트워킹 서비스, OpenStack 내의 네트워크 관리(고도화된 가상 네트워크 정책 설정 가능)
Keystone 인증 서비스. 사용자 및 API에 대한 인증 및 권한 설정
Glance 이미지 관리 서비스, VM으로 생성될 이미지파일들을 관리
Cinder 볼륨저장장치 서비스, 데이터를 블록 단위로 저장
Swift 오브젝트 저장장치 제공 서비스, 데이터를 오브젝트 단위로 저장
Horizon 사용자 인터페이스 – 데쉬보드
Ceilometer 모니터링 및 미터링서비스, 사용자의 사용량 등을 측정
Heat 오케스트레이션서비스, 미리 작성된 스크립트와 준비된 템플릿을 이용해 자동으로 개발 인프라 구축
Trove 데이터베이스 서비스, 최종 사용자에게 클라우드 기반의 데이터베이스서비스를 제공
<예비 프로젝트>
Sahara Openstack상에서 Hadoop클러스터를 제공하기 위한 서비스
Marconi 메시지 전송 및 알림 서비스
Ironic 가상머신이 아닌 물리서버를 클라우드 환경에서 제공
# Example Arhitecture
OpenStack
▼ Three-node architecture with Neutron ▼ Two-node architecture with Nova-network
http://docs.openstack.org/icehouse/install-guide/install/apt/content/ch_overview.html
Test Lab
• Composition
OpenStack
Infra
Instances, vNet, vStorage, vCompute …
OpenStack Ice House, 9th release version
Virtual
Machines
Controller node, Compute node, Network
node, Block node
(Server 14.04.1 LTS (64bit only))
EXSi 5.5 Vmware ESXi 5.5 netork settings
- IP : 192.168.1.1
- Netmaks : 255.255.255.0
- Gateway : 192.168.1.254
- dns-nameservers : 168.126.63.1 8.8.8.8
Host Computer Hardware Spec.
- CPU : Intel Core i5-4690, 4cores, 3.50GHz
HyperThreading : none
Gigabyte Technology, B85M-DS3H
- Memory : 16GB
- Disk : 1.81TB
- NIC : Realtek 8168 Gigabit Ethernet  2개
- No OS, installed Esxi Server
# OpenStack Cloud
Test Lab
OpenStack IaaSNetwork
node
Controller
node
Compute
node 1
Block 1
DashBoard
CLI
Block Storage
User
Tenant C,
Instances
Tenant B,
Instances
Tenant A,
Instances
Test Lab
• Architecture & ESXi VM Spec.
Controller Network Compute
Neutron
Server
Keystone
Glance
Horizon
Cinder
Nova Server
RabbitMQ OVS KVM
Mysql Mysql
Mysql
Server
Test Lab Architecture.
node cpu memory Disk user(id/
pw)
Controller 2 8GB 80G
root /
expernet
Network 1 2GB 80G
root /
expernet
Compute 1 2 6GB 80G
root /
expernet
Block 1 3 2GB
40G/40
G
root /
expernet
Neutron
Agents
Nova
Agents
Neutron
Plugins
Heat
Block
Cinder
Agents
LVM
Hardware Spec.
Test Lab
• OpenStack Network Architecture
node Network1 Network2 Network3
Controller 192.168.1.3 x x
Network 192.168.1.4 10.0.1.21
Not Set
(OVS linkage)
Compute 1 192.168.1.5 10.0.1.31 x
Block 1 192.168.1.6 x x
Controller Network Compute 1
Network 1
WAN
Network 3Network 2
eth0 eth0 eth1 eth2 eth0 eth1
- Network 1 : Management Network
- Network 2 : External Network
- Network 3 : Service(Data) Network
Block 1
eth0
Test Lab – ESXi 5.5
1
3
2
5
6
7
1. VMWare 사이트 접속
2. 로그인
3 . 다운로드 > 무료제품다운로드 >
vSphere Hypervisor
4
4. License & Download
5. Vmware vSphere Hypervisor
– Start Download Manager
6. VMware vSphere Client 5.5
– Start Download Manager
7. License 받은 후 확인
ESXi Download
Test Lab – ESXi 5.5
Realtek NIC를 위한 vSphere Hypervisor iso 드라이버 통합 (1/2)
1. ESXI-Customizer-v2.7.2 > ESXi-Customizer.cmd 실행
2. “Select the original VMWare EXSi ISO” Browse > VMware-VMvisor-Installer-5.5.0-1331820.x86_64.iso
3. “Select an OEM.tgz file, a VIB file or an Offline Bundle” Browse >
VMware_bootbank_net-r8168_8.013.00-3vmw.510.0.0.799733.vib
4. “Select the working directory” Browe
5. “Run!”
1
2
3
4
5
Test Lab – ESXi 5.5
Realtek NIC를 위한 vSphere Hypervisor iso 드라이버 통합 (2/2)
1. All Done Message box 확인
2. 설정 한 output 폴더에 드라이버 통합한 iso가 생겼는지 확인
※ VIB파일은 해당하는 네트워크 카드 모델에 맞춰야 함. 해당 test PC의 nic 모델은 Realtek 8168 Gigabit Ethernet
※ Esxi 사용을 위해선 gigabit 이상을 지원하는 nic가 필요함
1
2
1. CMOS 설정
1. CPU settings
- Intel Virtual Technology : Enabled
- Intel VT/AMD-V : Enabled
 Cpu 가상과 관련한 항목들을 Enabled로 설정
2. 비디오카드
- graphic, gpu등 비디오카드 관련한 항목을 Enabled로 설정(설정이 안되어있을때, 인스턴스가 생성도 안되는 에러가 발생했
었음..)
2. ESXi 설치 및 환경 설정
Network 정보 설정
Shell사용 및 SSH사용 enabled로 설정
3. vSphere Client 설치
Client PC에서 vSphere Client 설치 후 Exsi 서버의 계정(root/expernet)으로 로그인
4. compute 노드에 cpu가상화 지원 가능하도록 설정(KVM) – EXSi 5.1 이상
1. EXSi에 SSH 접근 (putty) 후, vi /etc/vmware/config 편집
- vhv.enable = “TRUE”
2. VM설정 후 파워 on 전에 vi /vmfs/datastoreX/*.vmx 편집
- vhv.enable = “TRUE”
- hypervisor.cpuid.v0 = “FALSE”
3. 확인
: VM power on 후, #egrep -c '(vmx|svm)' /proc/cpuinfo
Basic Configuration
5. 새 가상머신 만들기 (controller, network, compute1, block1)
1. “새 가상 시스템 생성”
2. 구성 – 사용자 지정
3. 이름 및 위치 : default > 스토리지 : default > 가상시스템버전 : 8 > 게스트 운영체제 : Linux/ubuntu 64bit
> CPU 코어 수 설정 > 메모리 설정 > 네트워크 설정 > SCSI 컨트롤러 : default > 디스크선택 : 새 가상 디스크 생성 >
디스크 용량 설정 / 빠르게 비워지는 씩 프로비저닝 / 위치 : default > 고급옵션 : default
> 완료준비 : “완료 전 가상 시스템 설정 편집” 체크
4. 새 가상 시스템 설정 편집 창
- 하드웨어 탭 : 플로피 디스크 제거 > CD/DVD : 데이터스토어 ISO 설정 / “전원켤때연결”
- 옵션 탭 : CPU/MMU 가상화 > VT-x/AMD-V 사용 및 EPT/AMD RVI 사용 체크
5. 완료
Basic Configuration
Basic Configuration
6. VM에 우분투 설치
1. VM 실행 후 설치 진행
2. 설치 완료 후 사용자 계정으로 로그인
3. Root 권한 설정
- sudo passwd root ↙
- 비밀번호 입력 후 root로 로그인 ( su - ↙)
4. IP 설정
# apt-get -y purge network-manager : ip 자동관리 패키지 제거
# vi /etc/netowk/interface
Controller Network Compute1 Block1
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers
168.126.63.1 8.8.8.8
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.4
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 168.126.63.1 8.8.8.8
auto eth1
iface eth1 inet static
address 10.0.1.21
netmask 255.255.255.0
# etth2 설정 내용(OVS 연동)
auto eth2
iface eth2 inet manual
up ip link set dev $IFACE up
up ip link set $IFACE promisc on
down ip link set dev $IFACE
down ip link set $IFACE promisc off
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 10.0.0.2
dns-nameservers 168.126.63.1 8.8.8.8
auto eth1
iface eth1 inet static
address 10.0.1.31
netmask 255.255.255.0
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.6
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 168.126.63.1 8.8.8.8
1. 인터페이스
$ ifup eth0
$ ifdown eth0
2. Tun/tap device
$ ip link set eth2 down
$ ip tuntap del mode tap dev eth2
3. DNS 서버
$ vi /etc/init.d/resolvconf
Basic Configuration
7. 우분투 기본환경
1) Root 권한 설정
$ sudo passwd root
$ su –
2) IP 설정
$ apt-get -y purge network-manager : ip 자동관리 패키지 제거
3) 재실행
$ vi /etc/network/interface
$ ifup ethX
$ ifdown ethX
4) Network node의 가상 nic interface 생성
$ vi /etc/init.d/ovs_nic.sh
-----------------------------------
#! /bin/sh
ip tuntap add mode tap eth2
ip link set eth2 up
ifdown eth2
ifup eth2
-------------------------------------
$ chmod 755 /etc/init.d/ovs_nic.sh
$ vi /etc/rc.local
--------------------------------------
sudo /etc/init.d/ovs_nic.sh
--------------------------------------
$ reboot 후, ifconfig로 확인
Basic Configuration
7. 우분투 기본환경
5) APT 서버 설정
$ vi /etc/apt/sources.list
> :%s/us.archive/kr.archive/g : kr서버로 변경
**$ apt-get update
6) SSH 설정
: ssh를 사용하는 모든 Host 설치 (* sysv-rc-conf : 부팅 시작 시 자동실행 서비스 )
$ apt-get install -y ssh sysv-rc-conf
$ cd /etc/init.d
$ netstat -ntlp | grep ssh
$ ./ssh start
$ netstat -ntlp | grep ssh
$ sysv-rc-conf ssh on
7) Host 파일 수정
: controller, network, compute, block (all nodes)
$ vi /etc/hosts
--------------------------------------
192.168.1.3 controller
192.168.1.4 network
192.168.1.5 compute1
192.168.1.6 block1
127.0.0.1 localhost  없으면 ntpq –p 동작안함
---------------------------------------
* 만약 windows os에서 접근 시 windows hosts파일도 동일하게 수정
8) 방화벽 정책 삭제 (iptables, rabbitmq 메시지가 차단됨
: controller, network, compute, block (all nodes)
$ ufw disable
$ iptables -F
Basic Configuration
7. 우분투 기본환경
9) NTP 설정
: controller, network, compute, block (all nodes)
$ apt-get -y install ntp
$ service ntp stop
$ vi /etc/ntp.conf
------------------------------------ #그외 server 전부 주석
server time.bora.ne
server time.kriss.re.kr
------------------------------------
$ service ntp start
* 확인
$ ntpq -p
$ ntpq -c assoc
10) Openstack package
: controller, network, compute, block (all nodes)
< ubuntu 12.04 >
$ apt-get –y install python-software-properties (14.04는 필수가 아님. 필요치 않음)
$ add-apt-repository cloud-archive:icehouse (14.04는 필수가 아님. 필요치 않음)
$ apt-get update
$ apt-get dist-upgrade
$ apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy (neutron 사용시 backported linux kernal 설치 필요)
$ reboot
< ubuntu 14.04 - icehouse 기본>
$ apt-get -y update && apt-get -y dist-upgrade
$ reboot
Basic Configuration
7. 우분투 기본환경
11) Messaging server (보통 controller에 설치)
: openstack은 message broker로 서비스간 동작/상태정보 교환 (* 메시지 브로커로 rabbitMQ 사용 )
[Controller]
$ apt-get -y install rabbitmq-server
$ rabbitmqctl change_password guest expernet
12) X-Windows 설치 및 실행
$ sudo apt-get install -y xinit
$ sudo apt-get install -y ubuntu-desktop
(* $ sudo apt-get install -y --no-install-recommends ubuntu-desktop)
$ apt-get -y purge network-manager : ip 자동관리 패키지 제거
 xwindows를 설치하면 위의 패키지가 같이 설치되는데, 기존의 네트워크 매니저와 충돌 할 수 있으므로 반드시 제거해준다.
$ startx
$ reboot
13) X-Windows 로그인시 root 허용
$ vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
--------------------------------------------------------------------------
greeter-show-manual-login=true User name 입력 가능
allow-guest=false 게스트계정 막기 (cf. allow-root = true : 자동으로 root 설정)
--------------------------------------------------------------------------
$ reboot
Basic Configuration
7. 우분투 기본환경
14) database
* Mysql 설치 시 warning : # apt-get update
* 재부팅 후 mysql –u root –p 시 mysqld.sock 오류 : # service mysql restart
Controller All Node(그외 나머지 노드 전부)
apt-get -y install python-mysqldb mysql-server
nano /etc/mysql/my.cnf
-----------------------------------
[mysqld]
bind-address = 192.168.1.3 # Node 의 접근 허용 mysql 서버 IP
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
------------------------------------ # InnoDB 사용 및 UTF8 설정
# service mysql restart
# mysql_install_db  최초 DB 생성
# mysql_secure_installation : DB 보안 관련 스크립트 임 (모두 y)
- root password 변경 (n)
- DB 접근 anonymous 계정 삭제 (y)
- DB 원격 접근 차단 (?) y)
- test DB 와 access 삭제 (y)
- reload privilege table (y)
# sysv-rc-conf mysql on
apt-get -y install python-mysqldb
Basic Configuration
7. 우분투 기본환경
10. Openstack package (ubuntu 14.04)
: controller, network, compute, block
# apt-get –y update && apt-get –y dist-upgrade
# reboot
11. Messaging server (보통 controller에 설치)
: openstack은 message broker로 서비스간 동작/상태정보 교환
: 메시지 브로커로 rabbitMQ 사용
<controller>
#apt-get –y install rabbitmq-server
#rabbitmqctl change_password guest expernet
Keystone
Configure the Identity Service – keystone
- 사용자 및 API에 대한 인증 및 권한 설정 서비스
- 사용자에 대한 인증, 인증된 사용자에 대한 토큰 검증 및 관리, 이용 가능한 서비스 정보 제공,
규칙 기반의 권한설정 기능 등
keystone identity manager
Keystone
Configure the Identity Service – keystone
- Token backend : 사용자별 token 관리
- Catalog backend : 오픈스택의 모든 서비스의 end-point관리
- Policy backend : 테넌트, 사용자 계정 및 롤 등을 관리
- Identity backend를 통하여 사용자 인증을 관리
tenant, user, role
: 사용자일 경우 사용자 그룹인 tenant 사용자 계정정보인
user ID와 PW, 사용권한인 role을 가지게 됨.
서비스일 경우 (nova, glance, neutron 등 다른 서비스),
해당 서비스의 endpoint url을 등록.
- tenant에는 user가 포함
- user는 role을 가짐
- token을 발행할 때는 tenant와 user정보가 필요
- 서비스가 있고 각각의 서비스는 endpoint url을 가짐
- user는 endpoint-url을 통하여 서비스에 접근
<controller>
# apt-get –y install keystone
# vi /etc/keystone/keystone.conf
-----------------------------------------------
[database]
connection = mysql://keystone:expernet@controller/keystone
-----------------------------------------------
# rm /var/lib/keystone/keystone.db 기본생성되어있는 sqlite db삭제
# mysql –u root –p *keystone db 생성
>create database keystone;
>grant all privileges on keystone.* to ‘keystone’@’localhost’ identified by ‘expernet’;
>grant all privileges on keystone.* to ‘keystone’@’%’ identified by ‘expernet’;
>exit
#su –s /bin/sh –c “keystone-manage db_sync” keystone *identity service tables생성
#opens니 rand –hex 10  d81cde9be3e0cf6161b7
- keystone이 사용하는 공유암호키 지정을 위해 암호키 랜덤 생성.
- Admin_token에서 사용, keystone과 다른 서비스 간에 shared secret으로 사용됨
Keystone
<controller>
# vi /etc/keystone/keystone.conf
--------------------------------------------------------------------
[database]
admin_token = d81cde9be3e0cf6161b7 띄어쓰기 필수!
log_dir=/var/log/keystone
--------------------------------------------------------------------
# service keystone restart
# (crontab –l -u keystone 2>&1 | grep -q token_flush) ||  echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-
tokenflush.log 2>&1' >> /var/spool/cron/crontabs/keystone
 주기적으로 해당 파일을 업데이트 해줘야 하기 때문에 실행
※user, tenant, role 설정 필요. (service, endpoint가 이것을 사용)
# export OS_SERVICE_TOKEN=d81cde9be3e0cf6161b7
# export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
*관리자생성
# keystone user-create --name=admin --pass=expernet --email=admin@expernet.co.kr * admin Users 생성
# keystone role-create --name=admin * admin 사용자의 roile 생성
# keystone tenant-create --name=admin --description="Admin Tenant” * admin 사용자의 tenant 생성
# keystone user-role-add --user=admin --tenant=admin --role=admin * Users+Role+Tenant 조합
# keystone user-role-add --user=admin --tenant=admin --role=_member_ * admin에 _member_ Role 연결
*일반유저생성(_member_ Role만 허용)
# keystone user-create --name=demo --pass=expernet --email=demo@expernet.co.kr *user 계정 생성
# keystone tenant-create --name=demo --description="Demo Tenant"
# keystone user-role-add --user=demo --tenant=demo --role=_member_
*service tenant 생성
# keystone tenant-create --name=service --description="Service Tenant” *다른 서비스를 위해 필요한 service tenant
Keystone
<controller>
# keystone service-create --name=keystone --type=identity --description="OpenStack Identity“ *서비스 정의
# keystone endpoint-create --service-id=$(keystone service-list | awk '/ identity / {print $2}') --publicurl=http://controller:5000/v2.0 --
internalurl=http://controller:5000/v2.0 --adminurl=http://controller:35357/v2.0
**** 정상동작 검증 : 정상동작 시 값들이 화면에 출력
# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
# keystone --os-username=admin --os-password=expernet --os-auth-url=http://controller:35357/v2.0 token-get
# keystone --os-username=admin --os-password=expernet --os-tenant-name=admin --os-auth-url=http://controller:35357/v2.0 token-
get
***사용의 편의를 위해 시스템 환경변수 파일 미리 생성
# cd
# vi .bashrc
------------------------------------------
export OS_USERNAME=admin
export OS_PASSWORD=expernet
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controller:35357/v2.0
------------------------------------------
#source .bashrc *환경변수 적용
#export *변수확인
****토큰확인
#keystone token-get
#keystone user-list
#keystone user-role-list --user admin --tenant admin
Keystone
Install and Configure OpenStack Client
OpenStack command-line client는 간단한 명령어로 API 호출 할 수 있음.
OpenStack 를 통해서 여러 컴퓨터에 명령 내릴 수 있음.
OpenStack 과 client 는 RESTful APIs 를 통해서 명령 제어.
OpenStack Client
Service Client Package Description
Block Storage cinder python-cinderclient Create and manage volumes.
Compute nova python-novaclient Create and manage images, instances, and flavors.
Database Service trove python-troveclient Create and manage databases.
Identity keystone python-keystoneclient Create and manage users, tenants, roles, endpoints, and credentials.
Image Service glance python-glanceclient Create and manage images.
Networking neutron python-neutronclient
Configure networks for guest servers. This client was previously
called quantum.
Object Storage swift python-swiftclient
Gather statistics, list items, update metadata, and upload, download,
and delete files stored by the Object Storage service. Gain access to
an Object Storage installation for ad hoc processing.
Orchestration heat python-heatclient
Launch stacks from templates, view details of running stacks
including events and resources, and update and delete stacks.
Telemetry ceilometer python-ceilometerclient Create and collect measurements across OpenStack.
< controller , network, compute, block >
1.
#apt-get install python-novaclient
#apt-get install python-pip
# pip install python-PROJECTclient : 오른쪽의 각각 client들 설치
•참고
- Ugrade : pip install --upgrade python-PROJECTclient
-Remove : pip uninstall python-PROJECTclient
# vi 로 openrc파일 생성 후,
# source admin-openrc.sh * 적용
*PROJECT
ceilometer - Telemetry API
cinder - Block Storage API and extensions
glance - Image Service API
heat - Orchestration API
keystone - Identity service API and extensions
neutron - Networking API
nova - Compute API and extensions
swift - Object Storage API
trove - Database Service API
OpenStack Client
admin-openrc.sh
export OS_USERNAME=admin
export OS_PASSWORD=expernet
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controller:35357/v2.0
demo-openrc.sh
export OS_USERNAME=demo
export OS_PASSWORD=expernet
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://controller:35357/v2.0
Configure the Image Service - glance
<controller>
#apt-get –y install glance python-glanceclient
#vi /etc/glance/glance-api.conf
#vi /etc/glance/glance-registry.conf 두개의 파일 각각에
----------------------
[database]
connection = mysql://glance:expernet@controller/glance
-----------------------
#vi /etc/glance/glance-api.conf 메시지 브로커 설정
------------------------
[DEFAULT]
…
rpc_backend = rabbit (없는 필드 이므로 추가)
rabbit_host = controller
rabbit_password = expernet
# rm /var/lib/glance/glance.sqlite *sqlite db 패키지 삭제 (해당 파일 없었음 fine / -name glance.sqlite로 찾아도 없었음)
#mysql –u root –p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY ‘expernet’;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@’%' IDENTIFIED BY ‘expernet’;
exit
Glance
<controller>
#su –s /bin/sh –c “glance-manage db_sync” glance 서비스 테이블 생성
※keystone 인증 설정
# keystone user-create --name=glance --pass=expernet --email=glance@expernet.co.kr
# keystone user-role-add --user=glance --tenant=service --role=admin
※ 두개의 파일 각각에 keystone 설정 추가
# vi /etc/glance/glance-api.conf
# vi /etc/glance/glance-registry.conf
---------------------------------------
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = expernet
[paste_deploy]
flavor = keystone
---------------------------------------
Glance
<controller>
※ 서비스 정의, API Associate
#keystone service-create --name=glance --type=image --description="OpenStack Image Service“
#keystone endpoint-create --service-id=$(keystone service-list | awk '/ image / {print $2}') --publicurl=http://controller:9292 --
internalurl=http://controller:9292 --adminurl=http://controller:9292
# service glance-registry restart
# service glance-api restart
※ 이미지 다운로드 (cirros)
# mkdir /tmp/images
# cd /tmp/images/
# wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
※ 이미지서비스 업로드
# glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 --container-format bare --is-public True --progress < cirros-0.3.2-
x86_64-disk.img
# glance image-list
# rm –r /tmp/images
# file cirros-0.3.2-x86_64-disk.img file type 확인
! tip. 추가이미지 등록 – ubuntu
#source admin-openrc.sh
#wget http://uec-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
#glance image-create --name "ubuntu" --disk-format qcow2 
--container-format bare --is-public True --progress < trusty-server-cloudimg-amd64-disk1.img
Glance
Configure the compute Service - Nova
<노드별 설치되는 nova package>
*controller node
-nova-api
-nova-cert
-nova-conductor
-nova-consoleauth
-nova-novncproxy
-nova-schduler
-nova-client
*compute node
-nova-compute-kvm
-python-guestfs
: 가상인스턴스를 생성할때 파일을 마들어주는
파이썬 라이브러리
-qemu-kvm : 하이퍼바이저
<nova 아키텍쳐>
1. 데쉬보드나 커맨드 라인 명령어가 호출하는
nova-api로부터 시작
2. nova-api는 queue를 통해 nova-compute에게
인스턴스를 생성하라는 명령을 전달
3. 인스턴스 생성 명령을 받은 nova-compute는
하이퍼바이저 라이브러리를 통해 하이퍼바이저에게
인스턴스를 생성하라는 명령어를 다시 전달
4. 하이퍼바이저가 인스턴스를 생성
5. 생성된 인스턴스는 nova-console을 통해 사용자가 접근 가
능
Nova
큰 그림, 동작 구조
keystone
Nova-api
Nova-cert
Nova-consoleauth
Nova-compute
Nova-scheduler
Nova DB
Queue
Glance-api
swift
hypervisor
Neutron-agents
Cinder-api
Cinder-volumeCinder-scheduler
Glance-registry
Neutron-plugins
Neutron DB
Neutron-server
Cinder DB
horizon
Controller node
Compute node
Network node
Block storage
12
34
5
6
7
8
9
10
11
12 13
1415
glance DB
Glance storage
adapter
Nova
1. Horizon을 통해 request가 들어모녀 keystone에서 토큰 획득
2. Nova-api에게 해당 토큰과 request가 저전달
3. nova-api는 다시 keystone 해당 토큰이 진짜인지 재확인
4. 진짜인지 확인되면 request를 받아들임
5. Nova-api는 큐를 통해 스케줄러에게 명령을 전달
6. Nova-scheduler는 스케줄링 정책에 의해 컴퓨팅 노드를 선택함
7. Nova-compute는 요청을 받아 가상머신을 프로비져닝함
8. 가상머신의 이미지를 만들기 위해 glance에게 이미지 요청
9. Glance는 swift에 저장된 이미지를 다운
glance storage adapter는 이미지 저장 검색 삭제 확인등을
수행하기 위해 글렌스와 스토리지간의 인터페이스 제공
- glance DB에는 이미지 관련 정보를 저장한다
- glance-registry는 이미지 관련 메타데이터를
카탈로그처럼 저장하고 검색한다.
10. Nova-api는 인스턴스에게 네트워크를 할당하기위해
neutron 에게 요청
11. Neutron에서는 agent와 plugin으로
네트워크를 사용할수 있도록 연계
12. 같은내용
neutron-server 에서 api를 제공하여 요청을
neutron-plugin으로 전달하기도 함
13. 블록스토리지가 필요하다면 cinder-api를 통해 요청
14. 요청을 받은 cinder-volume은 database에 그 상태를 읽고 들어온 요청을 처리
- database에는 어떤 볼륨이 어떤 인스턴스와 연결이 되어있는지와 cinder-scheduler의 정보가 상세히 기록
- cinder-scheduler는 요청을 받은 블록 서비스를 스케쥴링하고 전달하는 역할. 볼륨 생성 요청이 왔을때 어떤 노드가 적당한지 선택해줌
Nova
<controller>
※ controller에 compute 서비스 설정
# apt-get -y install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient
# vi /etc/nova/nova.conf
---------------------------------------------------------------------------------
[database]
connection = mysql://nova:expernet@controller/nova
[DEFAULT]
...
rpc_backend = rabbit *메시지 브로커 설정
rabbit_host = controller
rabbit_password = expernet
my_ip = 192.168.1.3 *MgMt ip 설정
vncserver_listen = 192.168.1.3
vncserver_proxyclient_address = 192.168.1.3
glance_host = controller
---------------------------------------------------------------------------------
# rm /var/lib/nova/nova.sqlite *sqlite db패키지 삭제
Nova
<controller>
# mysql -u root -p
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY ‘expernet’;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY ‘expernet’;
mysql> exit
# su -s /bin/sh -c "nova-manage db sync" nova 서비스 테이블 생성
※ 키스톤 인증 설정
# keystone user-create --name=nova --pass=expernet --email=nova@expernet.co.kr
# keystone user-role-add --user=nova --tenant=service --role=admin
※ 키스톤 설정 추가
# vi /etc/nova/nova.conf
---------------
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = expernet
---------------------
Nova
<controller>
※ compute service 정의
# keystone service-create --name=nova --type=compute --description="OpenStack Compute“
# keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') 
--publicurl=http://controller:8774/v2/%(tenant_id)s 
--internalurl=http://controller:8774/v2/%(tenant_id)s 
--adminurl=http://controller:8774/v2/%(tenant_id)s
# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart
# nova image-list
*nova-api 서비스가 제대로 시작되지 않고 죽음
/var/log/nova/nova-api.log에서 oslo.rootwrap 어쩌고~ 오류 뱉어냄
# pip install --upgrade oslo.rootwrap
서비스 restart 후, status로 상태 확인
Nova
* Controller (instance 요청)  Compute에서 요청을 받아 처리
•현재 kvm hypervisor 사용
•현재 단일 compute노드 사용이 아니며 다른 compute node 확장이 쉽다.
<compute>
# apt-get -y install nova-compute-kvm python-guestfs
WARNING nova.virt.libvirt.utils [...] admin admin] systool is not installed 에러 발생 시 # apt-get -y sysfsutils
※ 커널설정 (linux kernel은 hypervisor서비스를 제한하므로 해제가 필요함)
#dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)
※ kernel 모든 재설정 활성화를 위해 아래 파일 생성
# touch /etc/kernel/postinst.d/statoverride
# vi /etc/kernel/postinst.d/statoverride
---------------------------------------------------------------------------------------------
#!/bin/sh
version="$1"
# passing the kernel version is required
[ -z "${version}" ] && exit 0
dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}
---------------------------------------------------------------------------------------------
# 해당 파일을 실행가능하게 설정
chmod +x /etc/kernel/postinst.d/statoverride
Nova
<compute>
# vi /etc/nova/nova.conf
[DEFAULT]
...
auth_strategy = keystone
rpc_backend = rabbit *메세지브로커
rabbit_host = controller
rabbit_password = expernet
my_ip = 192.168.1.5 *remote console access 설정
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 192.168.1.5
novncproxy_base_url = http://192.168.1.53:6080/vnc_auto.html
(위 10.0.0.11에 controller 로 작성 시 any 유저는 DNS 변환 처리 못하
면 접근 안됨)
glance_host = controller
[database]
# The SQLAlchemy connection string used to connect to the
database
connection = mysql://nova:expernet@controller/nova
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = expernet
# egrep -c '(vmx|svm)' /proc/cpuinfo
0 : CPU 가상화 지원 불가, KVM 대신 libvirt to QEMU 사용 필요
1~ : CPU 가상화 지원 OK
지원불가시,
vi /etc/nova/nova-compute.conf
----------------------------------
[libvirt]
...
virt_type = qemu
-----------------------------------
# rm /var/lib/nova/nova.sqlite
# service nova-compute restart
# sysv-rc-conf nova-compute on
※최종확인
<controll node>
# source admin-openrc.sh
# nova service-list (iptables -F 로 정책 삭제하지 않으면 서비스 활성
화 보이지 않음, Status UP 되어야함)
# nova image-list
Nova
Add a networking Service - Neutron
※ nova-network : 네트워크 서비스로 ip를 할당할 수 있는 개수가 제한
Neutron : 다양한 SDN 스위치 플러그인을 연동하여 사용 가능.
VLAN, 터널링 등 네트워킹 방식을 지원(기본적으로 ML2플러그인 사용)
Neutron
**** ML2 타입 드라이버 (Type Drivers)
-VLAN (Virtual LAN) 하나의 물리 스위치에서 가상으로 나누어 랜을 구성
-
- ◀ VLAN 모드의 컴퓨트 노드에 생성된 VM 구성
- GRE (Generic Route Encapsulation)
: 인터넷 프로토콜 위에 가상 PTP(point to Point)를 제외한 다양한 네트워크 레이어 프로토콜 범위를 캡슐 화 할 수 있는 터널링 프로토콜
: 오픈스택 neutron을 gre모드로 설치했을 경우 컴퓨트 노드에 생성된 VM은 다른 컴퓨트 노드와 통신을 할 경우 터널링 된 경로로 패킷을 주고받음
Neutron
**** ML2 타입 드라이버 (Type Drivers)
-VxLAN (Virtual Extensible LAN)
물리네트워크에 연결된 다른 컴퓨트 노드의 VM끼리 통신할 경우 새로 올려 놓은 도화지 위에 가상의 터널을 그리고 그 터널을 통해서 통신을
- 메커니즘 드라이버 (Mechanism Drivers)
여러 컴퓨트 노드들이 다른 agent를 사용할 경우(예, Linuxbridge, openvswitch) 연동 할 수 없던 문제를 해결하고자 나온 드라이버
Neutron
<노드 별 설치되는 neutron package>
컨트롤러 노드
- Neutron Server
- Neutron Plugin Agent
- 이더넷 네트워크 인터페이스 2개 필요 (관리용 네트워크, API 네트워크)
컴퓨트 노드
- Neutron Plugin Agent
- L2 Layer Agent OpenvSwitch
- 네트워크 노드와 컴퓨트 노드 간의 데이터 통신을 위한 데이터 네트워크 필요
네트워크 노드
- Neutron 플러그인 에이전트
- L3 에이전트
- DHCP 에이전트
- OpenvSwitch
- 이더넷 네트워크 인터페이스 3개 필요(관리용, 데이터, 외부)
< neutron 논리 아키텍쳐>
1. 사용자는 Neutron API를 이용하여 Neutron 서버로 IP를 할당을 요청합니다.
2. Neutron 서버는 들어온 요청을 Queue로 다시 요청합니다.
3. Queue는 Neutron 에이전트와 플러그인으로 IP 할당 지시를 내립니다.
4. Neutron 에이전트와 플러그인은 지시 받은 작업을 데이터베이스에 저장합니다.
5. Neutron 에이전트는 네트워크 프로바이더에게 작업을 지시합니다.
6. 그리고, 수시로 작업상태를 데이터베이스에 업데이트합니다.
7. 이제 할당된 IP를 인스턴스에서 사용할 수 있습니다.
* Neutron이 네트워킹 기능을 하는 것이 아니라 Neutron과 연결된
다른 네트워크 프로바이더에 의해 네트워킹 된다는 사실
*Neutron이 지원하는 플러그인의 종류는 많지만
거의 “ML2” (Modular Layer 2) Plug-in를 사용
Neutron
Ubuntu 14.04 Server ubuntu
Fixed IP Range
tenant : 192.168.100.0/24
Floating IP Range
192.168.1.0/24
Public Gateway
192.168.1.254
Floating Allocation IP Range
Start : 192.168.1.118
End : 192.168.1.126
Internet
AP
NAT
10.0.0.1
192.168.1.254
192.168.1.28
Tenant Private Net
192.168.100.0/24
Tenant Private Net
192.168.200.0/24
br-ex
br-int
192.168.1.127
192.168.1.119 qg~ 192.168.1.120 qg~
192.168.100.1 qg~ 192.168.200.1 qg~
VM VM VM VM VM VM
10.0.0.21
HOST IP 10.0.0.21
OPENSTACK
nova neutron keystone cinder
swift ML2 KVM glance
ovs
heat
Neutron
# Neutron Architecture
<controller>
# mysql -u root -p
mysql> CREATE DATABASE neutron;
mysql> GRANT ALL PRIVILEGES ON neutron.* TO
neutron'@'localhost‘ IDENTIFIED BY ‘expernet';
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%'
IDENTIFIED BY ‘expernet ';
mysql> exit
※identity
#keystone user-create --name neutron --pass expernet --email
neutron@expernet.co.kr
# keystone user-role-add --user neutron --tenant service --role admin
# keystone service-create --name neutron --type network 
--description "OpenStack Networking“
# keystone endpoint-create --service-id $(keystone service-list | awk '/
network / {print $2}') --publicurl http://controller:9696 --adminurl
http://controller:9696 --internalurl http://controller:9696
# apt-get -y install neutron-server neutron-plugin-ml2
※ nova-network : 네트워크 서비스로 ip를 할당할 수 있는 개수가 제한
Neutron : 다양한 SDN 스위치 플러그인을 연동하여 사용 가능.
VLAN, 터널링 등 네트워킹 방식을 지원(기본적으로 ML2플러그인 사용)
# vi /etc/neutron/neutron.conf
----------------
[database]
...
connection = mysql://neutron:expernet @controller/neutron
[DEFAULT]
...
auth_strategy = keystone
…
rpc_backend = neutron.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_password = expernet
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://controller:8774/v2
nova_admin_username = nova
nova_admin_tenant_id = 09cfe23d95184b97b49953d735ce163f
 keystone의 service tenant의 ID (# keystone tenant-get service)
nova_admin_password = krdag
nova_admin_auth_url = http://controller:35357/v2.0
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
verbose = True
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_host = controller
auth_protocol = http
auth_port = 35357
admin_tenant_name = service
admin_user = neutron
admin_password = expernet
-------------------
Neutron
<controller>
※ ML2 plug-in 설정
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
----------------------------------------------------------------------
[ml2]
...
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch
[ml2_type_gre]
...
tunnel_id_ranges = 1:1000
[securitygroup]
...
firewall_driver =
neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
----------------------------------------------------------------------
*ml2 플러그인은 instance 네트워킹을 위해야 open vSwitch
mechanism을 사용함.
* Controller는 instance 네트워크 트래픽을 처리하지 않기 때문에 OVS
agent와 service가 필요없음.
※ nova가 legacy networking 사용하므로 neutron으로 설정
# vi /etc/nova/nova.conf
----------------------------------------------------------------------
DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
neutron_url = http://controller:9696
neutron_auth_strategy = keystone
neutron_admin_tenant_name = service
neutron_admin_username = neutron
neutron_admin_password = expernet
neutron_admin_auth_url = http://controller:35357/v2.0
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
security_group_api = neutron
----------------------------------------------------------------------
# service nova-api restart
# service nova-scheduler restart
# service nova-conductor restart
# service neutron-server restart
Neutron
<network>
※ Instance(VM)의 mac 허용을 위한 설정(RPF filter 기능 disble)
※ IP 패킷 라우팅(L3 허용)
# vi /etc/sysctl.conf
----------------------------------------------------------------------
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
----------------------------------------------------------------------
# sysctl –p *적용
# apt-get -y install neutron-plugin-ml2 neutron-plugin-openvswitch-
agent neutron-l3-agent neutron-dhcp-agent
* Kernel 3.11 이상은 openvswitch-datapath-dkms 필요 없음
# vi /etc/neutron/neutron.conf
-------------------------
[DEFAULT]
...
auth_strategy = keystone * keystone 인증설정
rpc_backend = neutron.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_password = expernet * 메시지 브로커 설정
core_plugin = ml2 * ml2 플러그인 설정
service_plugins = router
allow_overlapping_ips = True
verbose = True
[keystone_authtoken] * keystone 인증설정
...
auth_uri = http://controller:5000
auth_host = controller
auth_protocol = http
auth_port = 35357
admin_tenant_name = service
admin_user = neutron
admin_password = expernet
Neutron
<network>
※ L3 Agent 설정
-Layer-3 agent 는 VM(Instance)를 위해 Routing 기능 제공
# vi /etc/neutron/l3_agent.ini
----------------------------------------------------------------------
[DEFAULT]
…
interface_driver =
neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True
verbose = True
----------------------------------------------------------------------
※ DHCP Agent 설정
-DHCP agent 는 VM을 위해 DHCP 서비스를 제공
# vi /etc/neutron/dhcp_agent.ini
----------------------------------------------------------------------
[DEFAULT]
…
interface_driver =
neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True
verbose = True
----------------------------------------------------------------------
※ metadata Agent 설정
- metadata agent 는 remote 에서 VM(Instance)에 접근 시 인증 정보를 제
공, metadata_proxy_shared_secret 경우는 Controller Node와 Network
Node 에 Shared 암호 설정
# vi /etc/neutron/metadata_agent.ini
----------------------------------------------------------------------
[DEFAULT]
…
auth_url = http://controller:5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = expernet
nova_metadata_ip = controller
metadata_proxy_shared_secret = expernet
----------------------------------------------------------------------
※ Controller Node에 Nova metadata 설정
# vi /etc/nova/nova.conf
----------------------------------------------------------------------
[DEFAULT]
...
service_neutron_metadata_proxy = true
neutron_metadata_proxy_shared_secret = expernet
----------------------------------------------------------------------
# service nova-api restart
Neutron
<network>
※ ML2 plug-in 은 VM(Instance) networking 을 위하여 Open vSwitch(OVS) mechanism(agent)를 사용합니다.
[ovs]에 local_ip 는 Network node 와 Compute node 간 VM 통신을 위한 NIC IP(10.0.1.21)
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
------------------------------------------------------------------------------------------
[ml2]
...
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch
[ml2_type_gre]
...
tunnel_id_ranges = 1:1000
[ovs]
local_ip = 10.0.1.21
tunnel_type = gre
enable_tunneling = True
[securitygroup]
...
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
------------------------------------------------------------------------------------------
Neutron
<network>
※ OVS(Open vSwitch Service)는 VM(Instance)를 위한 가상 네트워크 framework 제공함
- br-int 인터페이스 - 내부 Instance 트래픽 처리
- br-ext 인터페이스 - 외부 Instance 트래픽 처리, br-ex 는 외부 접근을 할 수 있는 포트가 필요
# service openvswitch-switch restart * OVS service 재시작
# ovs-vsctl add-br br-int * int bridge 추가
# ovs-vsctl add-br br-ex * ext bridge 추가
# ovs-vsctl add-port br-ex eth2*외부 NIC(eth2)와 port bridge 설정
# ethtool -K eth1 gro off * 내부/외부 NIC 비활성화 Generic Receive Offload (GRO)
# ethtool -K eth2 gro off
# service neutron-plugin-openvswitch-agent restart
# service neutron-l3-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart
※ neutron-plugin-openvswitch-agent 서비스가 제대로 시작되지 않고 죽음
 /var/log/neutron에서 관련 로그 확인 : oslo.rootwrap 에서 오류 뱉어냄…..
# pip install --upgrade oslo.rootwrap
서비스 restart 후, status로 상태 확인
Neutron
<compute>
※ Instance(VM)의 mac 허용을 위한 설정(RPF filter 기능 disble)
# vi /etc/sysctl.conf
----------------------------------------------------------------------
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
----------------------------------------------------------------------
# sysctl –p 적용
# apt-get -y install neutron-common neutron-plugin-ml2
neutron-plugin-openvswitch-agent
# vi /etc/neutron/neutron.conf
----------------------------------------------------------------------
[DEFAULT]
...
auth_strategy = keystone * keystone 인증
[keystone_authtoken] * keystone 인증
auth_uri = http://controller:5000
auth_host = controller
auth_protocol = http
auth_port = 35357
admin_tenant_name = service
admin_user = neutron
admin_password = expernet
rpc_backend = neutron.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_password = expernet * 메세지브로커
core_plugin = ml2 * ml2플러그인
service_plugins = router
allow_overlapping_ips = True
verbose = True
----------------------------------------------------------------------
※ ML2 plug-in 은 VM(Instance) networking 을 위하여 Open vSwitch(OVS)
mechanism(agent)를 사용
- [ovs]에 local_ip 는 Network node 와 Compute node 간 VM 통신을 위한
NIC IP(10.0.1.31)
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
------------------------------------------------------------------------------
[ml2]
...
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch
[ml2_type_gre]
tunnel_id_ranges = 1:1000
[ovs]
local_ip = 10.0.1.31
tunnel_type = gre
enable_tunneling = True
[securitygroup]
firewall_driver =
neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
------------------------------------------------------------------------------
Neutron
<compute>
※ br-int 인터페이스 : 내부 Instance 트래픽 처리
# service openvswitch-switch restart
# ovs-vsctl add-br br-int
※ 기본 nova 가 legacy networking 사용하므로, Neutron 으로 설정 필요
# /etc/nova/nova.conf
--------------------------------------------------------------------------------------------------------------------------------------------------
[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
neutron_url = http://controller:9696
neutron_auth_strategy = keystone
neutron_admin_tenant_name = service
neutron_admin_username = neutron
neutron_admin_password = expernet
neutron_admin_auth_url = http://controller:35357/v2.0
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
security_group_api = neutron
--------------------------------------------------------------------------------------------------------------------------------------------------
# service nova-compute restart
# service neutron-plugin-openvswitch-agent restart
※ neutron-plugin-openvswitch-agent 서비스가 제대로 시작되지 않고 죽음
/var/log/neutron에서 관련 로그 확인 oslo.rootwrap 에서 오류 뱉어냄…..
# pip install --upgrade oslo.rootwrap
서비스 restart 후, status로 상태 확인
Neutron
# 첫 VM(Instance)가 생성 전에 Networking Infra 를 설정이 필요
※ 미리 Iptables 정책 삭제 할 것(Controller/Network/Compute1 Node 전부)
# iptables –F
※ external network 은 외부와 연결됨. VM(Instance)는 NAT를 통해서 외부 연결됨.
Floating IP와 Security group rules 를 통해서 각각 VM을 연결 할 수 있음.
admin tenant 가 이 외부 연결 네트워크를 소유하며 multiple tenants 이 사용 가능하게 공유해야 함.
 접근&시큐리티 메뉴 > 시큐리티그룹 > 해당 룰 선택 > ALL TCP / ALL ICMP / ALL SSH 추가
 접근&시큐리티 메뉴 > 유동 IP > 프로젝트에 IP 할당
 인스턴스에 유동 IP 연결
<controller>
※ 네트워크 생성 및 서브넷 생성
# source admin-openrc.sh
# neutron net-create ext-net --shared --router:external=True
# neutron subnet-create ext-net --name ext-subnet 
--allocation-pool start=192.168.1.118,end=192.168.1.126 --disable-dhcp --gateway 192.168.1.254 192.168.1.0/24
※ dns-nameservers 업데이트 : # neutron subnet-update ext-net –dns_nameservers 168.126.63.1 8.8.8.8
※ external 은 기본적으로 dhcp disable 되어야 하며, 현재 VMnet0 환경인 192.168.1.0/24 중 dhcp ip range는 118~126, Gw는 .1 지정함
VMnet0은 자신의 VMwareWorkstation 의 실제 LAN의 subnet 임(Bridge 이므로)
※ FLOATING_IP_START & FLOATING_IP_END : 외부 network 의 IP 사용 범위
Replace EXTERNAL_NETWORK_CIDR : 외부 network subnet
Replace EXTERNAL_NETWORK_GATEWAY : 외부 network gateway IP 주소
Fixed IP Range VM 생성시 할당해 주는 사설IP주소 범위, 내부 통신만 가능
Floating IP Range VM을 외부에서 접속 할 수 있도록 할당해주는 공인 IP주소 범위
qbr 가상라우터
qvb 가상브릿지
qvo 가상네트워크
vnet 가상인스턴스
Neutron
※ tenant network 은 내부 VM(Instance)의 network 임, tenant 별 network 는 분리됨
<controller>
※ tenant(internal) network 생성
# source demo-openrc.sh
# neutron net-create demo-net : 네트워크생성
# neutron subnet-create demo-net --name demo-subnet --gateway 192.168.100.1 192.168.100.0/24 : 서브넷생성
※ tenant network 192.168.100.0/24, Gw는 .1 지정함
# neutron router-create demo-router : 라우터생성
# neutron router-interface-add demo-router demo-subnet : 라우터에 demo tenant 연결
# neutron router-gateway-set demo-router ext-net : 라우터에 external network 에 gateway 설정
Neutron
※확인
 controller node에서 해당 port가 열려있는지 확인
# neutron port-list
# neutron port-show PORTID : Status가 활성화 되어있어야함
 Hypervisor(ESXi 등)에서 VM이 구동 시 vSwitch에 permit promiscuous mode 허용 해야함
위에서 할당 한 Floating IP주소 중 첫번째 IP인 192.168.1.118로 ping 됨 OK
!! 외부라우터 port의 status가 DOWN !!
: I booted an Ubuntu Havana system with OVS 1.10.2 and found one problem in this area here. I have no idea what the purpose of t
hese lines is:
https://github.com/openstack/neutron/blob/60cb0911712ad11688b4d09e5c01ac39c49f5aea/neutron/plugins/openvswitch/agent/ovs_n
eutron_agent.py#L666-L671
but on this system `sudo ovs-vsctl br-get-external-id br-ex` returns nothing, and so br-ex is excluded from the list of ancillary bridges
and so the gateway port always shows as DOWN.
A workaround is to set the bridge-id to br-ex and restart the L2 agent:
$ sudo ovs-vsctl br-set-external-id br-ex bridge-id br-ex
$ sudo service neutron-plugin-openvswitch-agent restart
Neutron
Add the Dashboard - Horizon
<compute>
# apt-get -y install apache2 memcached libapache2-mod-wsgi openstack-dashboard
# apt-get remove --purge openstack-dashboard-ubuntu-theme *네트워크 map 변환을 위한 삭제
※/etc/memcached.conf 파일과 /etc/openstack-dashboard/local_settings.py 의 CACHES의 Location/Port를 서로 동일하게 설정
 별도 수정 할 내용 없음. 하지만, CACHES 하단부에 Tap 으로 띄어진 곳 잘 확인할것 (Python 형식 이므로)
# vi /etc/openstack-dashboard/local_settings.py
-----------------------------------------------------------------------------------------------------------------------------------------------------------
CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : '127.0.0.1:11211'
}
}
OPENSTACK_HOST = "controller"
-----------------------------------------------------------------------------------------------------------------------------------------------------------
# service apache2 restart
#service memcached restart
※ http://controller/horizon 접근
※ 설치 시 중간에 에러 발생 및 대처
•Starting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.0.11.
• Set the 'ServerName' directive globally to suppress this message
#vi /etc/apache2/apache2.conf
-------------------------------------------------------------------------
ServerName controller
-------------------------------------------------------------------------
#service apache2 restart
Horizon
Add the Block Storage Service - cinder
<cindenr 논리 아키텍쳐>
: Nova에서 생성된 인스턴스에 확장하여 사용할 수 있는 저장 공간을
생성 및 삭제하고 인스턴스에 연결할 수 있는 기능을 제공
- Cinder API를 통해 볼륨을 추가 및 삭제
- 신더 볼륨은 볼륨을 실제로 생성하고 데이터베이스에 볼륨정보를 업데이트.
- Cinder는 물리 하드 디스크를 LVM(Logical Volume Manager)으로 설정
- 설정한 LVM은 cinder.conf와 nova.conf의 환경설정을 통하여 신더 볼륨을 할당
- 신더 API를 통해 생성된 볼륨은 단일 인스턴스 또는 여러 인스턴스에 할당
<cinder가 제공하는 block starage드라이버>
<LVM>
: LVM은 Logical Volume Manager의 약자로
하드 디스크를 파티션 대신 논리 볼륨으로 할당하고,
다시 여러 개의 디스크를 좀 더 효율적이고 유연하게
관리할 수 있는 방식
Cinder
- 블록스토리지가 필요하다면 cinder-api를 통해 요청
- 요청을 받은 cinder-volume은 database에 그 상태를 읽고
들어온 요청을 처리
- database에는 어떤 볼륨이 어떤 인스턴스와 연결이 되어있는지와
cinder-scheduler의 정보가 상세히 기록
- cinder-scheduler는 요청을 받은 블록 서비스를
스케쥴링하고 전달하는 역할.
볼륨 생성 요청이 왔을때 어떤 노드가 적당한지 선택해줌
※ swift와 cinder의 차이!
Cinder
<controller>
# apt-get -y install python-dev
# pip install –-upgrade oslo.messaging
# pip install –-upgrade oslo.rootwrap
# apt-get -y install cinder-api cinder-scheduler
# vi /etc/cinder/cinder.conf
-----------------------------------------------------------------------------------------------------------------------------------
[database]
connection = mysql://cinder:expernet@controller/cinder
-----------------------------------------------------------------------------------------------------------------------------------
# mysql -u root -p
mysql> CREATE DATABASE cinder;
mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'krdag';
mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'krdag';
mysql> exit
# su -s /bin/sh -c "cinder-manage db sync" cinder  오류(로그 확인, olso.message관련)인 경우, pip install –upgrade oslo.messaging
# keystone user-create --name=cinder --pass=expernet --email=cinder@expernet.co.kr
# keystone user-role-add --user=cinder --tenant=service --role=admin
# vi /etc/cinder/cinder.conf
-----------------------------------------------------------------------------------------------------------------------------------
[DEFAULT]
rpc_backend = cinder.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = expernet
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = expernet
-----------------------------------------------------------------------------------------------------------------------------------
Cinder
<controller>
※ Block Service 서비스 정의/Endpoint 정의
# keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage"
# keystone endpoint-create --service-id=$(keystone service-list | awk '/ volume / {print $2}') 
--publicurl=http://controller:8776/v1/%(tenant_id)s 
--internalurl=http://controller:8776/v1/%(tenant_id)s 
--adminurl=http://controller:8776/v1/%(tenant_id)s
※ Block Service Version 2 서비스 정의/Endpoint 정의
# keystone service-create --name=cinderv2 --type=volumev2 --description="OpenStack Block Storage v2"
# keystone endpoint-create 
--service-id=$(keystone service-list | awk '/ volumev2 / {print $2}')
--publicurl=http://controller:8776/v2/%(tenant_id)s 
--internalurl=http://controller:8776/v2/%(tenant_id)s 
--adminurl=http://controller:8776/v2/%(tenant_id)s
# service cinder-scheduler restart
# service cinder-api restart
Cinder
<block1>
* Chapter 2 에 기본 환경 설정 및 block1 - 10.0.0.41 추가
* NTP 설정, LVM 설치
•Cinder 연결된 외장 스토리지(iSCSI Target)와 Nova Compute의 VM(iSCSI initiator) 간 iSCSI로 연결
# apt-get -y install lvm2
# fdisk -l *현재 disk정보 확인
# pvcreate /dev/sdb * LVM의 Disk 전체를 1개의 Physical Volumes(PV) 생성
# pvcreate /dev/sdc
# pvdisplay
# vgcreate cinder-volumes /dev/sdb * Volume Group(VG) 생성
# pvscan
# apt-get –y install python-dev
# pip install --upgrade oslo.messaging
# pip install --upgrade oslo.rootwrap
# apt-get -y install cinder-volume python-mysqldb
# apt-get -y install qemu-utils * Ubuntu 이미지 Block Storage에 올리기 위해 필요한 패키지 설치
ESXi에서 기본으로 잡은 하드디스크에 lvm으로 pv를 생성할 수 없었음.
아래의 방법으로 대신 함.
- Block1 VM에 새 하드디스크를 추가 (40G)
# fdisk –l : 새로 붙인 디스크 확인
# fdisk /dev/sdb > n > p > 1 > (enter) > (enter) > p > w : 파티션 작업
# mkfs.ext4 /dev/sdb1 : 포맷
# ls –l /dev/disk/by-uuid/ : uuid 확인
# mount –a : mount
# df –h : 확인
※ 추가 내용은 뒤~~~~ 에…
Cinder
<block1>
※ 부팅 볼륨을 만들 수 있는 이미지 서비스를 위해 Block 설정 (glance_host)
# vi /etc/cinder/cinder.conf
[DEFAULT]
rpc_backend = cinder.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = expernet
glance_host = controller
[database]
connection = mysql://cinder:expernet@controller/cinder
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = expernet
# service cinder-volume restart
# service tgt restart : tgt = iSCSI Target 서비스
Cinder
※ 새 볼륨 생성 테스트
<controller>
# source demo-openrc.sh
# cinder create --display-name myVolume 1
# cinder list
※ 대쉬보드에서도 확인 가능
생성된 볼륨에 glance(Ubuntu)로 VM 생성
대쉬보드에서 연결 or VM 생성 시 VM 생성하면서 연결 가능
Cinder
Add the Orchestration Service - heat
Private나 public이나 클라우드 환경에서 가상머신 하나를 프로비져닝 하기 위해선 여러단계를 거친다.
- Heat, 이런 과정을 자동화하여 몇번의 클릭으로 쉽게 인프라를 배포할 수 있도록 도와주는 프로젝트.
 마치 오케스트라를 지휘하듯, 템플릿이라고 불리는 틀을 미리 만들어 놓고 이를 기반으로 자원을 배치, 관리, 조합하는 자동화된 과정
“서비스 오토메이션” : IaaS 개념의 인프라도 물론이지만,
배포 이후 특정 서비스 혹은 어플리케이션 작업도 자동화의 일환으로 지정가능
“오토스케일링” :
세일로미터와 연계하여 특정 사용량을 넘어가면
인스턴스를 하나 더 자동으로 배포해! 등의 오토스케일링 기능 가능
<구성요소>
- Heat CLI Tool
: heat툴은 AWS Cloud Formation API와 Heat API가 서로 커뮤니케이션 가능한 CLI임
- Heat-api
: rest api를 제공. 요청을 heat엔진으로 보냄
- Heat-api-cfn
: AWSCloudFormation과 호환되는 AWS타입의 Query API를 제공.
: Native heat template와 함께 AWS CloudFormation template과도 호환
- Heat-engine
: 템플릿을 만들고, 코어 오픈스택 서비스와 서로 커뮤니케이션하여
오케스트레이션 핵심작업을 진행하는 엔진
Heat
<controller>
# apt-get -y install heat-api heat-api-cfn heat-engine
# vi /etc/heat/heat.conf
-------------------------------------------------------------------------------------------------------------------------------
[database]
connection = mysql://heat:expernet@controller/heat
-------------------------------------------------------------------------------------------------------------------------------
# rm /var/lib/heat/heat.sqlite
# mysql -u root -p
mysql> CREATE DATABASE heat;
mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' IDENTIFIED BY ‘expernet’;
mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' IDENTIFIED BY ‘expernet’;
mysql> exit
# su -s /bin/sh -c "heat-manage db_sync" heat : 서비스table생성. 단, Ignore DeprecationWarning errors 무시해도 됨
# vi /etc/heat/heat.conf
-------------------------------------------------------------------------------------------------------------------------------
log_dir=/var/log/heat
rabbit_host = controller
rabbit_password = expernet
-------------------------------------------------------------------------------------------------------------------------------
※ HEAT 유저 인증 및 service tenant 와 heat 유저에 admin role 할당
# keystone user-create --name=heat --pass=expernet --email=heat@expernet.co.kr
# keystone user-role-add --user=heat --tenant=service --role=admin
Heat
<controller>
※ 인증 설정 내용 추가
# vi /etc/heat/heat.conf
-------------------------------------------------------------------------------------------------------------------------------------
[keystone_authtoken]
auth_host = controller
auth_port = 35357
auth_protocol = http
auth_uri = http://controller:5000/v2.0
admin_tenant_name = service
admin_user = heat
admin_password = krdag
[ec2authtoken]
auth_uri = http://controller:5000/v2.0
-------------------------------------------------------------------------------------------------------------------------------------
※ Heat 와 CloudFormation APIs 를 Identity service 에 등록 및 Endpoint 등록
# keystone service-create --name=heat --type=orchestration --description="Orchestration"
# keystone endpoint-create --service-id=$(keystone service-list | awk '/ orchestration / {print $2}') 
--publicurl=http://controller:8004/v1/%(tenant_id)s 
--internalurl=http://controller:8004/v1/%(tenant_id)s 
--adminurl=http://controller:8004/v1/%(tenant_id)s
# keystone service-create --name=heat-cfn --type=cloudformation --description="Orchestration CloudFormation"
# keystone endpoint-create 
--service-id=$(keystone service-list | awk '/ cloudformation / {print $2}') 
--publicurl=http://controller:8000/v1 
--internalurl=http://controller:8000/v1 
--adminurl=http://controller:8000/v1
Heat
<controller>
※ heat_stack_user 에 대한 role 를 생성함
# keystone role-create --name heat_stack_user
※ The metadata and waitcondition servers' URLs 설정
# vi /etc/heat/heat.conf
----------------------------------------------------------------------------------------------------------------------------------------------
[DEFAULT]
heat_metadata_server_url = http://192.168.1.3:8000
heat_waitcondition_server_url = http://192.168.1.3:8000/v1/waitcondition
----------------------------------------------------------------------------------------------------------------------------------------------
# service heat-api restart
# service heat-api-cfn restart
# service heat-engine restart
Heat
<controller>
※ heat은 HOT Template language를 통해 cloud resources를 생성
-One-file template system에 다른 구성 요소를 통합
-Template를 통하여 OpenStack resource types, such as instances, floating IPs, volumes, security groups, users 를 생성 가능함
- 추가로 고급 기능인 instance high availability, instance auto-scaling, and nested stacks 기능을 제공
# source demo-openrc.sh
# vi test-stack.yml : templete 파일 생성(yml형식이므로 들여쓰기 잘하기!)
heat_template_version: 2013-05-23
description: Test Template
parameters:
ImageID:
type: string
description: Image use to boot a server
NetID:
type: string
description: Network ID for the server
resources:
server1:
type: OS::Nova::Server
properties:
name: "Test server"
image: { get_param: ImageID }
flavor: "m1.tiny"
networks:
- network: { get_param: NetID }
outputs:
server1_private_ip:
description: IP address of the server in the private network
value: { get_attr: [ server1, first_address ] }
※ 템플릿 파일로 부터
Stack(지정 자원-컴퓨터/네트워크 등-의 집합)를 생성
# NET_ID=$(nova net-list | awk '/ demo-net / { print $2 }')
# heat stack-create -f test-stack.yml 
-P "ImageID=cirros-0.3.2-x86_64;NetID=$NET_ID" testStack
# heat stack-list : CLI 확인
※ 데쉬보드 확인
: 프로젝트 > Ochestration > stack
Heat
미터링 : 사용자들이 쓴 컴퓨터 파워, 스토리지. 네트워크 등의 사용량 데이터를 모으는 과정
해당 데이터를 가지고 Rating-billing 과정을 거침.
Ceilometer-agent-compute
: 그림에서 노바 에이전트에 해당되며, 컴퓨트 노드위에서 수행되고 리소스 사용량 데이
터를 수집한다.
Ceilometer-agent-central
: central management server에서 수행되며, 컴퓨트 노드외에 다른 리소스 사용량 데이
터를 수집한다. 그림에서는 glance, cinder, neutron으로부터 데이터가 수집되는 걸로 표
시되어있다.
Ceilometer-conllector
: central management servers 에서 수행되며 메시지 큐로 들어오는 미터링 데이터들을
모니터하는 역할이다.
Ceilometer-alarm-notifier
: central management server 에서 수행되고 수집되는 샘플 데이터에 대해 정해놓은
임계치를 기준으로 한 알람 기능을 제공
Database
: API서버로부터 들어오는 읽기요청과 collerctor로부터 들어오는 쓰기요청을 동시에 처
리하는 데이터 저장소
Ceilometer-api
: central management servers에서 수행되며, 데이터베이스에 접근 가능하다.
Collerctor와 API server두개만이 데이터에 접근이 가능
Ceilometer
- 안전하고, 쉬운 구축, 확장이 용이한, 다이나믹 스토리지 서비스 제공
- 저장하려는 파일 수에 제한 없음, 개별 파일의 최대 크기는 5GB (대용량가능)
- Rest API를 사용해 파일을 저장하고 끌어오므로, 개발자에게 다른 어플리케이션과의 쉬운 intergration을 유도
Account, container, object
Object : 그냥 파일
오브젝트를 저장한다  파일 컨테이너라 불리는 폴더에 특정 사
용자 계정과 속성을 포함해서 업로드
(즉, 하나의 오브젝트는 accont, container, object ID로 구별!)
swift 아키텍쳐
Proxy server : 들어오는 요청을 받아들이는 관문
(요청  파일 업로드/다운로드, 메타데이터 수정,
컨테이너가 생성되는 등의 요청을 의미)
요청이 들어오면 정확한 처리를 위해 accont/container/object를 찾아야함.
(Ring 사용, 성능향상을 위해 memcache사용 가능)
- Accont 서버 : 오브젝트 스토리지 서비스와 함께 사용될 계정 관리
- Container서버 : 컨테이너와 저장된 오브젝트와의 매핑(조합)관리
- Object 서버 : 스토리지 노드에 저장된 실제 오브젝트(파일)을 관리
각각의 서버들은 서로 유기적으로 얽힘,
제정된 데이터를 잘 관리하기 위해 여러가지 프로세스를 돌림
 replication(복제)프로세스
Replication프로세스 : 데이터 일관성과 고 가용성을 제공하기 위한
복제 프로세스
Swift
※ ESXi 클립보드 호환 (해당 vm)
1. VMware Tools가 설치
2. 가상머신>설정편집>옵션>일반>구성매개변수>추가>
isolation.tools.copy.disable false
isolation.tools.paste.disable false
※ ESXi 클립보드 호환 (전체)
1. SSH를 이용해서 ESXi 호스트에 root 유저로 로그인합니다.
2. /etc/vmware/config 파일을 백업합니다. (cp /etc/vmware/config /etc/vmware/config.bak)
3. /etc/vmware/config 파일을 엽니다 (vi /etc/vmware/config)
4. config 파일에 다음 내용을 추가합니다.
vmx.fullpath = "/bin/vmx"
isolation.tools.copy.disable="FALSE"
isolation.tools.paste.disable="FALSE"
5. 파일을 저장합니다.
6. 리부팅
ETC
※ ubuntu 14.04 파티션 GUI 툴
# apt-get –y install gparted
# gparted
# fdisk -l
# fdisk /dev/sdb > n > P > 1 > (enter) > (enter) > P > w
# mkfs.ext4 /dev/sdb1 : 포맷
# ls –l /dev/disk/by-uuid : uuid 확인
# mount –a
# df –h : 확인
 여기까지 작업 후 gparted로 확인 후 cinder 설치
※ 추가… 참고!
# mkdir /srv/repository : mout등록
# vi /etc/fstab
----------------------------------------------------------------------------------------------------------------------------------
UUID=(위에서 확인한 uuid) /srv/repository ext4 errors=remount-ro 0 1
----------------------------------------------------------------------------------------------------------------------------------
# mount –a # chmod로 권한 설정~ # df –h : 잘 올라왔는지 확인~
ETC
service mysql restart
service rabbitmq-server restart
service glance-registry restart
service glance-api restart
service keystone restart
service nova-api restart
service nova-cert restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
service neutron-server restart
service apache2 restart
service memcached restart
(crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage
token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/crontabs/keystone
service openvswitch-switch restart
service neutron-plugin-openvswitch-agent restart
service neutron-l3-agent restart
service neutron-dhcp-agent restart
service neutron-metadata-agent restart
service nova-compute restart
service openvswitch-switch restart
service neutron-plugin-openvswitch-agent restart
.sh
이상입니다. 

Mais conteúdo relacionado

Mais procurados

OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1Ji-Woong Choi
 
OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)Ian Choi
 
resource on openstack
 resource on openstack resource on openstack
resource on openstackjieun kim
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트OpenStack Korea Community
 
Openstack에 컨트리뷰션 해보기
Openstack에 컨트리뷰션 해보기Openstack에 컨트리뷰션 해보기
Openstack에 컨트리뷰션 해보기영우 김
 
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개OpenStack Korea Community
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinuxOpen Source Consulting
 
해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack SolutionNalee Jang
 
How to contribute at OpenStack
How to contribute at OpenStackHow to contribute at OpenStack
How to contribute at OpenStackSK Telecom
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-HelmSK Telecom
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migrationymtech
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystemSungjin Kang
 
[2015-05월 세미나] 파이선 초심자의 Openstack
[2015-05월 세미나] 파이선 초심자의 Openstack[2015-05월 세미나] 파이선 초심자의 Openstack
[2015-05월 세미나] 파이선 초심자의 OpenstackOpenStack Korea Community
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideChan Shik Lim
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기Ji-Woong Choi
 

Mais procurados (20)

OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
 
OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)
 
resource on openstack
 resource on openstack resource on openstack
resource on openstack
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
 
Openstack에 컨트리뷰션 해보기
Openstack에 컨트리뷰션 해보기Openstack에 컨트리뷰션 해보기
Openstack에 컨트리뷰션 해보기
 
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
 
해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution
 
OpenStack Networking
OpenStack NetworkingOpenStack Networking
OpenStack Networking
 
How to contribute at OpenStack
How to contribute at OpenStackHow to contribute at OpenStack
How to contribute at OpenStack
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
 
[2015-05월 세미나] 파이선 초심자의 Openstack
[2015-05월 세미나] 파이선 초심자의 Openstack[2015-05월 세미나] 파이선 초심자의 Openstack
[2015-05월 세미나] 파이선 초심자의 Openstack
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 

Destaque

Dockerizing OpenStack for High Availability
Dockerizing OpenStack for High AvailabilityDockerizing OpenStack for High Availability
Dockerizing OpenStack for High AvailabilityDaniel Krook
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은jieun kim
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은jieun kim
 
OpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection ServiceOpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection ServiceEran Gampel
 
Dragon flow neutron lightning talk
Dragon flow neutron lightning talkDragon flow neutron lightning talk
Dragon flow neutron lightning talkEran Gampel
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
OpenStack Dragonflow shenzhen and Hangzhou  meetupsOpenStack Dragonflow shenzhen and Hangzhou  meetups
OpenStack Dragonflow shenzhen and Hangzhou meetupsEran Gampel
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은jieun kim
 
Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup  Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup Eran Gampel
 
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 jieun kim
 
150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kimjieun kim
 
Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Eran Gampel
 
1410988 김희재 디자인의디자인
1410988 김희재 디자인의디자인1410988 김희재 디자인의디자인
1410988 김희재 디자인의디자인heejaekim
 
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522jieun kim
 
OpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetupOpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetupEran Gampel
 
Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208Manabu Ori
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
DragonFlow sdn based distributed virtual router for openstack neutron
DragonFlow sdn based distributed virtual router for openstack neutronDragonFlow sdn based distributed virtual router for openstack neutron
DragonFlow sdn based distributed virtual router for openstack neutronEran Gampel
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은jieun kim
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitorjieun kim
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Manabu Ori
 

Destaque (20)

Dockerizing OpenStack for High Availability
Dockerizing OpenStack for High AvailabilityDockerizing OpenStack for High Availability
Dockerizing OpenStack for High Availability
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
 
OpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection ServiceOpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection Service
 
Dragon flow neutron lightning talk
Dragon flow neutron lightning talkDragon flow neutron lightning talk
Dragon flow neutron lightning talk
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
OpenStack Dragonflow shenzhen and Hangzhou  meetupsOpenStack Dragonflow shenzhen and Hangzhou  meetups
OpenStack Dragonflow shenzhen and Hangzhou meetups
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
 
Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup  Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup
 
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
 
150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim
 
Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk
 
1410988 김희재 디자인의디자인
1410988 김희재 디자인의디자인1410988 김희재 디자인의디자인
1410988 김희재 디자인의디자인
 
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
 
OpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetupOpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetup
 
Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
DragonFlow sdn based distributed virtual router for openstack neutron
DragonFlow sdn based distributed virtual router for openstack neutronDragonFlow sdn based distributed virtual router for openstack neutron
DragonFlow sdn based distributed virtual router for openstack neutron
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224
 

Semelhante a Build the OpenStack Cloud with Neutron Networing, IceHouse

PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guideseungdon Choi
 
Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)Changhyun Lim
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제Tae Young Lee
 
Mininet
MininetMininet
Mininetymtech
 
AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)
AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)
AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)AWSKRUG - AWS한국사용자모임
 
ONOS - setting, configuration, installation, and test
ONOS - setting, configuration, installation, and testONOS - setting, configuration, installation, and test
ONOS - setting, configuration, installation, and testsangyun han
 
Hadoopcluster install in_centos_virtualbox
Hadoopcluster install in_centos_virtualboxHadoopcluster install in_centos_virtualbox
Hadoopcluster install in_centos_virtualbox은봉 이
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치ymtech
 
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212ymtech
 
Red Hat OpenStack 17 저자직강+스터디그룹_2주차
Red Hat OpenStack 17 저자직강+스터디그룹_2주차Red Hat OpenStack 17 저자직강+스터디그룹_2주차
Red Hat OpenStack 17 저자직강+스터디그룹_2주차Nalee Jang
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
(OCI 탐험일지) nginx 설치(오라클 리눅스 7)
(OCI 탐험일지) nginx 설치(오라클 리눅스 7)(OCI 탐험일지) nginx 설치(오라클 리눅스 7)
(OCI 탐험일지) nginx 설치(오라클 리눅스 7)Jay Park
 
Cisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdfCisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdfssusercbaa33
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
 
Nginx Https 적용하기.pptx
Nginx Https 적용하기.pptxNginx Https 적용하기.pptx
Nginx Https 적용하기.pptxwonyong hwang
 

Semelhante a Build the OpenStack Cloud with Neutron Networing, IceHouse (20)

Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guide
 
Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제
 
Mininet
MininetMininet
Mininet
 
Lam pstack
Lam pstackLam pstack
Lam pstack
 
AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)
AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)
AWS 아마존 웹 서비스 책 없이 시작하기 - AWS 유저그룹 엔터프라이즈 모임 발표 20180514 이준구(SDS)
 
ONOS - setting, configuration, installation, and test
ONOS - setting, configuration, installation, and testONOS - setting, configuration, installation, and test
ONOS - setting, configuration, installation, and test
 
Hadoopcluster install in_centos_virtualbox
Hadoopcluster install in_centos_virtualboxHadoopcluster install in_centos_virtualbox
Hadoopcluster install in_centos_virtualbox
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
Red Hat OpenStack 17 저자직강+스터디그룹_2주차
Red Hat OpenStack 17 저자직강+스터디그룹_2주차Red Hat OpenStack 17 저자직강+스터디그룹_2주차
Red Hat OpenStack 17 저자직강+스터디그룹_2주차
 
Internship backend
Internship backendInternship backend
Internship backend
 
테스트
테스트테스트
테스트
 
(OCI 탐험일지) nginx 설치(오라클 리눅스 7)
(OCI 탐험일지) nginx 설치(오라클 리눅스 7)(OCI 탐험일지) nginx 설치(오라클 리눅스 7)
(OCI 탐험일지) nginx 설치(오라클 리눅스 7)
 
Cisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdfCisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdf
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
 
Nginx Https 적용하기.pptx
Nginx Https 적용하기.pptxNginx Https 적용하기.pptx
Nginx Https 적용하기.pptx
 

Build the OpenStack Cloud with Neutron Networing, IceHouse

  • 3. # OpenStack Services OpenStack service description Nova 컴퓨팅 서비스, OpenStack클라우드 인프라 관리(하이퍼바이저에 행하는 모든 행위 관리) Neutron 네트워킹 서비스, OpenStack 내의 네트워크 관리(고도화된 가상 네트워크 정책 설정 가능) Keystone 인증 서비스. 사용자 및 API에 대한 인증 및 권한 설정 Glance 이미지 관리 서비스, VM으로 생성될 이미지파일들을 관리 Cinder 볼륨저장장치 서비스, 데이터를 블록 단위로 저장 Swift 오브젝트 저장장치 제공 서비스, 데이터를 오브젝트 단위로 저장 Horizon 사용자 인터페이스 – 데쉬보드 Ceilometer 모니터링 및 미터링서비스, 사용자의 사용량 등을 측정 Heat 오케스트레이션서비스, 미리 작성된 스크립트와 준비된 템플릿을 이용해 자동으로 개발 인프라 구축 Trove 데이터베이스 서비스, 최종 사용자에게 클라우드 기반의 데이터베이스서비스를 제공 <예비 프로젝트> Sahara Openstack상에서 Hadoop클러스터를 제공하기 위한 서비스 Marconi 메시지 전송 및 알림 서비스 Ironic 가상머신이 아닌 물리서버를 클라우드 환경에서 제공
  • 4. # Example Arhitecture OpenStack ▼ Three-node architecture with Neutron ▼ Two-node architecture with Nova-network http://docs.openstack.org/icehouse/install-guide/install/apt/content/ch_overview.html
  • 5. Test Lab • Composition OpenStack Infra Instances, vNet, vStorage, vCompute … OpenStack Ice House, 9th release version Virtual Machines Controller node, Compute node, Network node, Block node (Server 14.04.1 LTS (64bit only)) EXSi 5.5 Vmware ESXi 5.5 netork settings - IP : 192.168.1.1 - Netmaks : 255.255.255.0 - Gateway : 192.168.1.254 - dns-nameservers : 168.126.63.1 8.8.8.8 Host Computer Hardware Spec. - CPU : Intel Core i5-4690, 4cores, 3.50GHz HyperThreading : none Gigabyte Technology, B85M-DS3H - Memory : 16GB - Disk : 1.81TB - NIC : Realtek 8168 Gigabit Ethernet  2개 - No OS, installed Esxi Server
  • 6. # OpenStack Cloud Test Lab OpenStack IaaSNetwork node Controller node Compute node 1 Block 1 DashBoard CLI Block Storage User Tenant C, Instances Tenant B, Instances Tenant A, Instances
  • 7. Test Lab • Architecture & ESXi VM Spec. Controller Network Compute Neutron Server Keystone Glance Horizon Cinder Nova Server RabbitMQ OVS KVM Mysql Mysql Mysql Server Test Lab Architecture. node cpu memory Disk user(id/ pw) Controller 2 8GB 80G root / expernet Network 1 2GB 80G root / expernet Compute 1 2 6GB 80G root / expernet Block 1 3 2GB 40G/40 G root / expernet Neutron Agents Nova Agents Neutron Plugins Heat Block Cinder Agents LVM Hardware Spec.
  • 8. Test Lab • OpenStack Network Architecture node Network1 Network2 Network3 Controller 192.168.1.3 x x Network 192.168.1.4 10.0.1.21 Not Set (OVS linkage) Compute 1 192.168.1.5 10.0.1.31 x Block 1 192.168.1.6 x x Controller Network Compute 1 Network 1 WAN Network 3Network 2 eth0 eth0 eth1 eth2 eth0 eth1 - Network 1 : Management Network - Network 2 : External Network - Network 3 : Service(Data) Network Block 1 eth0
  • 9. Test Lab – ESXi 5.5 1 3 2 5 6 7 1. VMWare 사이트 접속 2. 로그인 3 . 다운로드 > 무료제품다운로드 > vSphere Hypervisor 4 4. License & Download 5. Vmware vSphere Hypervisor – Start Download Manager 6. VMware vSphere Client 5.5 – Start Download Manager 7. License 받은 후 확인 ESXi Download
  • 10. Test Lab – ESXi 5.5 Realtek NIC를 위한 vSphere Hypervisor iso 드라이버 통합 (1/2) 1. ESXI-Customizer-v2.7.2 > ESXi-Customizer.cmd 실행 2. “Select the original VMWare EXSi ISO” Browse > VMware-VMvisor-Installer-5.5.0-1331820.x86_64.iso 3. “Select an OEM.tgz file, a VIB file or an Offline Bundle” Browse > VMware_bootbank_net-r8168_8.013.00-3vmw.510.0.0.799733.vib 4. “Select the working directory” Browe 5. “Run!” 1 2 3 4 5
  • 11. Test Lab – ESXi 5.5 Realtek NIC를 위한 vSphere Hypervisor iso 드라이버 통합 (2/2) 1. All Done Message box 확인 2. 설정 한 output 폴더에 드라이버 통합한 iso가 생겼는지 확인 ※ VIB파일은 해당하는 네트워크 카드 모델에 맞춰야 함. 해당 test PC의 nic 모델은 Realtek 8168 Gigabit Ethernet ※ Esxi 사용을 위해선 gigabit 이상을 지원하는 nic가 필요함 1 2
  • 12. 1. CMOS 설정 1. CPU settings - Intel Virtual Technology : Enabled - Intel VT/AMD-V : Enabled  Cpu 가상과 관련한 항목들을 Enabled로 설정 2. 비디오카드 - graphic, gpu등 비디오카드 관련한 항목을 Enabled로 설정(설정이 안되어있을때, 인스턴스가 생성도 안되는 에러가 발생했 었음..) 2. ESXi 설치 및 환경 설정 Network 정보 설정 Shell사용 및 SSH사용 enabled로 설정 3. vSphere Client 설치 Client PC에서 vSphere Client 설치 후 Exsi 서버의 계정(root/expernet)으로 로그인 4. compute 노드에 cpu가상화 지원 가능하도록 설정(KVM) – EXSi 5.1 이상 1. EXSi에 SSH 접근 (putty) 후, vi /etc/vmware/config 편집 - vhv.enable = “TRUE” 2. VM설정 후 파워 on 전에 vi /vmfs/datastoreX/*.vmx 편집 - vhv.enable = “TRUE” - hypervisor.cpuid.v0 = “FALSE” 3. 확인 : VM power on 후, #egrep -c '(vmx|svm)' /proc/cpuinfo Basic Configuration
  • 13. 5. 새 가상머신 만들기 (controller, network, compute1, block1) 1. “새 가상 시스템 생성” 2. 구성 – 사용자 지정 3. 이름 및 위치 : default > 스토리지 : default > 가상시스템버전 : 8 > 게스트 운영체제 : Linux/ubuntu 64bit > CPU 코어 수 설정 > 메모리 설정 > 네트워크 설정 > SCSI 컨트롤러 : default > 디스크선택 : 새 가상 디스크 생성 > 디스크 용량 설정 / 빠르게 비워지는 씩 프로비저닝 / 위치 : default > 고급옵션 : default > 완료준비 : “완료 전 가상 시스템 설정 편집” 체크 4. 새 가상 시스템 설정 편집 창 - 하드웨어 탭 : 플로피 디스크 제거 > CD/DVD : 데이터스토어 ISO 설정 / “전원켤때연결” - 옵션 탭 : CPU/MMU 가상화 > VT-x/AMD-V 사용 및 EPT/AMD RVI 사용 체크 5. 완료 Basic Configuration
  • 14. Basic Configuration 6. VM에 우분투 설치 1. VM 실행 후 설치 진행 2. 설치 완료 후 사용자 계정으로 로그인 3. Root 권한 설정 - sudo passwd root ↙ - 비밀번호 입력 후 root로 로그인 ( su - ↙) 4. IP 설정 # apt-get -y purge network-manager : ip 자동관리 패키지 제거 # vi /etc/netowk/interface Controller Network Compute1 Block1 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.254 dns-nameservers 168.126.63.1 8.8.8.8 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.4 netmask 255.255.255.0 gateway 192.168.1.254 dns-nameservers 168.126.63.1 8.8.8.8 auto eth1 iface eth1 inet static address 10.0.1.21 netmask 255.255.255.0 # etth2 설정 내용(OVS 연동) auto eth2 iface eth2 inet manual up ip link set dev $IFACE up up ip link set $IFACE promisc on down ip link set dev $IFACE down ip link set $IFACE promisc off auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.5 netmask 255.255.255.0 gateway 10.0.0.2 dns-nameservers 168.126.63.1 8.8.8.8 auto eth1 iface eth1 inet static address 10.0.1.31 netmask 255.255.255.0 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.6 netmask 255.255.255.0 gateway 192.168.1.254 dns-nameservers 168.126.63.1 8.8.8.8 1. 인터페이스 $ ifup eth0 $ ifdown eth0 2. Tun/tap device $ ip link set eth2 down $ ip tuntap del mode tap dev eth2 3. DNS 서버 $ vi /etc/init.d/resolvconf
  • 15. Basic Configuration 7. 우분투 기본환경 1) Root 권한 설정 $ sudo passwd root $ su – 2) IP 설정 $ apt-get -y purge network-manager : ip 자동관리 패키지 제거 3) 재실행 $ vi /etc/network/interface $ ifup ethX $ ifdown ethX 4) Network node의 가상 nic interface 생성 $ vi /etc/init.d/ovs_nic.sh ----------------------------------- #! /bin/sh ip tuntap add mode tap eth2 ip link set eth2 up ifdown eth2 ifup eth2 ------------------------------------- $ chmod 755 /etc/init.d/ovs_nic.sh $ vi /etc/rc.local -------------------------------------- sudo /etc/init.d/ovs_nic.sh -------------------------------------- $ reboot 후, ifconfig로 확인
  • 16. Basic Configuration 7. 우분투 기본환경 5) APT 서버 설정 $ vi /etc/apt/sources.list > :%s/us.archive/kr.archive/g : kr서버로 변경 **$ apt-get update 6) SSH 설정 : ssh를 사용하는 모든 Host 설치 (* sysv-rc-conf : 부팅 시작 시 자동실행 서비스 ) $ apt-get install -y ssh sysv-rc-conf $ cd /etc/init.d $ netstat -ntlp | grep ssh $ ./ssh start $ netstat -ntlp | grep ssh $ sysv-rc-conf ssh on 7) Host 파일 수정 : controller, network, compute, block (all nodes) $ vi /etc/hosts -------------------------------------- 192.168.1.3 controller 192.168.1.4 network 192.168.1.5 compute1 192.168.1.6 block1 127.0.0.1 localhost  없으면 ntpq –p 동작안함 --------------------------------------- * 만약 windows os에서 접근 시 windows hosts파일도 동일하게 수정 8) 방화벽 정책 삭제 (iptables, rabbitmq 메시지가 차단됨 : controller, network, compute, block (all nodes) $ ufw disable $ iptables -F
  • 17. Basic Configuration 7. 우분투 기본환경 9) NTP 설정 : controller, network, compute, block (all nodes) $ apt-get -y install ntp $ service ntp stop $ vi /etc/ntp.conf ------------------------------------ #그외 server 전부 주석 server time.bora.ne server time.kriss.re.kr ------------------------------------ $ service ntp start * 확인 $ ntpq -p $ ntpq -c assoc 10) Openstack package : controller, network, compute, block (all nodes) < ubuntu 12.04 > $ apt-get –y install python-software-properties (14.04는 필수가 아님. 필요치 않음) $ add-apt-repository cloud-archive:icehouse (14.04는 필수가 아님. 필요치 않음) $ apt-get update $ apt-get dist-upgrade $ apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy (neutron 사용시 backported linux kernal 설치 필요) $ reboot < ubuntu 14.04 - icehouse 기본> $ apt-get -y update && apt-get -y dist-upgrade $ reboot
  • 18. Basic Configuration 7. 우분투 기본환경 11) Messaging server (보통 controller에 설치) : openstack은 message broker로 서비스간 동작/상태정보 교환 (* 메시지 브로커로 rabbitMQ 사용 ) [Controller] $ apt-get -y install rabbitmq-server $ rabbitmqctl change_password guest expernet 12) X-Windows 설치 및 실행 $ sudo apt-get install -y xinit $ sudo apt-get install -y ubuntu-desktop (* $ sudo apt-get install -y --no-install-recommends ubuntu-desktop) $ apt-get -y purge network-manager : ip 자동관리 패키지 제거  xwindows를 설치하면 위의 패키지가 같이 설치되는데, 기존의 네트워크 매니저와 충돌 할 수 있으므로 반드시 제거해준다. $ startx $ reboot 13) X-Windows 로그인시 root 허용 $ vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf -------------------------------------------------------------------------- greeter-show-manual-login=true User name 입력 가능 allow-guest=false 게스트계정 막기 (cf. allow-root = true : 자동으로 root 설정) -------------------------------------------------------------------------- $ reboot
  • 19. Basic Configuration 7. 우분투 기본환경 14) database * Mysql 설치 시 warning : # apt-get update * 재부팅 후 mysql –u root –p 시 mysqld.sock 오류 : # service mysql restart Controller All Node(그외 나머지 노드 전부) apt-get -y install python-mysqldb mysql-server nano /etc/mysql/my.cnf ----------------------------------- [mysqld] bind-address = 192.168.1.3 # Node 의 접근 허용 mysql 서버 IP default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8 ------------------------------------ # InnoDB 사용 및 UTF8 설정 # service mysql restart # mysql_install_db  최초 DB 생성 # mysql_secure_installation : DB 보안 관련 스크립트 임 (모두 y) - root password 변경 (n) - DB 접근 anonymous 계정 삭제 (y) - DB 원격 접근 차단 (?) y) - test DB 와 access 삭제 (y) - reload privilege table (y) # sysv-rc-conf mysql on apt-get -y install python-mysqldb
  • 20. Basic Configuration 7. 우분투 기본환경 10. Openstack package (ubuntu 14.04) : controller, network, compute, block # apt-get –y update && apt-get –y dist-upgrade # reboot 11. Messaging server (보통 controller에 설치) : openstack은 message broker로 서비스간 동작/상태정보 교환 : 메시지 브로커로 rabbitMQ 사용 <controller> #apt-get –y install rabbitmq-server #rabbitmqctl change_password guest expernet
  • 21. Keystone Configure the Identity Service – keystone - 사용자 및 API에 대한 인증 및 권한 설정 서비스 - 사용자에 대한 인증, 인증된 사용자에 대한 토큰 검증 및 관리, 이용 가능한 서비스 정보 제공, 규칙 기반의 권한설정 기능 등 keystone identity manager
  • 22. Keystone Configure the Identity Service – keystone - Token backend : 사용자별 token 관리 - Catalog backend : 오픈스택의 모든 서비스의 end-point관리 - Policy backend : 테넌트, 사용자 계정 및 롤 등을 관리 - Identity backend를 통하여 사용자 인증을 관리 tenant, user, role : 사용자일 경우 사용자 그룹인 tenant 사용자 계정정보인 user ID와 PW, 사용권한인 role을 가지게 됨. 서비스일 경우 (nova, glance, neutron 등 다른 서비스), 해당 서비스의 endpoint url을 등록. - tenant에는 user가 포함 - user는 role을 가짐 - token을 발행할 때는 tenant와 user정보가 필요 - 서비스가 있고 각각의 서비스는 endpoint url을 가짐 - user는 endpoint-url을 통하여 서비스에 접근
  • 23. <controller> # apt-get –y install keystone # vi /etc/keystone/keystone.conf ----------------------------------------------- [database] connection = mysql://keystone:expernet@controller/keystone ----------------------------------------------- # rm /var/lib/keystone/keystone.db 기본생성되어있는 sqlite db삭제 # mysql –u root –p *keystone db 생성 >create database keystone; >grant all privileges on keystone.* to ‘keystone’@’localhost’ identified by ‘expernet’; >grant all privileges on keystone.* to ‘keystone’@’%’ identified by ‘expernet’; >exit #su –s /bin/sh –c “keystone-manage db_sync” keystone *identity service tables생성 #opens니 rand –hex 10  d81cde9be3e0cf6161b7 - keystone이 사용하는 공유암호키 지정을 위해 암호키 랜덤 생성. - Admin_token에서 사용, keystone과 다른 서비스 간에 shared secret으로 사용됨 Keystone
  • 24. <controller> # vi /etc/keystone/keystone.conf -------------------------------------------------------------------- [database] admin_token = d81cde9be3e0cf6161b7 띄어쓰기 필수! log_dir=/var/log/keystone -------------------------------------------------------------------- # service keystone restart # (crontab –l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone- tokenflush.log 2>&1' >> /var/spool/cron/crontabs/keystone  주기적으로 해당 파일을 업데이트 해줘야 하기 때문에 실행 ※user, tenant, role 설정 필요. (service, endpoint가 이것을 사용) # export OS_SERVICE_TOKEN=d81cde9be3e0cf6161b7 # export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0 *관리자생성 # keystone user-create --name=admin --pass=expernet --email=admin@expernet.co.kr * admin Users 생성 # keystone role-create --name=admin * admin 사용자의 roile 생성 # keystone tenant-create --name=admin --description="Admin Tenant” * admin 사용자의 tenant 생성 # keystone user-role-add --user=admin --tenant=admin --role=admin * Users+Role+Tenant 조합 # keystone user-role-add --user=admin --tenant=admin --role=_member_ * admin에 _member_ Role 연결 *일반유저생성(_member_ Role만 허용) # keystone user-create --name=demo --pass=expernet --email=demo@expernet.co.kr *user 계정 생성 # keystone tenant-create --name=demo --description="Demo Tenant" # keystone user-role-add --user=demo --tenant=demo --role=_member_ *service tenant 생성 # keystone tenant-create --name=service --description="Service Tenant” *다른 서비스를 위해 필요한 service tenant Keystone
  • 25. <controller> # keystone service-create --name=keystone --type=identity --description="OpenStack Identity“ *서비스 정의 # keystone endpoint-create --service-id=$(keystone service-list | awk '/ identity / {print $2}') --publicurl=http://controller:5000/v2.0 -- internalurl=http://controller:5000/v2.0 --adminurl=http://controller:35357/v2.0 **** 정상동작 검증 : 정상동작 시 값들이 화면에 출력 # unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT # keystone --os-username=admin --os-password=expernet --os-auth-url=http://controller:35357/v2.0 token-get # keystone --os-username=admin --os-password=expernet --os-tenant-name=admin --os-auth-url=http://controller:35357/v2.0 token- get ***사용의 편의를 위해 시스템 환경변수 파일 미리 생성 # cd # vi .bashrc ------------------------------------------ export OS_USERNAME=admin export OS_PASSWORD=expernet export OS_TENANT_NAME=admin export OS_AUTH_URL=http://controller:35357/v2.0 ------------------------------------------ #source .bashrc *환경변수 적용 #export *변수확인 ****토큰확인 #keystone token-get #keystone user-list #keystone user-role-list --user admin --tenant admin Keystone
  • 26. Install and Configure OpenStack Client OpenStack command-line client는 간단한 명령어로 API 호출 할 수 있음. OpenStack 를 통해서 여러 컴퓨터에 명령 내릴 수 있음. OpenStack 과 client 는 RESTful APIs 를 통해서 명령 제어. OpenStack Client Service Client Package Description Block Storage cinder python-cinderclient Create and manage volumes. Compute nova python-novaclient Create and manage images, instances, and flavors. Database Service trove python-troveclient Create and manage databases. Identity keystone python-keystoneclient Create and manage users, tenants, roles, endpoints, and credentials. Image Service glance python-glanceclient Create and manage images. Networking neutron python-neutronclient Configure networks for guest servers. This client was previously called quantum. Object Storage swift python-swiftclient Gather statistics, list items, update metadata, and upload, download, and delete files stored by the Object Storage service. Gain access to an Object Storage installation for ad hoc processing. Orchestration heat python-heatclient Launch stacks from templates, view details of running stacks including events and resources, and update and delete stacks. Telemetry ceilometer python-ceilometerclient Create and collect measurements across OpenStack.
  • 27. < controller , network, compute, block > 1. #apt-get install python-novaclient #apt-get install python-pip # pip install python-PROJECTclient : 오른쪽의 각각 client들 설치 •참고 - Ugrade : pip install --upgrade python-PROJECTclient -Remove : pip uninstall python-PROJECTclient # vi 로 openrc파일 생성 후, # source admin-openrc.sh * 적용 *PROJECT ceilometer - Telemetry API cinder - Block Storage API and extensions glance - Image Service API heat - Orchestration API keystone - Identity service API and extensions neutron - Networking API nova - Compute API and extensions swift - Object Storage API trove - Database Service API OpenStack Client admin-openrc.sh export OS_USERNAME=admin export OS_PASSWORD=expernet export OS_TENANT_NAME=admin export OS_AUTH_URL=http://controller:35357/v2.0 demo-openrc.sh export OS_USERNAME=demo export OS_PASSWORD=expernet export OS_TENANT_NAME=demo export OS_AUTH_URL=http://controller:35357/v2.0
  • 28. Configure the Image Service - glance <controller> #apt-get –y install glance python-glanceclient #vi /etc/glance/glance-api.conf #vi /etc/glance/glance-registry.conf 두개의 파일 각각에 ---------------------- [database] connection = mysql://glance:expernet@controller/glance ----------------------- #vi /etc/glance/glance-api.conf 메시지 브로커 설정 ------------------------ [DEFAULT] … rpc_backend = rabbit (없는 필드 이므로 추가) rabbit_host = controller rabbit_password = expernet # rm /var/lib/glance/glance.sqlite *sqlite db 패키지 삭제 (해당 파일 없었음 fine / -name glance.sqlite로 찾아도 없었음) #mysql –u root –p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY ‘expernet’; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@’%' IDENTIFIED BY ‘expernet’; exit Glance
  • 29. <controller> #su –s /bin/sh –c “glance-manage db_sync” glance 서비스 테이블 생성 ※keystone 인증 설정 # keystone user-create --name=glance --pass=expernet --email=glance@expernet.co.kr # keystone user-role-add --user=glance --tenant=service --role=admin ※ 두개의 파일 각각에 keystone 설정 추가 # vi /etc/glance/glance-api.conf # vi /etc/glance/glance-registry.conf --------------------------------------- [keystone_authtoken] auth_uri = http://controller:5000 auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = glance admin_password = expernet [paste_deploy] flavor = keystone --------------------------------------- Glance
  • 30. <controller> ※ 서비스 정의, API Associate #keystone service-create --name=glance --type=image --description="OpenStack Image Service“ #keystone endpoint-create --service-id=$(keystone service-list | awk '/ image / {print $2}') --publicurl=http://controller:9292 -- internalurl=http://controller:9292 --adminurl=http://controller:9292 # service glance-registry restart # service glance-api restart ※ 이미지 다운로드 (cirros) # mkdir /tmp/images # cd /tmp/images/ # wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img ※ 이미지서비스 업로드 # glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 --container-format bare --is-public True --progress < cirros-0.3.2- x86_64-disk.img # glance image-list # rm –r /tmp/images # file cirros-0.3.2-x86_64-disk.img file type 확인 ! tip. 추가이미지 등록 – ubuntu #source admin-openrc.sh #wget http://uec-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img #glance image-create --name "ubuntu" --disk-format qcow2 --container-format bare --is-public True --progress < trusty-server-cloudimg-amd64-disk1.img Glance
  • 31. Configure the compute Service - Nova <노드별 설치되는 nova package> *controller node -nova-api -nova-cert -nova-conductor -nova-consoleauth -nova-novncproxy -nova-schduler -nova-client *compute node -nova-compute-kvm -python-guestfs : 가상인스턴스를 생성할때 파일을 마들어주는 파이썬 라이브러리 -qemu-kvm : 하이퍼바이저 <nova 아키텍쳐> 1. 데쉬보드나 커맨드 라인 명령어가 호출하는 nova-api로부터 시작 2. nova-api는 queue를 통해 nova-compute에게 인스턴스를 생성하라는 명령을 전달 3. 인스턴스 생성 명령을 받은 nova-compute는 하이퍼바이저 라이브러리를 통해 하이퍼바이저에게 인스턴스를 생성하라는 명령어를 다시 전달 4. 하이퍼바이저가 인스턴스를 생성 5. 생성된 인스턴스는 nova-console을 통해 사용자가 접근 가 능 Nova
  • 32. 큰 그림, 동작 구조 keystone Nova-api Nova-cert Nova-consoleauth Nova-compute Nova-scheduler Nova DB Queue Glance-api swift hypervisor Neutron-agents Cinder-api Cinder-volumeCinder-scheduler Glance-registry Neutron-plugins Neutron DB Neutron-server Cinder DB horizon Controller node Compute node Network node Block storage 12 34 5 6 7 8 9 10 11 12 13 1415 glance DB Glance storage adapter Nova
  • 33. 1. Horizon을 통해 request가 들어모녀 keystone에서 토큰 획득 2. Nova-api에게 해당 토큰과 request가 저전달 3. nova-api는 다시 keystone 해당 토큰이 진짜인지 재확인 4. 진짜인지 확인되면 request를 받아들임 5. Nova-api는 큐를 통해 스케줄러에게 명령을 전달 6. Nova-scheduler는 스케줄링 정책에 의해 컴퓨팅 노드를 선택함 7. Nova-compute는 요청을 받아 가상머신을 프로비져닝함 8. 가상머신의 이미지를 만들기 위해 glance에게 이미지 요청 9. Glance는 swift에 저장된 이미지를 다운 glance storage adapter는 이미지 저장 검색 삭제 확인등을 수행하기 위해 글렌스와 스토리지간의 인터페이스 제공 - glance DB에는 이미지 관련 정보를 저장한다 - glance-registry는 이미지 관련 메타데이터를 카탈로그처럼 저장하고 검색한다. 10. Nova-api는 인스턴스에게 네트워크를 할당하기위해 neutron 에게 요청 11. Neutron에서는 agent와 plugin으로 네트워크를 사용할수 있도록 연계 12. 같은내용 neutron-server 에서 api를 제공하여 요청을 neutron-plugin으로 전달하기도 함 13. 블록스토리지가 필요하다면 cinder-api를 통해 요청 14. 요청을 받은 cinder-volume은 database에 그 상태를 읽고 들어온 요청을 처리 - database에는 어떤 볼륨이 어떤 인스턴스와 연결이 되어있는지와 cinder-scheduler의 정보가 상세히 기록 - cinder-scheduler는 요청을 받은 블록 서비스를 스케쥴링하고 전달하는 역할. 볼륨 생성 요청이 왔을때 어떤 노드가 적당한지 선택해줌 Nova
  • 34. <controller> ※ controller에 compute 서비스 설정 # apt-get -y install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient # vi /etc/nova/nova.conf --------------------------------------------------------------------------------- [database] connection = mysql://nova:expernet@controller/nova [DEFAULT] ... rpc_backend = rabbit *메시지 브로커 설정 rabbit_host = controller rabbit_password = expernet my_ip = 192.168.1.3 *MgMt ip 설정 vncserver_listen = 192.168.1.3 vncserver_proxyclient_address = 192.168.1.3 glance_host = controller --------------------------------------------------------------------------------- # rm /var/lib/nova/nova.sqlite *sqlite db패키지 삭제 Nova
  • 35. <controller> # mysql -u root -p mysql> CREATE DATABASE nova; mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY ‘expernet’; mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY ‘expernet’; mysql> exit # su -s /bin/sh -c "nova-manage db sync" nova 서비스 테이블 생성 ※ 키스톤 인증 설정 # keystone user-create --name=nova --pass=expernet --email=nova@expernet.co.kr # keystone user-role-add --user=nova --tenant=service --role=admin ※ 키스톤 설정 추가 # vi /etc/nova/nova.conf --------------- [DEFAULT] auth_strategy = keystone [keystone_authtoken] auth_uri = http://controller:5000 auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = nova admin_password = expernet --------------------- Nova
  • 36. <controller> ※ compute service 정의 # keystone service-create --name=nova --type=compute --description="OpenStack Compute“ # keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') --publicurl=http://controller:8774/v2/%(tenant_id)s --internalurl=http://controller:8774/v2/%(tenant_id)s --adminurl=http://controller:8774/v2/%(tenant_id)s # service nova-api restart # service nova-cert restart # service nova-consoleauth restart # service nova-scheduler restart # service nova-conductor restart # service nova-novncproxy restart # nova image-list *nova-api 서비스가 제대로 시작되지 않고 죽음 /var/log/nova/nova-api.log에서 oslo.rootwrap 어쩌고~ 오류 뱉어냄 # pip install --upgrade oslo.rootwrap 서비스 restart 후, status로 상태 확인 Nova
  • 37. * Controller (instance 요청)  Compute에서 요청을 받아 처리 •현재 kvm hypervisor 사용 •현재 단일 compute노드 사용이 아니며 다른 compute node 확장이 쉽다. <compute> # apt-get -y install nova-compute-kvm python-guestfs WARNING nova.virt.libvirt.utils [...] admin admin] systool is not installed 에러 발생 시 # apt-get -y sysfsutils ※ 커널설정 (linux kernel은 hypervisor서비스를 제한하므로 해제가 필요함) #dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r) ※ kernel 모든 재설정 활성화를 위해 아래 파일 생성 # touch /etc/kernel/postinst.d/statoverride # vi /etc/kernel/postinst.d/statoverride --------------------------------------------------------------------------------------------- #!/bin/sh version="$1" # passing the kernel version is required [ -z "${version}" ] && exit 0 dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version} --------------------------------------------------------------------------------------------- # 해당 파일을 실행가능하게 설정 chmod +x /etc/kernel/postinst.d/statoverride Nova
  • 38. <compute> # vi /etc/nova/nova.conf [DEFAULT] ... auth_strategy = keystone rpc_backend = rabbit *메세지브로커 rabbit_host = controller rabbit_password = expernet my_ip = 192.168.1.5 *remote console access 설정 vnc_enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = 192.168.1.5 novncproxy_base_url = http://192.168.1.53:6080/vnc_auto.html (위 10.0.0.11에 controller 로 작성 시 any 유저는 DNS 변환 처리 못하 면 접근 안됨) glance_host = controller [database] # The SQLAlchemy connection string used to connect to the database connection = mysql://nova:expernet@controller/nova [keystone_authtoken] auth_uri = http://controller:5000 auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = nova admin_password = expernet # egrep -c '(vmx|svm)' /proc/cpuinfo 0 : CPU 가상화 지원 불가, KVM 대신 libvirt to QEMU 사용 필요 1~ : CPU 가상화 지원 OK 지원불가시, vi /etc/nova/nova-compute.conf ---------------------------------- [libvirt] ... virt_type = qemu ----------------------------------- # rm /var/lib/nova/nova.sqlite # service nova-compute restart # sysv-rc-conf nova-compute on ※최종확인 <controll node> # source admin-openrc.sh # nova service-list (iptables -F 로 정책 삭제하지 않으면 서비스 활성 화 보이지 않음, Status UP 되어야함) # nova image-list Nova
  • 39. Add a networking Service - Neutron ※ nova-network : 네트워크 서비스로 ip를 할당할 수 있는 개수가 제한 Neutron : 다양한 SDN 스위치 플러그인을 연동하여 사용 가능. VLAN, 터널링 등 네트워킹 방식을 지원(기본적으로 ML2플러그인 사용) Neutron
  • 40. **** ML2 타입 드라이버 (Type Drivers) -VLAN (Virtual LAN) 하나의 물리 스위치에서 가상으로 나누어 랜을 구성 - - ◀ VLAN 모드의 컴퓨트 노드에 생성된 VM 구성 - GRE (Generic Route Encapsulation) : 인터넷 프로토콜 위에 가상 PTP(point to Point)를 제외한 다양한 네트워크 레이어 프로토콜 범위를 캡슐 화 할 수 있는 터널링 프로토콜 : 오픈스택 neutron을 gre모드로 설치했을 경우 컴퓨트 노드에 생성된 VM은 다른 컴퓨트 노드와 통신을 할 경우 터널링 된 경로로 패킷을 주고받음 Neutron
  • 41. **** ML2 타입 드라이버 (Type Drivers) -VxLAN (Virtual Extensible LAN) 물리네트워크에 연결된 다른 컴퓨트 노드의 VM끼리 통신할 경우 새로 올려 놓은 도화지 위에 가상의 터널을 그리고 그 터널을 통해서 통신을 - 메커니즘 드라이버 (Mechanism Drivers) 여러 컴퓨트 노드들이 다른 agent를 사용할 경우(예, Linuxbridge, openvswitch) 연동 할 수 없던 문제를 해결하고자 나온 드라이버 Neutron
  • 42. <노드 별 설치되는 neutron package> 컨트롤러 노드 - Neutron Server - Neutron Plugin Agent - 이더넷 네트워크 인터페이스 2개 필요 (관리용 네트워크, API 네트워크) 컴퓨트 노드 - Neutron Plugin Agent - L2 Layer Agent OpenvSwitch - 네트워크 노드와 컴퓨트 노드 간의 데이터 통신을 위한 데이터 네트워크 필요 네트워크 노드 - Neutron 플러그인 에이전트 - L3 에이전트 - DHCP 에이전트 - OpenvSwitch - 이더넷 네트워크 인터페이스 3개 필요(관리용, 데이터, 외부) < neutron 논리 아키텍쳐> 1. 사용자는 Neutron API를 이용하여 Neutron 서버로 IP를 할당을 요청합니다. 2. Neutron 서버는 들어온 요청을 Queue로 다시 요청합니다. 3. Queue는 Neutron 에이전트와 플러그인으로 IP 할당 지시를 내립니다. 4. Neutron 에이전트와 플러그인은 지시 받은 작업을 데이터베이스에 저장합니다. 5. Neutron 에이전트는 네트워크 프로바이더에게 작업을 지시합니다. 6. 그리고, 수시로 작업상태를 데이터베이스에 업데이트합니다. 7. 이제 할당된 IP를 인스턴스에서 사용할 수 있습니다. * Neutron이 네트워킹 기능을 하는 것이 아니라 Neutron과 연결된 다른 네트워크 프로바이더에 의해 네트워킹 된다는 사실 *Neutron이 지원하는 플러그인의 종류는 많지만 거의 “ML2” (Modular Layer 2) Plug-in를 사용 Neutron
  • 43. Ubuntu 14.04 Server ubuntu Fixed IP Range tenant : 192.168.100.0/24 Floating IP Range 192.168.1.0/24 Public Gateway 192.168.1.254 Floating Allocation IP Range Start : 192.168.1.118 End : 192.168.1.126 Internet AP NAT 10.0.0.1 192.168.1.254 192.168.1.28 Tenant Private Net 192.168.100.0/24 Tenant Private Net 192.168.200.0/24 br-ex br-int 192.168.1.127 192.168.1.119 qg~ 192.168.1.120 qg~ 192.168.100.1 qg~ 192.168.200.1 qg~ VM VM VM VM VM VM 10.0.0.21 HOST IP 10.0.0.21 OPENSTACK nova neutron keystone cinder swift ML2 KVM glance ovs heat Neutron # Neutron Architecture
  • 44. <controller> # mysql -u root -p mysql> CREATE DATABASE neutron; mysql> GRANT ALL PRIVILEGES ON neutron.* TO neutron'@'localhost‘ IDENTIFIED BY ‘expernet'; mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY ‘expernet '; mysql> exit ※identity #keystone user-create --name neutron --pass expernet --email neutron@expernet.co.kr # keystone user-role-add --user neutron --tenant service --role admin # keystone service-create --name neutron --type network --description "OpenStack Networking“ # keystone endpoint-create --service-id $(keystone service-list | awk '/ network / {print $2}') --publicurl http://controller:9696 --adminurl http://controller:9696 --internalurl http://controller:9696 # apt-get -y install neutron-server neutron-plugin-ml2 ※ nova-network : 네트워크 서비스로 ip를 할당할 수 있는 개수가 제한 Neutron : 다양한 SDN 스위치 플러그인을 연동하여 사용 가능. VLAN, 터널링 등 네트워킹 방식을 지원(기본적으로 ML2플러그인 사용) # vi /etc/neutron/neutron.conf ---------------- [database] ... connection = mysql://neutron:expernet @controller/neutron [DEFAULT] ... auth_strategy = keystone … rpc_backend = neutron.openstack.common.rpc.impl_kombu rabbit_host = controller rabbit_password = expernet notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True nova_url = http://controller:8774/v2 nova_admin_username = nova nova_admin_tenant_id = 09cfe23d95184b97b49953d735ce163f  keystone의 service tenant의 ID (# keystone tenant-get service) nova_admin_password = krdag nova_admin_auth_url = http://controller:35357/v2.0 core_plugin = ml2 service_plugins = router allow_overlapping_ips = True verbose = True [keystone_authtoken] ... auth_uri = http://controller:5000 auth_host = controller auth_protocol = http auth_port = 35357 admin_tenant_name = service admin_user = neutron admin_password = expernet ------------------- Neutron
  • 45. <controller> ※ ML2 plug-in 설정 # vi /etc/neutron/plugins/ml2/ml2_conf.ini ---------------------------------------------------------------------- [ml2] ... type_drivers = gre tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] ... tunnel_id_ranges = 1:1000 [securitygroup] ... firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver enable_security_group = True ---------------------------------------------------------------------- *ml2 플러그인은 instance 네트워킹을 위해야 open vSwitch mechanism을 사용함. * Controller는 instance 네트워크 트래픽을 처리하지 않기 때문에 OVS agent와 service가 필요없음. ※ nova가 legacy networking 사용하므로 neutron으로 설정 # vi /etc/nova/nova.conf ---------------------------------------------------------------------- DEFAULT] ... network_api_class = nova.network.neutronv2.api.API neutron_url = http://controller:9696 neutron_auth_strategy = keystone neutron_admin_tenant_name = service neutron_admin_username = neutron neutron_admin_password = expernet neutron_admin_auth_url = http://controller:35357/v2.0 linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver security_group_api = neutron ---------------------------------------------------------------------- # service nova-api restart # service nova-scheduler restart # service nova-conductor restart # service neutron-server restart Neutron
  • 46. <network> ※ Instance(VM)의 mac 허용을 위한 설정(RPF filter 기능 disble) ※ IP 패킷 라우팅(L3 허용) # vi /etc/sysctl.conf ---------------------------------------------------------------------- net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 ---------------------------------------------------------------------- # sysctl –p *적용 # apt-get -y install neutron-plugin-ml2 neutron-plugin-openvswitch- agent neutron-l3-agent neutron-dhcp-agent * Kernel 3.11 이상은 openvswitch-datapath-dkms 필요 없음 # vi /etc/neutron/neutron.conf ------------------------- [DEFAULT] ... auth_strategy = keystone * keystone 인증설정 rpc_backend = neutron.openstack.common.rpc.impl_kombu rabbit_host = controller rabbit_password = expernet * 메시지 브로커 설정 core_plugin = ml2 * ml2 플러그인 설정 service_plugins = router allow_overlapping_ips = True verbose = True [keystone_authtoken] * keystone 인증설정 ... auth_uri = http://controller:5000 auth_host = controller auth_protocol = http auth_port = 35357 admin_tenant_name = service admin_user = neutron admin_password = expernet Neutron
  • 47. <network> ※ L3 Agent 설정 -Layer-3 agent 는 VM(Instance)를 위해 Routing 기능 제공 # vi /etc/neutron/l3_agent.ini ---------------------------------------------------------------------- [DEFAULT] … interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver use_namespaces = True verbose = True ---------------------------------------------------------------------- ※ DHCP Agent 설정 -DHCP agent 는 VM을 위해 DHCP 서비스를 제공 # vi /etc/neutron/dhcp_agent.ini ---------------------------------------------------------------------- [DEFAULT] … interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq use_namespaces = True verbose = True ---------------------------------------------------------------------- ※ metadata Agent 설정 - metadata agent 는 remote 에서 VM(Instance)에 접근 시 인증 정보를 제 공, metadata_proxy_shared_secret 경우는 Controller Node와 Network Node 에 Shared 암호 설정 # vi /etc/neutron/metadata_agent.ini ---------------------------------------------------------------------- [DEFAULT] … auth_url = http://controller:5000/v2.0 auth_region = regionOne admin_tenant_name = service admin_user = neutron admin_password = expernet nova_metadata_ip = controller metadata_proxy_shared_secret = expernet ---------------------------------------------------------------------- ※ Controller Node에 Nova metadata 설정 # vi /etc/nova/nova.conf ---------------------------------------------------------------------- [DEFAULT] ... service_neutron_metadata_proxy = true neutron_metadata_proxy_shared_secret = expernet ---------------------------------------------------------------------- # service nova-api restart Neutron
  • 48. <network> ※ ML2 plug-in 은 VM(Instance) networking 을 위하여 Open vSwitch(OVS) mechanism(agent)를 사용합니다. [ovs]에 local_ip 는 Network node 와 Compute node 간 VM 통신을 위한 NIC IP(10.0.1.21) # vi /etc/neutron/plugins/ml2/ml2_conf.ini ------------------------------------------------------------------------------------------ [ml2] ... type_drivers = gre tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] ... tunnel_id_ranges = 1:1000 [ovs] local_ip = 10.0.1.21 tunnel_type = gre enable_tunneling = True [securitygroup] ... firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver enable_security_group = True ------------------------------------------------------------------------------------------ Neutron
  • 49. <network> ※ OVS(Open vSwitch Service)는 VM(Instance)를 위한 가상 네트워크 framework 제공함 - br-int 인터페이스 - 내부 Instance 트래픽 처리 - br-ext 인터페이스 - 외부 Instance 트래픽 처리, br-ex 는 외부 접근을 할 수 있는 포트가 필요 # service openvswitch-switch restart * OVS service 재시작 # ovs-vsctl add-br br-int * int bridge 추가 # ovs-vsctl add-br br-ex * ext bridge 추가 # ovs-vsctl add-port br-ex eth2*외부 NIC(eth2)와 port bridge 설정 # ethtool -K eth1 gro off * 내부/외부 NIC 비활성화 Generic Receive Offload (GRO) # ethtool -K eth2 gro off # service neutron-plugin-openvswitch-agent restart # service neutron-l3-agent restart # service neutron-dhcp-agent restart # service neutron-metadata-agent restart ※ neutron-plugin-openvswitch-agent 서비스가 제대로 시작되지 않고 죽음  /var/log/neutron에서 관련 로그 확인 : oslo.rootwrap 에서 오류 뱉어냄….. # pip install --upgrade oslo.rootwrap 서비스 restart 후, status로 상태 확인 Neutron
  • 50. <compute> ※ Instance(VM)의 mac 허용을 위한 설정(RPF filter 기능 disble) # vi /etc/sysctl.conf ---------------------------------------------------------------------- net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 ---------------------------------------------------------------------- # sysctl –p 적용 # apt-get -y install neutron-common neutron-plugin-ml2 neutron-plugin-openvswitch-agent # vi /etc/neutron/neutron.conf ---------------------------------------------------------------------- [DEFAULT] ... auth_strategy = keystone * keystone 인증 [keystone_authtoken] * keystone 인증 auth_uri = http://controller:5000 auth_host = controller auth_protocol = http auth_port = 35357 admin_tenant_name = service admin_user = neutron admin_password = expernet rpc_backend = neutron.openstack.common.rpc.impl_kombu rabbit_host = controller rabbit_password = expernet * 메세지브로커 core_plugin = ml2 * ml2플러그인 service_plugins = router allow_overlapping_ips = True verbose = True ---------------------------------------------------------------------- ※ ML2 plug-in 은 VM(Instance) networking 을 위하여 Open vSwitch(OVS) mechanism(agent)를 사용 - [ovs]에 local_ip 는 Network node 와 Compute node 간 VM 통신을 위한 NIC IP(10.0.1.31) # vi /etc/neutron/plugins/ml2/ml2_conf.ini ------------------------------------------------------------------------------ [ml2] ... type_drivers = gre tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] tunnel_id_ranges = 1:1000 [ovs] local_ip = 10.0.1.31 tunnel_type = gre enable_tunneling = True [securitygroup] firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver enable_security_group = True ------------------------------------------------------------------------------ Neutron
  • 51. <compute> ※ br-int 인터페이스 : 내부 Instance 트래픽 처리 # service openvswitch-switch restart # ovs-vsctl add-br br-int ※ 기본 nova 가 legacy networking 사용하므로, Neutron 으로 설정 필요 # /etc/nova/nova.conf -------------------------------------------------------------------------------------------------------------------------------------------------- [DEFAULT] ... network_api_class = nova.network.neutronv2.api.API neutron_url = http://controller:9696 neutron_auth_strategy = keystone neutron_admin_tenant_name = service neutron_admin_username = neutron neutron_admin_password = expernet neutron_admin_auth_url = http://controller:35357/v2.0 linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver security_group_api = neutron -------------------------------------------------------------------------------------------------------------------------------------------------- # service nova-compute restart # service neutron-plugin-openvswitch-agent restart ※ neutron-plugin-openvswitch-agent 서비스가 제대로 시작되지 않고 죽음 /var/log/neutron에서 관련 로그 확인 oslo.rootwrap 에서 오류 뱉어냄….. # pip install --upgrade oslo.rootwrap 서비스 restart 후, status로 상태 확인 Neutron
  • 52. # 첫 VM(Instance)가 생성 전에 Networking Infra 를 설정이 필요 ※ 미리 Iptables 정책 삭제 할 것(Controller/Network/Compute1 Node 전부) # iptables –F ※ external network 은 외부와 연결됨. VM(Instance)는 NAT를 통해서 외부 연결됨. Floating IP와 Security group rules 를 통해서 각각 VM을 연결 할 수 있음. admin tenant 가 이 외부 연결 네트워크를 소유하며 multiple tenants 이 사용 가능하게 공유해야 함.  접근&시큐리티 메뉴 > 시큐리티그룹 > 해당 룰 선택 > ALL TCP / ALL ICMP / ALL SSH 추가  접근&시큐리티 메뉴 > 유동 IP > 프로젝트에 IP 할당  인스턴스에 유동 IP 연결 <controller> ※ 네트워크 생성 및 서브넷 생성 # source admin-openrc.sh # neutron net-create ext-net --shared --router:external=True # neutron subnet-create ext-net --name ext-subnet --allocation-pool start=192.168.1.118,end=192.168.1.126 --disable-dhcp --gateway 192.168.1.254 192.168.1.0/24 ※ dns-nameservers 업데이트 : # neutron subnet-update ext-net –dns_nameservers 168.126.63.1 8.8.8.8 ※ external 은 기본적으로 dhcp disable 되어야 하며, 현재 VMnet0 환경인 192.168.1.0/24 중 dhcp ip range는 118~126, Gw는 .1 지정함 VMnet0은 자신의 VMwareWorkstation 의 실제 LAN의 subnet 임(Bridge 이므로) ※ FLOATING_IP_START & FLOATING_IP_END : 외부 network 의 IP 사용 범위 Replace EXTERNAL_NETWORK_CIDR : 외부 network subnet Replace EXTERNAL_NETWORK_GATEWAY : 외부 network gateway IP 주소 Fixed IP Range VM 생성시 할당해 주는 사설IP주소 범위, 내부 통신만 가능 Floating IP Range VM을 외부에서 접속 할 수 있도록 할당해주는 공인 IP주소 범위 qbr 가상라우터 qvb 가상브릿지 qvo 가상네트워크 vnet 가상인스턴스 Neutron
  • 53. ※ tenant network 은 내부 VM(Instance)의 network 임, tenant 별 network 는 분리됨 <controller> ※ tenant(internal) network 생성 # source demo-openrc.sh # neutron net-create demo-net : 네트워크생성 # neutron subnet-create demo-net --name demo-subnet --gateway 192.168.100.1 192.168.100.0/24 : 서브넷생성 ※ tenant network 192.168.100.0/24, Gw는 .1 지정함 # neutron router-create demo-router : 라우터생성 # neutron router-interface-add demo-router demo-subnet : 라우터에 demo tenant 연결 # neutron router-gateway-set demo-router ext-net : 라우터에 external network 에 gateway 설정 Neutron
  • 54. ※확인  controller node에서 해당 port가 열려있는지 확인 # neutron port-list # neutron port-show PORTID : Status가 활성화 되어있어야함  Hypervisor(ESXi 등)에서 VM이 구동 시 vSwitch에 permit promiscuous mode 허용 해야함 위에서 할당 한 Floating IP주소 중 첫번째 IP인 192.168.1.118로 ping 됨 OK !! 외부라우터 port의 status가 DOWN !! : I booted an Ubuntu Havana system with OVS 1.10.2 and found one problem in this area here. I have no idea what the purpose of t hese lines is: https://github.com/openstack/neutron/blob/60cb0911712ad11688b4d09e5c01ac39c49f5aea/neutron/plugins/openvswitch/agent/ovs_n eutron_agent.py#L666-L671 but on this system `sudo ovs-vsctl br-get-external-id br-ex` returns nothing, and so br-ex is excluded from the list of ancillary bridges and so the gateway port always shows as DOWN. A workaround is to set the bridge-id to br-ex and restart the L2 agent: $ sudo ovs-vsctl br-set-external-id br-ex bridge-id br-ex $ sudo service neutron-plugin-openvswitch-agent restart Neutron
  • 55. Add the Dashboard - Horizon <compute> # apt-get -y install apache2 memcached libapache2-mod-wsgi openstack-dashboard # apt-get remove --purge openstack-dashboard-ubuntu-theme *네트워크 map 변환을 위한 삭제 ※/etc/memcached.conf 파일과 /etc/openstack-dashboard/local_settings.py 의 CACHES의 Location/Port를 서로 동일하게 설정  별도 수정 할 내용 없음. 하지만, CACHES 하단부에 Tap 으로 띄어진 곳 잘 확인할것 (Python 형식 이므로) # vi /etc/openstack-dashboard/local_settings.py ----------------------------------------------------------------------------------------------------------------------------------------------------------- CACHES = { 'default': { 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION' : '127.0.0.1:11211' } } OPENSTACK_HOST = "controller" ----------------------------------------------------------------------------------------------------------------------------------------------------------- # service apache2 restart #service memcached restart ※ http://controller/horizon 접근 ※ 설치 시 중간에 에러 발생 및 대처 •Starting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.0.11. • Set the 'ServerName' directive globally to suppress this message #vi /etc/apache2/apache2.conf ------------------------------------------------------------------------- ServerName controller ------------------------------------------------------------------------- #service apache2 restart Horizon
  • 56. Add the Block Storage Service - cinder <cindenr 논리 아키텍쳐> : Nova에서 생성된 인스턴스에 확장하여 사용할 수 있는 저장 공간을 생성 및 삭제하고 인스턴스에 연결할 수 있는 기능을 제공 - Cinder API를 통해 볼륨을 추가 및 삭제 - 신더 볼륨은 볼륨을 실제로 생성하고 데이터베이스에 볼륨정보를 업데이트. - Cinder는 물리 하드 디스크를 LVM(Logical Volume Manager)으로 설정 - 설정한 LVM은 cinder.conf와 nova.conf의 환경설정을 통하여 신더 볼륨을 할당 - 신더 API를 통해 생성된 볼륨은 단일 인스턴스 또는 여러 인스턴스에 할당 <cinder가 제공하는 block starage드라이버> <LVM> : LVM은 Logical Volume Manager의 약자로 하드 디스크를 파티션 대신 논리 볼륨으로 할당하고, 다시 여러 개의 디스크를 좀 더 효율적이고 유연하게 관리할 수 있는 방식 Cinder
  • 57. - 블록스토리지가 필요하다면 cinder-api를 통해 요청 - 요청을 받은 cinder-volume은 database에 그 상태를 읽고 들어온 요청을 처리 - database에는 어떤 볼륨이 어떤 인스턴스와 연결이 되어있는지와 cinder-scheduler의 정보가 상세히 기록 - cinder-scheduler는 요청을 받은 블록 서비스를 스케쥴링하고 전달하는 역할. 볼륨 생성 요청이 왔을때 어떤 노드가 적당한지 선택해줌 ※ swift와 cinder의 차이! Cinder
  • 58. <controller> # apt-get -y install python-dev # pip install –-upgrade oslo.messaging # pip install –-upgrade oslo.rootwrap # apt-get -y install cinder-api cinder-scheduler # vi /etc/cinder/cinder.conf ----------------------------------------------------------------------------------------------------------------------------------- [database] connection = mysql://cinder:expernet@controller/cinder ----------------------------------------------------------------------------------------------------------------------------------- # mysql -u root -p mysql> CREATE DATABASE cinder; mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'krdag'; mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'krdag'; mysql> exit # su -s /bin/sh -c "cinder-manage db sync" cinder  오류(로그 확인, olso.message관련)인 경우, pip install –upgrade oslo.messaging # keystone user-create --name=cinder --pass=expernet --email=cinder@expernet.co.kr # keystone user-role-add --user=cinder --tenant=service --role=admin # vi /etc/cinder/cinder.conf ----------------------------------------------------------------------------------------------------------------------------------- [DEFAULT] rpc_backend = cinder.openstack.common.rpc.impl_kombu rabbit_host = controller rabbit_port = 5672 rabbit_userid = guest rabbit_password = expernet [keystone_authtoken] auth_uri = http://controller:5000 auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = cinder admin_password = expernet ----------------------------------------------------------------------------------------------------------------------------------- Cinder
  • 59. <controller> ※ Block Service 서비스 정의/Endpoint 정의 # keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage" # keystone endpoint-create --service-id=$(keystone service-list | awk '/ volume / {print $2}') --publicurl=http://controller:8776/v1/%(tenant_id)s --internalurl=http://controller:8776/v1/%(tenant_id)s --adminurl=http://controller:8776/v1/%(tenant_id)s ※ Block Service Version 2 서비스 정의/Endpoint 정의 # keystone service-create --name=cinderv2 --type=volumev2 --description="OpenStack Block Storage v2" # keystone endpoint-create --service-id=$(keystone service-list | awk '/ volumev2 / {print $2}') --publicurl=http://controller:8776/v2/%(tenant_id)s --internalurl=http://controller:8776/v2/%(tenant_id)s --adminurl=http://controller:8776/v2/%(tenant_id)s # service cinder-scheduler restart # service cinder-api restart Cinder
  • 60. <block1> * Chapter 2 에 기본 환경 설정 및 block1 - 10.0.0.41 추가 * NTP 설정, LVM 설치 •Cinder 연결된 외장 스토리지(iSCSI Target)와 Nova Compute의 VM(iSCSI initiator) 간 iSCSI로 연결 # apt-get -y install lvm2 # fdisk -l *현재 disk정보 확인 # pvcreate /dev/sdb * LVM의 Disk 전체를 1개의 Physical Volumes(PV) 생성 # pvcreate /dev/sdc # pvdisplay # vgcreate cinder-volumes /dev/sdb * Volume Group(VG) 생성 # pvscan # apt-get –y install python-dev # pip install --upgrade oslo.messaging # pip install --upgrade oslo.rootwrap # apt-get -y install cinder-volume python-mysqldb # apt-get -y install qemu-utils * Ubuntu 이미지 Block Storage에 올리기 위해 필요한 패키지 설치 ESXi에서 기본으로 잡은 하드디스크에 lvm으로 pv를 생성할 수 없었음. 아래의 방법으로 대신 함. - Block1 VM에 새 하드디스크를 추가 (40G) # fdisk –l : 새로 붙인 디스크 확인 # fdisk /dev/sdb > n > p > 1 > (enter) > (enter) > p > w : 파티션 작업 # mkfs.ext4 /dev/sdb1 : 포맷 # ls –l /dev/disk/by-uuid/ : uuid 확인 # mount –a : mount # df –h : 확인 ※ 추가 내용은 뒤~~~~ 에… Cinder
  • 61. <block1> ※ 부팅 볼륨을 만들 수 있는 이미지 서비스를 위해 Block 설정 (glance_host) # vi /etc/cinder/cinder.conf [DEFAULT] rpc_backend = cinder.openstack.common.rpc.impl_kombu rabbit_host = controller rabbit_port = 5672 rabbit_userid = guest rabbit_password = expernet glance_host = controller [database] connection = mysql://cinder:expernet@controller/cinder [keystone_authtoken] auth_uri = http://controller:5000 auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = cinder admin_password = expernet # service cinder-volume restart # service tgt restart : tgt = iSCSI Target 서비스 Cinder
  • 62. ※ 새 볼륨 생성 테스트 <controller> # source demo-openrc.sh # cinder create --display-name myVolume 1 # cinder list ※ 대쉬보드에서도 확인 가능 생성된 볼륨에 glance(Ubuntu)로 VM 생성 대쉬보드에서 연결 or VM 생성 시 VM 생성하면서 연결 가능 Cinder
  • 63. Add the Orchestration Service - heat Private나 public이나 클라우드 환경에서 가상머신 하나를 프로비져닝 하기 위해선 여러단계를 거친다. - Heat, 이런 과정을 자동화하여 몇번의 클릭으로 쉽게 인프라를 배포할 수 있도록 도와주는 프로젝트.  마치 오케스트라를 지휘하듯, 템플릿이라고 불리는 틀을 미리 만들어 놓고 이를 기반으로 자원을 배치, 관리, 조합하는 자동화된 과정 “서비스 오토메이션” : IaaS 개념의 인프라도 물론이지만, 배포 이후 특정 서비스 혹은 어플리케이션 작업도 자동화의 일환으로 지정가능 “오토스케일링” : 세일로미터와 연계하여 특정 사용량을 넘어가면 인스턴스를 하나 더 자동으로 배포해! 등의 오토스케일링 기능 가능 <구성요소> - Heat CLI Tool : heat툴은 AWS Cloud Formation API와 Heat API가 서로 커뮤니케이션 가능한 CLI임 - Heat-api : rest api를 제공. 요청을 heat엔진으로 보냄 - Heat-api-cfn : AWSCloudFormation과 호환되는 AWS타입의 Query API를 제공. : Native heat template와 함께 AWS CloudFormation template과도 호환 - Heat-engine : 템플릿을 만들고, 코어 오픈스택 서비스와 서로 커뮤니케이션하여 오케스트레이션 핵심작업을 진행하는 엔진 Heat
  • 64. <controller> # apt-get -y install heat-api heat-api-cfn heat-engine # vi /etc/heat/heat.conf ------------------------------------------------------------------------------------------------------------------------------- [database] connection = mysql://heat:expernet@controller/heat ------------------------------------------------------------------------------------------------------------------------------- # rm /var/lib/heat/heat.sqlite # mysql -u root -p mysql> CREATE DATABASE heat; mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' IDENTIFIED BY ‘expernet’; mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' IDENTIFIED BY ‘expernet’; mysql> exit # su -s /bin/sh -c "heat-manage db_sync" heat : 서비스table생성. 단, Ignore DeprecationWarning errors 무시해도 됨 # vi /etc/heat/heat.conf ------------------------------------------------------------------------------------------------------------------------------- log_dir=/var/log/heat rabbit_host = controller rabbit_password = expernet ------------------------------------------------------------------------------------------------------------------------------- ※ HEAT 유저 인증 및 service tenant 와 heat 유저에 admin role 할당 # keystone user-create --name=heat --pass=expernet --email=heat@expernet.co.kr # keystone user-role-add --user=heat --tenant=service --role=admin Heat
  • 65. <controller> ※ 인증 설정 내용 추가 # vi /etc/heat/heat.conf ------------------------------------------------------------------------------------------------------------------------------------- [keystone_authtoken] auth_host = controller auth_port = 35357 auth_protocol = http auth_uri = http://controller:5000/v2.0 admin_tenant_name = service admin_user = heat admin_password = krdag [ec2authtoken] auth_uri = http://controller:5000/v2.0 ------------------------------------------------------------------------------------------------------------------------------------- ※ Heat 와 CloudFormation APIs 를 Identity service 에 등록 및 Endpoint 등록 # keystone service-create --name=heat --type=orchestration --description="Orchestration" # keystone endpoint-create --service-id=$(keystone service-list | awk '/ orchestration / {print $2}') --publicurl=http://controller:8004/v1/%(tenant_id)s --internalurl=http://controller:8004/v1/%(tenant_id)s --adminurl=http://controller:8004/v1/%(tenant_id)s # keystone service-create --name=heat-cfn --type=cloudformation --description="Orchestration CloudFormation" # keystone endpoint-create --service-id=$(keystone service-list | awk '/ cloudformation / {print $2}') --publicurl=http://controller:8000/v1 --internalurl=http://controller:8000/v1 --adminurl=http://controller:8000/v1 Heat
  • 66. <controller> ※ heat_stack_user 에 대한 role 를 생성함 # keystone role-create --name heat_stack_user ※ The metadata and waitcondition servers' URLs 설정 # vi /etc/heat/heat.conf ---------------------------------------------------------------------------------------------------------------------------------------------- [DEFAULT] heat_metadata_server_url = http://192.168.1.3:8000 heat_waitcondition_server_url = http://192.168.1.3:8000/v1/waitcondition ---------------------------------------------------------------------------------------------------------------------------------------------- # service heat-api restart # service heat-api-cfn restart # service heat-engine restart Heat
  • 67. <controller> ※ heat은 HOT Template language를 통해 cloud resources를 생성 -One-file template system에 다른 구성 요소를 통합 -Template를 통하여 OpenStack resource types, such as instances, floating IPs, volumes, security groups, users 를 생성 가능함 - 추가로 고급 기능인 instance high availability, instance auto-scaling, and nested stacks 기능을 제공 # source demo-openrc.sh # vi test-stack.yml : templete 파일 생성(yml형식이므로 들여쓰기 잘하기!) heat_template_version: 2013-05-23 description: Test Template parameters: ImageID: type: string description: Image use to boot a server NetID: type: string description: Network ID for the server resources: server1: type: OS::Nova::Server properties: name: "Test server" image: { get_param: ImageID } flavor: "m1.tiny" networks: - network: { get_param: NetID } outputs: server1_private_ip: description: IP address of the server in the private network value: { get_attr: [ server1, first_address ] } ※ 템플릿 파일로 부터 Stack(지정 자원-컴퓨터/네트워크 등-의 집합)를 생성 # NET_ID=$(nova net-list | awk '/ demo-net / { print $2 }') # heat stack-create -f test-stack.yml -P "ImageID=cirros-0.3.2-x86_64;NetID=$NET_ID" testStack # heat stack-list : CLI 확인 ※ 데쉬보드 확인 : 프로젝트 > Ochestration > stack Heat
  • 68. 미터링 : 사용자들이 쓴 컴퓨터 파워, 스토리지. 네트워크 등의 사용량 데이터를 모으는 과정 해당 데이터를 가지고 Rating-billing 과정을 거침. Ceilometer-agent-compute : 그림에서 노바 에이전트에 해당되며, 컴퓨트 노드위에서 수행되고 리소스 사용량 데이 터를 수집한다. Ceilometer-agent-central : central management server에서 수행되며, 컴퓨트 노드외에 다른 리소스 사용량 데이 터를 수집한다. 그림에서는 glance, cinder, neutron으로부터 데이터가 수집되는 걸로 표 시되어있다. Ceilometer-conllector : central management servers 에서 수행되며 메시지 큐로 들어오는 미터링 데이터들을 모니터하는 역할이다. Ceilometer-alarm-notifier : central management server 에서 수행되고 수집되는 샘플 데이터에 대해 정해놓은 임계치를 기준으로 한 알람 기능을 제공 Database : API서버로부터 들어오는 읽기요청과 collerctor로부터 들어오는 쓰기요청을 동시에 처 리하는 데이터 저장소 Ceilometer-api : central management servers에서 수행되며, 데이터베이스에 접근 가능하다. Collerctor와 API server두개만이 데이터에 접근이 가능 Ceilometer
  • 69. - 안전하고, 쉬운 구축, 확장이 용이한, 다이나믹 스토리지 서비스 제공 - 저장하려는 파일 수에 제한 없음, 개별 파일의 최대 크기는 5GB (대용량가능) - Rest API를 사용해 파일을 저장하고 끌어오므로, 개발자에게 다른 어플리케이션과의 쉬운 intergration을 유도 Account, container, object Object : 그냥 파일 오브젝트를 저장한다  파일 컨테이너라 불리는 폴더에 특정 사 용자 계정과 속성을 포함해서 업로드 (즉, 하나의 오브젝트는 accont, container, object ID로 구별!) swift 아키텍쳐 Proxy server : 들어오는 요청을 받아들이는 관문 (요청  파일 업로드/다운로드, 메타데이터 수정, 컨테이너가 생성되는 등의 요청을 의미) 요청이 들어오면 정확한 처리를 위해 accont/container/object를 찾아야함. (Ring 사용, 성능향상을 위해 memcache사용 가능) - Accont 서버 : 오브젝트 스토리지 서비스와 함께 사용될 계정 관리 - Container서버 : 컨테이너와 저장된 오브젝트와의 매핑(조합)관리 - Object 서버 : 스토리지 노드에 저장된 실제 오브젝트(파일)을 관리 각각의 서버들은 서로 유기적으로 얽힘, 제정된 데이터를 잘 관리하기 위해 여러가지 프로세스를 돌림  replication(복제)프로세스 Replication프로세스 : 데이터 일관성과 고 가용성을 제공하기 위한 복제 프로세스 Swift
  • 70. ※ ESXi 클립보드 호환 (해당 vm) 1. VMware Tools가 설치 2. 가상머신>설정편집>옵션>일반>구성매개변수>추가> isolation.tools.copy.disable false isolation.tools.paste.disable false ※ ESXi 클립보드 호환 (전체) 1. SSH를 이용해서 ESXi 호스트에 root 유저로 로그인합니다. 2. /etc/vmware/config 파일을 백업합니다. (cp /etc/vmware/config /etc/vmware/config.bak) 3. /etc/vmware/config 파일을 엽니다 (vi /etc/vmware/config) 4. config 파일에 다음 내용을 추가합니다. vmx.fullpath = "/bin/vmx" isolation.tools.copy.disable="FALSE" isolation.tools.paste.disable="FALSE" 5. 파일을 저장합니다. 6. 리부팅 ETC
  • 71. ※ ubuntu 14.04 파티션 GUI 툴 # apt-get –y install gparted # gparted # fdisk -l # fdisk /dev/sdb > n > P > 1 > (enter) > (enter) > P > w # mkfs.ext4 /dev/sdb1 : 포맷 # ls –l /dev/disk/by-uuid : uuid 확인 # mount –a # df –h : 확인  여기까지 작업 후 gparted로 확인 후 cinder 설치 ※ 추가… 참고! # mkdir /srv/repository : mout등록 # vi /etc/fstab ---------------------------------------------------------------------------------------------------------------------------------- UUID=(위에서 확인한 uuid) /srv/repository ext4 errors=remount-ro 0 1 ---------------------------------------------------------------------------------------------------------------------------------- # mount –a # chmod로 권한 설정~ # df –h : 잘 올라왔는지 확인~ ETC
  • 72. service mysql restart service rabbitmq-server restart service glance-registry restart service glance-api restart service keystone restart service nova-api restart service nova-cert restart service nova-consoleauth restart service nova-scheduler restart service nova-conductor restart service nova-novncproxy restart service neutron-server restart service apache2 restart service memcached restart (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/crontabs/keystone service openvswitch-switch restart service neutron-plugin-openvswitch-agent restart service neutron-l3-agent restart service neutron-dhcp-agent restart service neutron-metadata-agent restart service nova-compute restart service openvswitch-switch restart service neutron-plugin-openvswitch-agent restart .sh