From: http://www.vpsee.com/2011/05/install-openstack-nova-on-ubuntu/
OpenStack 是由 Rackspace和 NASA 共同開發的雲計算平臺,幫助服務商和企業內部實現相似於 Amazon EC2 和 S3 的雲基礎架構服務(Infrastructure as a Service, IaaS)。OpenStack 包含兩個主要模塊:Nova 和 Swift,前者是 NASA 開發的虛擬服務器部署和業務計算模塊;後者是 Rackspack 開發的分佈式雲存儲模塊,二者能夠一塊兒用,也能夠分開單獨用。OpenStack 是開源項目,除了有 Rackspace 和 NASA 的大力支持外,後面還有包括 Dell, Citrix, Cisco, Canonical 這些重量級公司的貢獻和支持,發展速度很是快,有取代另外一個業界領先開源雲平臺 Eucalyptus 的態勢。
OpenStack 是 Python 2.6 寫的,CentOS 5.6 上默認的是 Python 2.4 的環境而且還有不少依賴關係不容易升級到 2.6,因此在 Ubuntu 上安裝會簡單一些,並且 Ubuntu 是 OpenStack 的官方首選系統,文檔都是按 Ubuntu 寫的,因此這裏 VPSee 採用最新的 Ubuntu 11.04 Server 64bit 版原本安裝和配置 OpenStack Nova.
配置網絡
在安裝完基本的 Ubuntu 11.04 Server 系統後升級和更新整個系統,安裝完 bridge-utils 包後重啓系統:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install bridge-utils
$ sudo reboot
配置網橋:
$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16.39.111
netmask 255.255.254.0
gateway 172.16.38.1前端
auto br100 //配置網橋
iface br100 inet static
bridge_ports eth1
bridge_stp off
bridge_maxwait 0
bridge_fd 0
address 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.255.255
關於 FlatManager 網絡配置可參考:OpenStack Nova 安裝後的 FlatManager 網絡配置。
安裝 NTP 服務
OpenStack Nova 須要 NTP 服務器來保持全部節點服務器(Cloud Compute)的時間同步,因此須要在前端控制服務器(Cloud Controller)上安裝 NTP 服務器,而後在節點服務器上安裝 NTP 客戶端保持與前端的同步:
$ sudo apt-get install ntp
$ sudo vi /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
$ sudo /etc/init.d/ntp restart
安裝和配置 MySQL 數據庫
OpenStack Nova 須要數據庫的支持,這裏選用 MySQL(固然也能夠用其餘的數據庫,好比 PostgreSQL 等):
$ sudo apt-get install mysql-server
修改 MySQL 綁定地址,以便其餘的節點服務器也能訪問這個數據庫:
$ sudo vi /etc/mysql/my.cnf
...
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
...
$ sudo /etc/init.d/mysql restart
建立一個名爲 nova 的數據庫,並設置 root 從任何 IP 訪問的權限和密碼:
$ sudo mysql -uroot -ppassword -e 'CREATE DATABASE nova;'
$ sudo mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON *.* TO \
'root'@'%' WITH GRANT OPTION;"
$ sudo mysql -uroot -ppassword -e "SET PASSWORD FOR \
'root'@'%' = PASSWORD('password');"
安裝 Glance 鏡像服務
Glance 是個鏡像服務器,用來給OpenStack Nova提供操做系統鏡像(image)服務,提供可選擇的操做系統模版(鏡像)。
$ sudo apt-get install glance
安裝 OpenStack Nova
OpenStack Nova 已經進入 Ubuntu 11.04 源,因此直接安裝就能夠了,沒必要源碼安裝:
$ sudo apt-get install rabbitmq-server nova-common nova-doc python-nova
nova-api nova-network nova-volume nova-objectstore nova-scheduler nova-compute
$ sudo apt-get install -y euca2ools
$ sudo apt-get install -y unzip
配置 Nova:
$ sudo vi /etc/nova/nova.conf
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--verbose
--s3_host=172.16.39.111
--rabbit_host=192.168.0.1
--cc_host=192.168.0.1
--ec2_url=http://172.16.39.111:8773/services/Cloud
--fixed_range=192.168.0.0/16
--network_size=8
--FAKE_subdomain=ec2
--routing_source_ip=192.168.0.1
--sql_connection=mysql://root:password@172.16.39.111/nova
--glance_host=192.168.0.1
--image_service=nova.image.glance.GlanceImageService
重啓nova相關服務以便設置生效:
$ sudo restart libvirt-bin; sudo restart nova-network;
sudo restart nova-compute; sudo restart nova-api;
sudo restart nova-objectstore; sudo restart nova-scheduler;
sudo restart nova-volume; sudo restart glance-api; sudo restart glance-registry
使用 Nova
開始使用Nova前須要建立nova 數據庫表、建立網絡、建立管理員賬號、建立雲並聯到剛纔建立的管理員上:
$ sudo nova-manage db sync
$ sudo nova-manage network create 192.168.0.0/24 1 255
$ sudo nova-manage floating create 10.10.10.2 10.10.10.224/27
$ sudo nova-manage user admin vpsee
$ sudo nova-manage project create mycloud vpsee
由於多個管理員能夠建立多個不一樣的雲,因此某個雲的管理員須要特定的權限才能訪問和管理本身的Nova 雲,建立權限信息,並解壓到本身的目錄裏,須要注意的是每次使用nova管理雲的時候都須要讀取novarc裏面的配置信息:
$ mkdir /home/vpsee/creds
$ sudo nova-manage project zipfile mycloud vpsee /home/vpsee/creds/novacreds.zip
$ cd /home/vpsee/creds
$ unzip novacreds.zip
$ sudo chown -R vpsee:vpsee /home/vpsee/creds/
$ source /home/vpsee/creds/novarc
每次用 nova 的時候都要用到novarc 裏面的環境變量,每次 source novarc 很麻煩,因此最好加到 .bashrc 裏面:
$ cat /home/vpsee/creds/novarc >> /home/vpsee/.bashrc
$ source /home/vpsee/.bashrc
再次重啓 nova 相關的全部服務:
$ sudo restart libvirt-bin; sudo restart nova-network;
sudo restart nova-compute; sudo restart nova-api;
sudo restart nova-objectstore; sudo restart nova-scheduler;
sudo restart nova-volume; sudo restart glance-api; sudo restart glance-registry
若是一切正常的話,應該能夠打印出以下的相似信息:
$ euca-describe-availability-zones verbose
AVAILABILITYZONE nova available
AVAILABILITYZONE |- node00
AVAILABILITYZONE | |- nova-scheduler enabled :-) 2011-05-22 10:32:31
AVAILABILITYZONE | |- nova-network enabled :-) 2011-05-22 10:32:32
AVAILABILITYZONE | |- nova-compute enabled :-) 2011-05-22 10:32:24
若是出現這個問題,檢查 novarc 這個文件看看 EC2_URL, S3_URL, NOVA_URL 這三行是否是有兩個連續的 http://?
$ euca-describe-availability-zones verbose
invalid literal for int() with base 10: ''
$ vi /home/vpsee/creds/novarc
...
export EC2_URL="http://http://172.16.39.100:8773/services/Cloud"
export S3_URL="http://http://172.16.39.100:3333"
...
export NOVA_URL="http://http://172.16.39.100:8774/v1.1/"
...
刪除一個 http:// 就能夠了:
$ vi /home/vpsee/creds/novarc
...
export EC2_URL="http://172.16.39.100:8773/services/Cloud"
export S3_URL="http://172.16.39.100:3333"
...
export NOVA_URL="http://172.16.39.100:8774/v1.1/"
...
啓動第一個實例
啓動實例以前須要先上傳一個系統模版,咱們稱之爲鏡像(image),本身製做操做系統鏡像有點麻煩(請看:爲 OpenStack Nova 製做 Ubuntu 鏡像,爲 OpenStack Nova 製做 CentOS 鏡像和爲 OpenStack Nova 製做 Windows 鏡像。),這裏直接使用一個已經作好的 Ubuntu 10.10 版本鏡像,下載已經作好的鏡像文件並上傳到鏡像服務器(這裏鏡像服務器和前端服務器在同一臺物理服務器上):
$ wget http://c0179148.cdn1.cloudfiles.rackspacecloud.com/ubuntu1010-UEC-localuser-image.tar.gz
$ uec-publish-tarball ubuntu1010-UEC-localuser-image.tar.gz ubuntu1010-bucket x86_64
列出雲裏現有的能夠加載的鏡像,並以某個鏡像(好比編號爲 ami-00000003)爲模版啓動一個實例(操做系統):
$ euca-describe-images
IMAGE aki-00000001 ubuntu1010-bucket/vmlinuz-2.6.32-28-server.manifest.xml available public x86_64 kernel
IMAGE ari-00000002 ubuntu1010-bucket/initrd.img-2.6.32-28-server.manifest.xmavailable public x86_64 ramdisk
IMAGE ami-00000003 ubuntu1010-bucket/maverick-server-uec-amd64.img.manifest.xml available public x86_64 machine aki-00000001 ari-00000002
$ euca-add-keypair mykey > mykey.priv
$ euca-run-instances -k mykey -t m1.tiny ami-00000003
檢查一下實例是否成功啓動和運行:
$ virsh list
Id Name State
----------------------------------
1 instance-00000001 running
訪問實例
啓動實例後怎麼訪問呢?和訪問 VPS 同樣,須要 IP 地址而後 ssh 訪問,還記得上面的網絡配置麼,新建立的系統將按照 192.168.0.x 的形式分配 IP,因此 192.168.0.3 就是剛剛 euca-run-instances 建立的實例的 IP 地址:
$ ssh ubuntu@192.168.0.3node