2012年2月28日 星期二

[Virtualization] libvirt 簡介

Libvirt 為一套提供方便的方法管理 VM 及其他虛擬功能 ( 例如:Storage 或網路 ) 的 C 語言軟體。這些軟體包含 API 函式庫、daemon (libvirtd) 及一個命令提示工具 (virsh)。
  Libvirt 的主要目標為,提供一個簡單的方法管理多個不同的虛擬化提供者或 hypervisor。舉例來說,命令 "virsh list --all" 可列出所有支援的 hypervisor (KVM、Xen、VMWare ESX 等等 )中存在的 VM。

Libvirt 所提供之主要功能為:

1 ) VM 管理:開始、停止、暫停、儲存、回復及遷移。

2 ) 支持遠端機器控制 (Remote machine support):運行 libvirt daemon 的機器皆可使用 libvirt 的所有功能,包含遠端控制機器。更多資訊,可參考 http://libvirt.org/remote.html。

3 ) Storage 管理:運行 libvirt daemon 的機器可管理不同型態的 storage。更多資訊,可參考 http://libvirt.org/storage.html。

4 ) 網路介面管理:運行 libvirt daemon 的機器可管理 physical 和 logical 網路介面。更多資訊,可參考 https://fedorahosted.org/netcf/。

5 ) 虛擬 NAT 與路由基礎網路 (Route based networking):運行 libvirt daemon 的機器可管理與產生虛擬網路 (virtual network)。更多資訊,可參考 http://libvirt.org/archnetwork.html。

Libvirt 支援:

1 ) KVM/QEMU
2 ) Xen
3 ) LXC - Linux container system
4 ) OpenVZ - Linux container system
5 ) User Mode Linux
6 ) VirtualBox
7 ) VMware ESX and GSX
8 ) VMware Workstation and Player
9 ) Microsoft Hyper-V

2012年2月13日 星期一

[OpenStack] OpenStack Dashboard 簡介與安裝

簡介:
OpenStack Dashboard 是一個以 web 為基礎的視窗提供使用者透過 OpenStack APIs 與 OpenStack Compute 雲控制器溝通。

系統需求:
1. 必須運行 OpenStack Compute 安裝並包含 Identity 與 Keystone 服務
2. 必須知道 Identity 與 Compute 的 URL
3. 必須安裝 git
4. Python 2.6 或 2.7

安裝步驟:
1. 安裝 OpenStack Dashboard 框架,其中包含 Apache 及相關模組

sudo apt-get install -y libapache2-mod-wsgi
sudo apt-get install -y openstack-dashboard openstackx python -sqlite

2. 配置 Dashboard

2.1 開啟 mysql,並輸入 root 使用者的密碼

mysql -u root -p

2.2 配置 MySQL,建立 dash 資料庫

mysql> CREATE DATABASE dash;

2.3 建立使用者,並擁有 dash 資料庫之最高權限

mysql> GRANT ALL ON dash.* TO 'dash'@'%' IDENTIFIED BY 'yourpassword';

2.4 於 /local/local_settings.py 中修正下列選項:

● DATABASE:

DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'dash',
          'USER': 'dash',
          'PASSWORD': 'yourpassword',
          'HOST': 'localhost',
          'default-character-set': 'utf8'
      },
  }


2.5 運行 syncdb 指令初始化資料庫

# If using Cloud Builders packages, do this:
  cd /var/lib/dash
  PYTHONPATH=/var/lib/dash/ python dashboard/manage.py syncdb

  # If using Managed IT packages, do this:
  /usr/share/openstack-dashboard/dashboard/manage.py syncdb


你將會看見下列結果輸出

Installing custom SQL ...
  Installing indexes ...
  DEBUG:django.db.backends:(0.008) CREATE INDEX `django_session_c25c2c28` ON`django_session` (`expire_date`);; args=()
  No fixtures found.


3. 重啟並運行 Apache 伺服器

sudo /etc/init.d/apache2 restart
sudo restart nova-api


如果安裝正確,打開瀏覽器並輸入 http://localhost 你將會看見 OpenStack Dashboard。

2012年2月7日 星期二

[OpenStack] OpenStack Compute (Nova) 簡介

Nova 的特色及功能如下:

1. Instance 生命週期 (life cycle) 管理

2. 計算資源管理

3. 網路及認證

4. REST-based API

5. 最終一致的非同步通訊

6. 支援 Xen, XenServer/XPC, KVM, UML, VMware, vSphere and Hyper-V

OpenStack Compute 組件包含:

1. API Server (nova-api):提供外界對於雲基礎架構的管理與介面。

2. Message Queue (rabbit-mq server)

3. Compute Workers (nova-compute):處理 instance 的生命週期管理,透過 Message Queue 接收

並處理生命週期管理之請求。

4. Network Controller (nova-network):處理主機網路辨別。例如:分配 IP 位址、辨別專案

VLAN 等等。

5. Volume Worker (nova-volume):用於管理 LVM-based instance volume。功能如新增、刪除及從

instance 掛 ( 卸 ) 載一個 volume。

6. Scheduler (nova-scheduler):對應 nova-API 呼叫至正確的 OpenStack 組件。

參考資料:

1. OpenStack Compute Starter Guide

    - http://docs.openstack.org/diablo/openstack-compute/starter/content/

2012年2月3日 星期五

[OpenStack] 「手動」安裝 OpenStack 後之後續設定

在 [OpenStack] 在 Ubuntu 11.10 上「手動」安裝 OpenStack 中已將「手動」安裝之前置作業及資料庫設定完成,接下來的後續設定部分,將於本篇中介紹。

