OpenStack SFC 서비스
OpenStack 환경에서 여러가지 서비스를 제공할 수 있는데 대표적인 것이 Firewall As A Service(FaaS)이다.
최근 NFV(Network Function Virtualization)가 각광을 받으면서 당연히 OpenStack이 더욱 주목을 받고 있다.
쉽게 말하면 OpenStack을 사용하여 Cloud 환경을 구축하고 NFV 개념이 포함된 VM을 생성하여 네트워킹 서비스를 제공하는 것이다.
네트워킹 서비스를 제공하는데 있어 NFV VM들을 묶어 끊임없는 네트워크 서비스를 제공하는 것이 SFC의 골자인데 SFC라고 함은 Service Function Chaining의 약자이다.
<Service Function Chaining 대표도, 참고: http://getcloudify.org/2016/02/24/sdn-mwc-open-source-network-cloud-etsi-vnf-nfv-orchestration-automation.html>
위 대표도에서 굉장히 광범위하게 설명하자면 Firewall, Malware Detection, Parental Controls, Video Optimizer 등이 OpenStack에서 구성한 VM(NFV 기능)이라고 할때 사용자들은 하나의 서비스를 받기위하여 Firewall 등의 서비스를 거칠 수 있게 하는 것이다.
즉 사용자가 Video 서비스를 제공받는다고 하는 경우 별도의 Firewall, Video Optimizer 없이 해당 기능이 포함된 VM을 통하여 네트워킹 될 수 있도록 하는 서비스이다.
OpenStack에서는 networking-sfc 라는 프로젝트로 시작이 되고 있으며 아래 내용은 networking-sfc wiki 페이지를 참조한 implementation 방법이다.
참조사이트: https://wiki.openstack.org/wiki/Neutron/ServiceInsertionAndChaining
devstack & networking-sfc Basic Setup
1. 기본 설정
1-1. VirtualBox
- ubuntu 14.0.4 이미지 활용
- VM 2개 생성: devstack all-in-one / compute
- VM 인터페이스는 어댑터1: NAT, 어댑터2: 호스트전용어댑터
- 각자의 환경에 맞도록 설정
###### VirtualBox All-in-One VM ######
$ sudo vi /etc/network/interfaces
# Public Network
auto eth0
iface eth0 inet static
address 10.0.2.5
gateway 10.0.2.2
netmask 255.255.255.0
dns-nameservers 8.8.8.8
# Management Network
auto eth1
iface eth1 inet static
address 192.168.56.5
netmask 255.255.255.0
################################
###### VirtualBox Compute VM ######
$ sudo vi /etc/network/interfaces
# Public Network
auto eth0
iface eth0 inet static
address 10.0.2.10
gateway 10.0.2.2
netmask 255.255.255.0
dns-nameservers 8.8.8.8
# Management Network
auto eth1
iface eth1 inet static
address 192.168.56.10
netmask 255.255.255.0
################################
1-2. 업데이트 & 업그레이드 / 필수 프로그램 설치
$ sudo apt-get update
$ sudo apt-get -y upgrade
1-3. OpenStack liberty Repository 설정
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository cloud-archive:liberty
1-4. devstack 및 networking-sfc 설치 디렉토리
$ sudo mkdir /opt/stack
$ sudo chown stack.stack /opt/stack
2. networking-sfc setup
2-1. networking-sfc download (All_in_one & Compute)
$ sudo apt-get install -y git
$ cd /opt/stack
$ git clone git://git.openstack.org/openstack/networking-sfc.git -b stable/liberty
3. devstack setup
3-1. devstack download (All_in_one & Compute)
$ cd /opt/stack
$ git clone git://git.openstack.org/openstack-dev/devstack.git -b stable/liberty
4. devstack 실행
4-1. 버추얼박스 VM01: All-in-One (Controller+Network+Compute)
$ cd /opt/stack/devstack
$ vi localrc
SERVICE_TOKEN=admin
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=admin
RABBIT_PASSWORD=admin
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=192.168.56.5 (All-in-One VM의 eth1 IP)
SERVICE_HOST=192.168.56.5 (All-in-One VM의 eth1 IP)
SYSLOG=True
SYSLOG_HOST=$HOST_IP
SYSLOG_PORT=516
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
disable_service tempest
RECLONE=no
PIP_UPGRADE=False
MULTI_HOST=TRUE
# Disable Nova Networking
disable_service n-net
# Disable Nova Compute
#disable_service n-cpu
# Neutron - Networking Service
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service neutron
# Cinder
disable_service c-api
disable_service c-sch
disable_service c-vol
# Disable security groups
Q_USE_SECGROUP=False
LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver
enable_plugin networking-sfc /opt/stack/networking-sfc
$ ./stack.sh
4-2. 버추얼박스 VM02: Compute
$ cd /opt/stack/devstack
$ vi localrc
SERVICE_TOKEN=admin
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=admin
RABBIT_PASSWORD=admin
DATABASE_PASSWORD=admin
SERVICE_PASSWORD=$ADMIN_PASSWORD
DATABASE_TYPE=mysql
HOST_IP=192.168.56.10 (Compute VM의 eth1 IP)
SERVICE_HOST=192.168.56.5 (All-in-One VM의 eth1 IP)
SYSLOG=True
SYSLOG_HOST=$HOST_IP
SYSLOG_PORT=516
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
Q_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
disable_service tempest
RECLONE=no
PIP_UPGRADE=False
MULTI_HOST=TRUE
# Disable Nova Networking
disable_service n-net
disable_service neutron
# Neutron - Networking Service
ENABLED_SERVICES=n-cpu,q-agt
# Disable security groups
Q_USE_SECGROUP=False
LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver
enable_plugin networking-sfc /opt/stack/networking-sfc
$ ./stack.sh
5. 사용자 UI 접속 및 서비스 사용
horizon url : http://<All-in-One eth1 IP>
user name : admin
password : admin
#############################################################
현재 DevStack 만 지원하는 듯 함...
Multi Node 에 설치하는 경우 설치는 문제 없으나 networking-sfc의 flow가 보이지 않음
(https://ask.openstack.org/en/question/91643/using-networking-sfc-with-liberty-neutron-not-a-devstack/)
WARNING!!!
현재 devstack stable/liberty 와 networking-sfc 사이의 ovs 버전이 매치되지 않아 에러가 발생함...
now a time. devstack ovs and networking-sfc miss-match.
'Cloud Native > Research_OpenStack' 카테고리의 다른 글
OpenStack SFC Flow 분석 (1) | 2016.07.06 |
---|---|
OpenStack SFC manual Install (Liberty) (4) | 2016.06.11 |
OpenStack REST 확인 (0) | 2015.10.19 |
OpenStack DVR - SlideShare (0) | 2015.06.29 |
OpenStack DVR – DNAT Traffic (0) | 2015.06.29 |