OpenMANO包含:openvimd、opennanod和openmano-gui三部分以及兩個命令行客戶端:openvim和openmano。
OpenMANO框架
OpenMANO架構圖如上,openvimd負責管理外部組件,直接管理計算節點和圖像存儲,並通過Floodlight Openflow控制器來間接管理交換機。
環境需求:
爲了簡單體驗一下openmano,搭建NFV環境至少需要兩臺在同一LAN下的服務器:
- 一臺服務器用作controller node控制節點,運行openmano組件。Openflow控制器運行在這個節點上。可以使用虛擬機或者在compute node計算機點內部。
- 另一臺服務器用作compute node計算節點,虛擬機部署在它上面。這臺服務器必須是Linux系統、64bits OS with KVM, qemu and libvirt。爲了發揮最佳性能,compute node計算節點必須遵循指定的方法配置。
ps:在測試API和CLI時,也可以沒有compute node計算節點和Openflow控制器,在‘test’模式下運行openvim。但在這種模式下實際上並沒有部署虛擬機。
安裝
簡單起見,可以將openmano和openvim都安裝在同一臺服務器上。兩者都需要數據庫(如MySQL)。Openvim還依賴於一臺Openflow控制器。
自動安裝
可以下載並運行Ubuntu Server LAMP,執行安裝腳本。
- 下載一個VDI Ubuntu Server14.10 LAMP。運行虛擬機並執行以下指令:
wget https://github.com/nfvlabs/openmano/raw/master/scripts/install-openmano.sh
chmod +x install-openmano.sh
sudo ./install-openmano.sh #mysql-user mysql-passwd
#NOTE: you can pass as parameters the mysql user and password (**root adminuser** for this VM image)
- 也可以使用其他版本,如 Ubuntu Server 14.04 LTS (ubuntu/reverse), Ubuntu Desktop 64bits 14.04.2 LTS (osboxes/osboxes.org), CentOS 7。
手工安裝
- 在控制器節點上安裝下列工具包:mysql, python-yaml, python-libvirt, python-bottle, python-mysqldb, python-jsonchema, python-paramiko, python-bs4, python-argcomplete, git。此外還可以安裝screen工具包。
RedHat/Fedora/CentOS
#perhaps epel repository need to be installed: 'yum install epel-release; yum repolist'
sudo yum install PyYAML libvirt-python python-bottle MySQL-python \
python-jsonschema python-paramiko python-argcomplete python-requests git screen wget
Ubuntu/Debian
sudo apt-get install python-yaml python-libvirt python-bottle python-mysqldb \
python-jsonschema python-paramiko python-argcomplete python-requests git screen
- Clone git 代碼倉庫
git clone https://github.com/nfvlabs/openmano.git openmano
- 創建和初始化數據庫
創建數據庫
mysqladmin -u root -p create vim_db
mysqladmin -u root -p create mano_db
從localhost獲得訪問授權。
mysql> CREATE USER 'vim'@'localhost' identified by 'vimpw';
mysql> GRANT ALL PRIVILEGES ON vim_db.* TO 'vim'@'localhost';
mysql> CREATE USER 'mano'@'localhost' identified by 'manopw';
mysql> GRANT ALL PRIVILEGES ON mano_db.* TO 'mano'@'localhost';
編輯SQL數據庫VIM文件 host_ranking.sql 和of_ports_correspondence.sql
初始化數據庫
openvim/database_utils/init_vim_db.sh # -uvim -pvimpw
openmano/database_utils/init_mano_db.sh -umano -pmanopw
- 下載安裝floodlight-0.90 Openflow controller
- 下載安裝openmano-gui
#allow apache user 'www-data'(or 'apache') grant access to the files, changing user owner
sudo chown -R www-data ./openmano-gui #or 'apache' for other distributions
#create a link
sudo ln -s /<path...>/openmano-gui /var/www/html/openmano
#if web can not be loaded check:
# Web service is running: 'sudo service apache2(or httpd) start'
# Access permissions, e.g. parent directories have 'x' flag for others:
# 'sudo chmod o+x parent_folders'
# check SElinux access for Redhat, Centos distributions:
# sudo chcon -R --reference=/var/www ./openmano-gui
# run 'sudo tail /var/log/apache2/error.log' (or 'sudo tail /var/log/httpd/error_log') to get clues on the problem
# in case web server fails sending commands to openmano revise iptables (or firewalld) on running port (e.g. 9090)
- 配置arg-complete和添加openvim and openmano clients環境便令
#creates a bin folder and links to openmano and openvim files inside /home/user/bin folder
mkdir -p ~/bin #this folder is in the PATH for most Linux distributions
ln -s ${PWD}/openmano/openvim/openvim ~/bin/openvim
ln -s ${PWD}/openmano/openmano/openmano ~/bin/openmano
#configure argautocomplete for this user
mkdir -p ~/.bash_completion.d
activate-global-python-argcomplete --dest=/home/${USER}/.bash_completion.d
#execute . .bash_completion.d/python-argcomplete.sh at login. Add to .bashrc
echo ". .bash_completion.d/python-argcomplete.sh" >> ~/.bashrc