首先,必須設定 nova.conf 檔案中的旗標。nova.conf 位在 /etc/nova 下,原始檔案內容如下:

--daemonize=1
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova


相關旗標資訊可參考 /bin/nova-api --help 或 OpenStack Compute Administration 手冊中 Setting Flags in the nova.conf 章節。

設定 nova.conf 後,必須產生一個 "nova" 群組

sudo addgroup nova

將 nova.conf 的權限設定給予 root,並保證使用者 nova 隸屬於 nova 群組

sudo usermod -g nova nova
chown -R root:nova /etc/nova
chmod 640 /etc/nova/nova.conf


緊接著設定 OpenStack Compute 環境,利用 Identity 服務保證資料庫 schema 的及時性。

nova-manage db sync
nova-manage user admin <user_name>
nova-manage project create <project_name> <user_name>
nova-manage network create <network-label> <project-network> <number-of-networks-in-project> <addresses-in-each-network>


旗標與環境設定完成後,需產生 Credentials (zip file)。

mkdir –p /root/creds
/usr/bin/python /usr/bin/nova-manage project zipfile $NOVA_PROJECT $NOVA_PROJECT_USER /root/creds/novacreds.zip


解壓縮 credentials 的 zip 檔在家目錄下,並加入至安裝環境中。

unzip /root/creds/novacreds.zip -d /root/creds/
cat /root/creds/novarc >> ~/.bashrc
source ~/.bashrc


最後,別忘了啟動存取 VM;使用 "euca-authorize" 指令啟動存取。

euca-authorize -P icmp -t -1:-1 default
euca-authorize -P tcp -p 22 default


如已使用 "euca-authorize" 指令,但無法透過 ping 或 SSH 方式進行存取 VM,請使用下列方法解決問題。

killall dnsmasq
service nova-network restart


安裝至此,已完成所有安裝與設定之步驟,請帶著愉快的心情使用 OpenStack 吧!:D

2012年1月29日 星期日

[Django] 解決 Django 錯誤 "CSRF verification failed. Request aborted."

在 settings.py 的 MIDDLEWARE_CLASSES 中加入下列兩行程式碼

'django.middleware.csrf.CsrfViewMiddleware' 'django.middleware.csrf.CsrfResponseMiddleware'

問題就迎刃而解囉!

2012年1月21日 星期六

[OpenStack] 在 Ubuntu 11.10 上「手動」安裝 OpenStack

目前 OpenStack 可在 Ubuntu 10.10 或 11.04 上以 root 權限安裝,若非 root 則需前置 sudo 指令。

今欲嘗試安裝 OpenStack 在 最新版本 Ubuntu 11.10 ( Oct. 2011 釋出 ) 上。

首先,安裝 Nova PPA (Personal Packages Archive) 和 python-software-properties 進行前置設定。

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:openstack-release/2011.3

執行更新

sudo apt-get update

安裝訊息 queue 伺服器,RabbitMQ

sudo apt-get install -y rabbitmq-server

安裝 Python dependencies

sudo apt-get install -y python-greenlet python-mysqldb

安裝 nova- 封包及 dependencies ( 自動安裝 )

sudo apt-get install nova-volume nova-vncproxy nova-api nova-ajax-console-proxy
sudo apt-get install nova-doc nova-scheduler nova-objectstore
sudo apt-get install nova-network nova-compute
sudo apt-get install glance


安裝支援工具,例如 euca2ools 和 unzip

sudo apt-get install -y euca2ools unzip

到目前為止,已完成前置作業;接下來將進行資料庫 ( 以 MySQL 為例 ) 安裝及設定。

首先,藉由 "pre-seed" 進行環境設定

bash
MYSQL_PASS=nova
NOVA_PASS=notnova
cat <<MYSQL_PRESEED | debconf-set-selections
mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS
mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS
mysql-server-5.1 mysql-server/start_on_boot boolean true
MYSQL_PRESEED


安裝 MySQL

sudo apt-get install -y mysql-server

編輯 /etc/mysql/my.cof 改變 "bind-address" 從本地端至任意 (0.0.0.0) 並重啟 mysql 服務

sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
sudo service mysql restart


建立 nova 資料庫

sudo mysql -u root -p$MYSQL_PASS -e 'CREATE DATABASE nova;'

更新資料庫,並給予使用者 (‘nova’@’%’) 權限

sudo mysql -u root -p$MYSQL_PASS -e "GRANT ALL PRIVILEGES ON *.* TO 'nova'@'%' WITH GRANT OPTION;"

設定使用者 (‘nova’@’%’) 密碼

sudo mysql -u root -p$MYSQL_PASS -e "SET PASSWORD FOR 'nova'@'%' = PASSWORD('$NOVA_PASS');"

2012年1月20日 星期五

[Cloud] 雲端運算五四三

雲端運算 (cloud computing) 包含

五個必要特色 (essential charateristics),四個部屬模組 (deployment models) 以及三個服務模式 (service models)。

其中,五個必要特色為:
     ● On-demand self-service
     ● Broad network access
     ● Resource pooling
     ● Rapid elasticity
     ● Measured service

四個部屬模組為:
     ◎ 私有雲 (private cloud)
     ◎ 社群雲 (community cloud)
     ◎ 公有雲 (public cloud)
     ◎ 綜合雲 (hybrid cloud)

三個服務模式:
    ○ SaaS
    ○ PaaS
    ○ IaaS

另外,找到一份不錯的文件,參考參考!http://people.chu.edu.tw/~b09602005/attach1122.pdf

參考資料:
1. The NIST Definition of Cloud Computing
    - http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf