Ubuntu 12.04 下 Openstack Essex安裝過程詳解
規劃
Ubuntu 12.04 (“PrecisePangolin”) 安裝 OpenStack Essex http://www.linuxidc.com/Linux/2012-05/60581.htm
這次是採用Ubuntu 12.04 正式版本,在一臺物理服務器上安裝。機器會有兩塊硬盤。
2塊網卡 2塊硬盤,另外一塊給volume使用。
1:數據庫規劃
nova,keystone,glance,都需要用到數據庫。對於keystone和glance,默認是採用sqlite,文檔全部會改成使用mysql作爲數據庫。
所以我們需要創建3個數據庫
數據庫管理員 密碼
nova nova password
keystone keystone password
glance glance password
2:keystone 的token
默認keystone的token:ADMIN
爲了方便,我們把keystone的token設置成:1234567890
admin_token = 1234567890
3:租戶和管理員
我們需要創建一個admin的租戶,這個租戶下有一個admin的管理員,管理員的密碼是admin
這其實也是你web登陸的用戶名和密碼。
admin_tenant_name = admin
admin_user = admin
admin_password = admin
4:網絡規劃
Eth0: 公網IP:172.16.10.6
Eth1: 不需要設置IP
Floating IP: 172.16.10.32/27 (虛擬機的公網IP)
Fix IP:10.10.10.32/27 (虛擬機的固定IP)
1:下載Ubuntu 12.04. 服務器版本
ubuntu 12.04正式版本, 下載見http://www.linuxidc.com/Linux/2012-04/59239.htm
2:安裝OS
安裝系統倒是簡單。由於我的服務器是兩塊硬盤,
1塊硬盤是裝操作系統,另外一塊是給nova-volume使用。nova-volume需要一個單獨的分區或者一塊硬盤。
IP地址的設置,可以等裝完系統再修改,問題不大。最小化安裝,只需要安裝ssh server就可以。
裝完系統後。
apt-get update
apt-get upgrade
更新源裏的包,更新系統。確保你裝的是最新版本的包。
爲了方便,我所有操作都是root權限下進行。
sudo passwd root
就可以給root設置密碼。用root登陸。
3:網絡
# cat /etc/network/interfaces
# This file describes the network interfacesavailable on your system
# and how to activate them. For moreinformation, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 172.16.10.6
netmask 255.255.0.0
network 172.16.0.0
broadcast 172.16.255.255
gateway 172.16.10.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 114.114.114.114
dns-search test.com
4:創建nova-volume
我要對第二塊硬盤創建一個vg,名字爲nova-volume
parted /dev/sdb --script mklabel gpt
parted /dev/sdb --script -- mkpart primary0 -1
parted /dev/sdb --script print
pvcreate /dev/sdb1
vgcreate nova-volumes /dev/sdb1
5:安裝必備軟件
我把要用的軟件都裝上,不需要一個一個安裝
apt-get install -y ntp tgt open-iscsi open-iscsi-utilsrabbitmq-server memcached python-memcache kvm libvirt-bin euca2ools
6:安裝數據庫
安裝mysql
過程中,會提示你輸入root密碼。
apt-get install -y mysql-serverpython-mysqldb
讓mysql支持外部訪問
sed -i 's/127.0.0.1/0.0.0.0/g'/etc/mysql/my.cnf
service mysql restart
創建nova,keystone,glance數據庫
mysql -uroot -p
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO'nova'@'%' IDENTIFIED BY 'password';
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'IDENTIFIED BY 'password';
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'%' IDENTIFIED BY 'password';
quit
在Openstack裏,keystone的位置非常重要,所有的組件的認證授權,都需要經過他。
1:安裝keystone
apt-get install -y keystone python-keystonepython-keystoneclient
2:配置keystone
需要修改 /etc/keystone/keystone.conf 3個地方
默認定義的token就是ADMIN,改成:1234567890
[DEFAULT]
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
#admin_token = ADMIN
admin_token =1234567890
mysql的連接,默認是採用sqlite
[sql]
#connection =sqlite:////var/lib/keystone/keystone.db
connection=mysql://keystone:[email protected]:3306/keystone
idle_timeout = 200
修改catalog
[catalog]
#driver =keystone.catalog.backends.sql.Catalog
driver =keystone.catalog.backends.templated.TemplatedCatalog
template_file =/etc/keystone/default_catalog.templates
重啓服務和同步數據庫
service keystone restart
keystone-manage db_sync
3: 導入數據
這個比較有技術含量。通過修改devstack的keystone_data.sh 腳本。實現導入數據。
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
下載腳本
wgethttp://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
mv keystone_data.sh_.txt keystone_data.sh
讓腳本可運行
chmod +x keystone_data.sh
運行腳本前, 你需要修改腳本。修改兩個地方
第一個是登錄dashboard的admin的密碼
第二個就是keystone的token
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
#export SERVICE_TOKEN="hastexo"
export SERVICE_TOKEN="1234567890"
exportSERVICE_ENDPOINT="http://localhost:35357/v2.0"
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
運行腳本
#./keystone_data.sh
4:檢查keystone是否運行正常
設置環境變量,
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
exportOS_AUTH_URL="http://localhost:5000/v2.0/"
檢查一下環境變量是否生效
# export | grep OS_
輸出下面內容就表示正常
declare -xOS_AUTH_URL="http://localhost:5000/v2.0/"
declare -x OS_PASSWORD="admin"
declare -x OS_TENANT_NAME="admin"
declare -x OS_USERNAME="admin"
運行
keystone user-list
5:設置系統的環境變量
環境變量設置,如果退出後,就需要再次設置,爲了後面試驗的方便,我修改系統的環境變量
修改/etc/profile , 在最後面添加下面內容
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
exportOS_AUTH_URL="http://localhost:5000/v2.0/"
export EC2_URL=$(keystone catalog --serviceec2 | awk '/ publicURL / { print $4 }')
export CREDS=$(keystone ec2-credentials-create)
export EC2_ACCESS_KEY=$(echo"$CREDS" | awk '/ access / { print $4 }')
export EC2_SECRET_KEY=$(echo"$CREDS" | awk '/ secret / { print $4 }')
退出ssh,再登陸就生效。
Glance是用作鏡像管理使用。
1:安裝軟件
apt-get install -y glance glance-apiglance-client glance-common glance-registry python-glance
2:配置/etc/glance/glance-api-paste.ini
修改文件最後3行,這些設置都是keystone導入數據的時候設置的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name = admin
admin_user = admin
admin_password = admin
3:設置/etc/glance/glance-registry-paste.ini
也是修改文件最後3行,和上面是一樣的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name = admin
admin_user = admin
admin_password = admin
4:配置/etc/glance/glance-registry.conf
修改
#sql_connection =sqlite:////var/lib/glance/glance.sqlite
sql_connection =mysql://glance:[email protected]/glance
在末尾添加兩行
[paste_deploy]
flavor = keystone
5:配置/etc/glance/glance-api.conf
在末尾添加兩行
[paste_deploy]
flavor = keystone
6:同步數據庫
目前glance 需要手工同步數據庫。
glance-manage version_control 0
glance-manage db_sync
/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_format.py:47:SADeprecationWarning: useexisting is deprecated. Use extend_existing.
useexisting=True)
重啓服務
# service glance-api restart &&service glance-registry restart
glance-api stop/waiting
glance-api start/running, process 13321
stop: Unknown instance:
glance-registry start/running, process13327
7:驗證glance服務是否正常
glance index
沒任何輸出表示正常。
# glance --version
glance 2012.1
8:下載鏡像並上傳
Ubuntu官方專門提供image,不過一定要注意
這些鏡像,都是必須使用密鑰登錄,直接用用戶名密碼是無法的登錄的。
另外ubuntu有兩個地方提供類似的image,
http://cloud-images.ubuntu.com/precise/
http://uec-images.ubuntu.com/releases/
我估計ubuntu會推薦大家在http://cloud-images.ubuntu.com下載image。到底他們間有啥區別,還沒搞清楚。ubuntu目前還在更新cloud-image裏面的內容。
下載鏡像
http://cloud-images.ubuntu.com/precise/current/
這應該是ubuntu提供的最新的穩定的鏡像。
wgethttp://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
上傳鏡像
glance add name="Ubuntu 12.04 cloudimgamd64" is_public=true container_format=ovf disk_format=qcow2 </root/precise-server-cloudimg-amd64-disk1.img
這個時候
glance index
就可以看到image
1:安裝nova相關組件
apt-get install -y nova-api nova-certnova-common nova-compute nova-compute-kvm nova-doc nova-networknova-objectstore nova-scheduler nova-volume python-nova python-novaclient nova-consoleauth python-novnc novnc
2:配置/etc/nova/nova.conf
把nova.conf 原來的內容刪除掉。直接貼下面內容。重點需要注意的是,
如果你是在虛擬機裏測試Openstack。你需要把默認的虛擬化引擎從kvm改成qemu。
nova的配置,等下再補上。
[DEFAULT]
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
allow_admin_api=true
use_deprecated_auth=false
auth_strategy=keystone
scheduler_driver=nova.scheduler.simple.SimpleScheduler
s3_host=172.16.10.6
ec2_host=172.16.10.6
rabbit_host=172.16.10.6
cc_host=172.16.10.6
nova_url=http://172.16.10.6:8774/v1.1/
routing_source_ip=172.16.10.6
glance_api_servers=172.16.10.6:9292
image_service=nova.image.glance.GlanceImageService
iscsi_ip_prefix=10.10.10
sql_connection=mysql://nova:[email protected]/nova
ec2_url=http://172.16.10.6:8773/services/Cloud
keystone_ec2_url=http://172.16.10.6:5000/v2.0/ec2tokens
api_paste_config=/etc/nova/api-paste.ini
libvirt_type=kvm
libvirt_use_virtio_for_bridges=true
start_guests_on_host_boot=true
resume_guests_state_on_host_boot=true
novnc_enable=true
novncproxy_base_url=http://172.16.10.6:6080/vnc_auto.html
vncserver_proxyclient_address=127.0.0.1
vncserver_listen=127.0.0.1
network_manager=nova.network.manager.FlatDHCPManager
public_interface=eth0
flat_interface=eth1
flat_network_bridge=br0
floating_range=172.16.10.32/27
flat_injected=False
force_dhcp_release=true
iscsi_helper=tgtadm
connection_type=libvirt
root_helper=sudo nova-rootwrap
verbose=False
3:配置/etc/nova/api-paste.ini
也是修改文件最後3行,
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name = admin
admin_user = admin
admin_password = admin
4:停止和重啓nova相關服務
for a in libvirt-bin nova-networknova-compute nova-api nova-objectstore nova-scheduler novnc nova-volumenova-consoleauth; do service "$a" restart; done
5:同步數據庫
nova-manage db sync
沒有任何輸出,就表示正常。
6:創建網絡
nova-manage network create private--fixed_range_v4=10.10.10.32/27 --num_networks=1 --bridge=br100--bridge_interface=eth1 --network_size=32
nova-manage floating create--ip_range=172.16.10.32/27
檢查nova服務
nova-manage service list
對於安裝和配置來說,這是最簡單的,裝完就馬上可以使用。以前還需要配置一下使用memcache,現在默認就啓用,基本什麼都不需要配置。
安裝dashbaord
apt-get install libapache2-mod-wsgiopenstack-dashboard
這個時候,你就可以登錄dashboard
http://172.16.10.6
user:admin
pass:admin
使用Dashboard
登陸後,如何創建和使用虛擬機呢。是web界面,如果沒用過EC2,估計你還是比較暈。下面是8步驟來讓你熟悉Dashboard使用。
設置安全組
創建keypair
創建虛擬機
vpc訪問
floating IP設定
SecureCRT訪問虛擬機
給虛擬機添加硬盤
虛擬機創建快照
1:設置安全組 (security group)
這是相當於打開防火牆端口,允許ssh和ping虛擬機。這是重點,不設置這個,你基本是無法訪問到虛擬機。經常有朋友問,虛擬機在跑着,如何訪問。
2:創建keypair
創建完後,會把私鑰下載到本地,公鑰會注入到你創建的虛擬機裏,你必須用私鑰登陸。私鑰的後綴是:pem
登陸的用戶名是:ec2。注意,Ubuntu提供的所有image,你是必須用私鑰登陸。
3:創建虛擬機
這就是比較簡單,正常創建就可以,會用到keypair和安全組,建議別選擇tiny類型。
tiny,硬盤空間是0,表示當初做image的時候是多大,他就是多大。應該就只有2G的空間大小。另外我這種類型,我無法attach volume。
4:vnc訪問
5:floating IP設定
6:SecureCRT訪問虛擬機
ScureCRT6.0,已經支持pem私鑰,直接使用就可以
這就完成了登陸ssh。
7:設置volume
先創建一個10G的volume
ssh到虛擬機後
ubuntu@test:~$ ls /dev/vd*
/dev/vda /dev/vda1 /dev/vdb /dev/vdc
ubuntu@test:~$
這個時候,你就可以。剩下的就是如何分區,格式化,掛載。