实战派带你玩真正的大数据,14周高强度特训!

锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
查看: 15560|回复: 4

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑 , S8 K' h) n8 G7 h8 r
6 @/ |4 B; G9 C- W5 ]% `
之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。
6 \- V3 w8 k" C1 Q
+ Y- e% g6 M( k0 w: H# j+ s+ u4 _原文如下:
% L. A7 M) I  W
- C# C" p' @5 j1 e8 UUbuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex
, w, I. m( \' w9 A这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。, j9 ^  e, d0 j1 i
原文! a3 X+ W- G& w1 D- }
我下面的步骤,也就全部参考原文。
7 t0 J: L" @2 v, V$ v3月27日更新:基本完成文档内容
: ?- d4 ?5 Y5 h% q1 Q0 v1 H( L8 ^4月5日更新:重新安装第三次,修改了文档一下小错误。
* A; E# j; t* i" K3 Z* \4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖2 O" }, y; d, A" I) U6 Q* [- X
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
/ G3 u* ?( f, V" _4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。3 l$ b  ]- u- U' a( i; Q3 G0 [
4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。* T( l$ ^$ U; {0 w1 |$ \( T3 _
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。; \) Y" |3 A. a; D6 e& K
5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。& R1 m( T* J6 F" x+ j2 p/ a
5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。
" S& V# w$ o3 g8 k
! n0 V6 y: |4 r6 m6 g" Z: A硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。
; G2 k0 p  j. N# P下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
5 _2 s) P' S6 b3 }4 r2 X- J为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
2 e" B& A( w8 I- t1 N. s" p" V8 H2 @+ [# H目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。: ^! t* |) m3 M- W0 D5 [: B
  t/ f1 E; k$ s7 q6 t* o
一:准备系统
* V) z: ?5 P. [' R+ t$ l1:下载ubuntu 12.04. 服务器版本9 X- x- D& T) F" C4 Y
ubuntu12.04正式版本,需要4月26号发布,目前是beta2- {" L. m- |, X6 t
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso  S/ M5 o9 U) [) o- c7 d) n
- k; Q: L- X! u# A8 C: r+ \/ ^
2:安装OS. T& {$ D; [3 f# T( L) _
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。! G+ j) I* W( g) C8 G: a4 s+ b3 i. A
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。/ {) [! ]8 i- P9 _5 s4 y
装完系统后。- ?& d, ^2 P9 X! c
apt-get update) w  M& ]' z0 d/ q# B4 A. [
apt-get upgrade" d1 _8 t* m. _" b! G0 P. g- Y
更新源里的包,更新系统。确保你装的是最新版本的包。3 N/ E3 h. C; U- q  H

- }% A# r, c$ R; M  t5 c1 @' H3:设置root权限
* G0 V7 Z3 K, b  V9 N, U# T' k' q为了简单,全部都是用root来运行。, R5 s& Y! B3 r  E3 k
sudo passwd
2 q1 s' \0 N1 x- E/ d( F# j: t就可以给root设置一个密码。直接用root运行。
1 U9 O8 E* t8 j$ r4:设置网络0 Z4 K. ?2 b7 L, @: A
我的网络设置和文档是完全一样。这样也减少错误的几率。
5 H8 C: I( {5 Zroot@node6:~# cat /etc/network/interfaces
$ {+ w8 o  s4 C" K* w+ h# This file describes the network interfaces available on your system
! i# T4 `# ^# a! V, W5 d9 N% E# and how to activate them. For more information, see interfaces(5).7 E! l7 J% d' V0 _0 p
* r2 ]- _, w/ v9 Y# f
# The loopback network interface* w5 r! p4 O- |6 P3 r- F$ T
auto lo8 \+ g* U  ]/ f1 K0 h0 K* ]" T
iface lo inet loopback- c" j, L% H% c# I  b, p
" Y: j/ F9 |' G: H+ v
# The primary network interface- e' N* g8 D! m+ C* |
auto eth0# t7 G7 I% M2 D3 d  h
iface eth0 inet static
$ d2 [  x2 x3 U- I* i        address 10.42.0.64 E& O7 E- a% p& D) Q3 t& |% F! S6 n
        netmask 255.255.255.0
3 |" j. i6 S: _- r        network 10.42.0.0, ?2 K0 K* F/ |# n) e# X
        broadcast 10.42.0.255/ c7 \& i" T" h; B, R6 ~8 P
        gateway 10.42.0.1: @% r+ Y( X1 W9 l; E
        # dns-* options are implemented by the resolvconf package, if installed, h+ D2 y+ n# N% \$ h3 ^- i/ v
        dns-nameservers 114.114.114.114% G. y3 Z$ d+ I( f) u! a0 C
        dns-search test.com
2 U2 d; w& a6 P! J5 Z4 S
) M# k: z  p3 X  l4 Y$ o5 Qauto eth1# i6 V; t6 ^, ]/ G1 _
iface eth1 inet static$ x8 g+ D; \+ |5 b0 f
address 192.168.22.1# _0 \6 M# ]2 _5 y6 E" I
network 192.168.22.08 w+ k$ ?. y/ ^1 g. T; ^
netmask 255.255.255.0  U' n3 ?% d6 @+ p7 I
broadcast 192.168.22.255
$ F7 G3 |8 f3 G, k; r. C
1 [$ J0 A4 C+ t/ Y4 z. z 重启网络,让修改生效. ]$ o% G  q  d4 Y
/etc/init.d/networking restart" G4 o2 c( f( m4 z( k- z
5:安装bridge+ T: w2 t1 k; a$ j: w* @( w
apt-get install bridge-utils
8 }1 L% m1 \0 K& e重启网络或者重启一下机器都可以0 U7 K8 d& ?) C* ^( M/ k* T  u) A
/etc/init.d/networking restart. D6 o+ a7 W+ V/ h- ~
6:设置NTP
8 r1 W5 X7 [8 B$ tapt-get install ntp- D2 i0 B3 d3 j6 h8 u) `, F

( B& C' ^: `" c6 U编辑 /etc/ntp.conf 在末尾添加下面3行
2 @0 a; w9 Q% @  a
" s; A& ]7 E8 E+ |server ntp.ubuntu.com iburst
5 B- w, @# p2 N6 t+ vserver 127.127.1.0
& L" P3 A# M2 n/ x% _( b$ a$ e+ ~fudge 127.127.1.0 stratum 10
/ w* c8 N' A9 l  H/ c2 W/ X
* q# V4 x2 \8 y1 Q& M; ~" K重启服务
! }1 T: x7 R9 S) L& p* {: Dservice ntp restart+ p6 ~; x) A7 |1 }5 b7 F" o
7:设置Iscsi
0 w0 s. L7 U. T3 f, G: iapt-get install tgt7 }% F- V, b* N- L  `; A
重启服务
/ `% S  m4 ^0 i: xservice tgt start1 T) I8 o  O+ V* W3 b
安装iscsi客户端' `! L; |9 H/ h
apt-get install open-iscsi open-iscsi-utils0 T) [" O. k: D/ i4 M
8:安装rabbitmq
) S8 K6 n( C0 i! iapt-get install rabbitmq-server memcached python-memcache
4 o' q2 T9 B0 B( ~) W, tapt-get install kvm libvirt-bin
& J# u" n& h" |& K) }' X1 @) i: S; B1 A- p1 [
二:安装mysql和创建相关数据库
, w# M$ m! s, m. W4 Q( O' C( R' c- U6 jOpenstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。
& q1 X; f! _; ]" x3 j4 c4 P8 i1:安装mysql
; x( R1 V& _/ w  |% L* s: W) y$ {过程中,会提示你输入root密码。7 o- a) H2 a  H' Q( ~) n
apt-get install -y mysql-server python-mysqldb
( ]* F+ W$ Y6 @8 k让mysql支持外部访问$ i; Y; l, F$ @+ E4 X5 c. K/ v
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  
1 r% K8 x- t6 N5 E% r# u1 Y重启服务8 a- V% A9 K' ?) C- q( f
service mysql restart5 x9 C8 \  p- f: `- }
2:安装phpmyadmin (可选)% g5 x7 D) r, R  e2 @9 E
为了方便,可以把phpmyadmin装上,可以比较方便管理数据库
( Y; S' o7 u0 M" Z" `8 Wapt-get install phpmyadmin" k$ [4 T; L0 S2 s! N7 F+ g
安装的时候,第一个提示是让你输入root的密码。: D: i" H; i) Q: ~7 C7 R. F* h1 T
3:创建数据库6 k: H) V, F( z$ E$ H2 g
nova数据库,   管理员:novadbadmin,密码是:dieD9Mie
5 h2 ^3 Z) a1 O1 d% iglance数据库,管理员:glancedbadmin,密码是:ohC3teiv+ S5 k9 d8 z& T/ Y- L
如果你修改密码,后面很多配置都需要相应更改。; ~  @9 }, B$ C
mysql -uroot -p
2 x3 F( Q$ D2 M- h7 b5 Z* KCREATE DATABASE nova;
. _! z/ L3 z/ }. A; q( KGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
9 y! u5 _. O8 f8 {) BCREATE DATABASE glance;
3 ^5 v! [+ M8 D( S9 }. S1 P$ d1 ZGRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';$ A6 D9 L: n, L; @, [* Y4 Y# A
quit
! j( f& t7 C# n% `( W6 z! L, S2 ]7 b. d0 _% W6 R

3 u; J9 i! T( H- K 三:安装和配置keystone- @9 e2 \( [$ A% p+ B. C7 S
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。
) \: ~" p$ K6 _1 M1:安装keystone1 W7 M. V6 y8 F# D" t
apt-get install keystone python-keystone python-keystoneclient
% W9 q# w! r( H0 B* V( X$ }2:配置keystone$ y( K% I& b" c1 T" `. t
需要修改 /etc/keystone/keystone.conf 两个地方
. l" ~. h2 Z* C2 A  a默认定义的token就是ADMIN,我使用hastexo作为token5 A# Y* V$ }" G$ \3 G8 D4 Z8 W
5 |; Y7 @6 ]: ^6 A. p- U' s  F+ E
[DEFAULT]
( g& V8 }. O4 ]. q; d* Tbind_host = 0.0.0.0- k, i2 [: C3 {7 R2 p8 W8 e8 w
public_port = 50009 ?9 F; Y( W" m: A! K
admin_port = 35357
& k' }7 B( t, N! P, p' Q#admin_token = ADMIN: r1 W. U9 h# s1 Q2 @8 F* _
admin_token =hastexo另外一个地方是
# I1 B8 _- i5 ?: J' A  x' Z[catalog]
/ @: S/ M4 ^, e, I" y4 |( x#driver = keystone.catalog.backends.sql.Catalog
: l8 Y, w. [: A$ Z7 I2 Idriver = keystone.catalog.backends.templated.TemplatedCatalog
2 X- ]) L  M4 `  jtemplate_file = /etc/keystone/default_catalog.templates
3 ?0 G. c; L3 s& ^+ a& T( `/ D% ]/ H' I3 o) N; l* P0 l% x  P
重启服务9 P/ n1 }9 F+ ^/ n, c
service keystone restart
& m1 @+ X/ w" z7 u! I% K+ }9 x3: 导入数据- Q0 b$ x+ ^$ L0 ]
这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。3 S; z$ z0 E* J4 E2 Q
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
2 P% D% k" g; m5 k8 a下载脚本
+ p+ X% j' X) R0 B" V! _0 e wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt* H2 v2 P+ W8 s. @8 u% [( n9 X
mv keystone_data.sh_.txt keystone_data.sh0 ?8 E& p& B1 K5 l# j" p5 T' E+ @
$ ?6 g8 ~3 Q6 |1 g! V$ u
让脚本可运行6 z7 x$ H8 b& ?6 u) e
chmod +x keystone_data.sh
- J  N+ E; q1 Y  _" T, c" C7 W运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
2 ?4 }& W& t; J) k8 z% F第一个是登录dashboard的admin的密码: @6 {7 ]( f5 I* H9 {6 @( r# P
第二个就是keystone的token
+ g; J" S$ P5 [/ t+ @% }1 i# k! ?/ l#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
( {7 S: T- E: {5 ?ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}; u+ M1 \! X4 z0 K2 R+ f$ E  S% n
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}" }8 ]- L6 j: Y5 x5 J/ u3 w4 U  U1 M* T
#export SERVICE_TOKEN="hastexo"" k$ Q5 D+ A, \  I; E; ]* C5 R
export SERVICE_TOKEN="Centrin"7 u( v2 _+ X+ }- f% i' l3 q
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"; G0 m3 Z. b- G
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}! D7 J  |; j! g2 e( _4 i. t
3 J! V/ {! I: ?7 {0 s8 I

; ]# ?7 C+ d1 O+ [" a" E$ u) ^./keystone_data.sh8 ~+ [5 f* E6 j' [' O  @, m
顺利运行,会什么都没有输出
5 g/ i# D6 i' p# z
3 \: ~+ \9 _( t5 |$ o1 v& U. I

keystone_data.sh 脚本

keystone_data.sh 脚本

6 w2 ?7 j' `& J# m( l
. T# I% z) g0 ~! u! \" S1 A% [' m) C' S1 Y* |
#echo $?
4 P! T8 \/ ~( \- C/ y下面会输出0 ,表示正常。你就别再运行脚本
% k3 m# ?0 N2 S9 f, T+ `* mkeystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list# Q$ Q  S* R5 |( {% @
看到这些,就说明keystone安装正常。
' O' _( w6 ~! X: p: S4 d
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin* `5 s- t% i+ Z  T4 G
export OS_USERNAME=admin
$ C+ w0 D& b8 @3 a8 b; vexport OS_PASSWORD=hastexo
( j+ h$ j2 V" I* A8 M5 Hexport OS_AUTH_URL="http://localhost:5000/v2.0/"
/ k$ a: E+ y5 O5 I/ j检查检查$ v# X+ F  b& h3 e2 x+ W! Z# B3 z
# export | grep OS_
9 a( |) f$ [* I) ]! b6 K' Ddeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"7 |" t7 b5 [- u. N$ x
declare -x OS_PASSWORD="hastexo"+ _, R$ B2 l: }
declare -x OS_TENANT_NAME="admin"
8 H7 N; [4 z/ N( z9 m& H# Cdeclare -x OS_USERNAME="admin": i5 Y. |' c8 Z; @, H7 h
这个时候,直接运行
' M5 o0 H; z( g( t. j: Q' F' r2 `root@node6:~# keystone user-list
+ j# c0 t8 c3 x7 h5 E+----------------------------------+---------+--------------------+--------+
( M9 b0 L  h2 ]! m& c) A|                id                | enabled |       email        |  name  |
" S1 |( k& o6 \0 W6 @+----------------------------------+---------+--------------------+--------+( E0 V6 T( b4 q5 a& j- c
| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |
1 d/ p) H. ?. R: A: \! }| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |6 j7 c: h5 ]' q$ w4 Z& y
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |/ N( z+ U* n7 P; Q1 N! f. ?! R
| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
9 o' Y  q9 j6 w3 V" e0 n- ~+----------------------------------+---------+--------------------+--------+
4 T2 _" m) Y! c9 E* K; V/ o1 X& I+ {- ]1 Z  y" m
0 W" h$ c7 P8 ^- ?& \

% g; u6 o& ]! ^四:安装和配置glance3 B% y0 E: G2 I6 A4 T# Y  V; I) j
1:安装软件# G. q! V8 H, C" R: a, d; f% U+ S6 \
apt-get install glance glance-api glance-client glance-common glance-registry python-glance1 i& Q9 i: e' J$ x4 N7 R- G: J
2:配置/etc/glance/glance-api-paste.ini
  H7 @- ]; ]+ |0 |+ a修改文件最后3行,这些设置都是keystone导入数据的时候设置的。& I- {; s8 I3 k$ D# Q% K
admin_tenant_name = %SERVICE_TENANT_NAME%; ~2 L, E6 [0 P1 {: |, t$ ?
admin_user = %SERVICE_USER%; G  D2 n6 v2 U" @& l
admin_password = %SERVICE_PASSWORD%改成
1 w$ t) R, h; \$ \admin_tenant_name = admin- l+ D% |( N3 `# f" U2 I
admin_user = admin
" J; ]' X5 n- P8 Qadmin_password = hastexo4 v. {2 @5 x) X* B& y/ o
8 l/ f) s- B! n' m
3:设置 /etc/glance/glance-registry-paste.ini1 B& b2 _- e! }: m1 z( m! o" E
也是修改文件最后3行,和上面是一样的。
: `2 R# Y5 Q; ?0 ]( l! Y) Oadmin_tenant_name = %SERVICE_TENANT_NAME%
+ d. D( o0 X! B! [* r! }7 tadmin_user = %SERVICE_USER%9 [6 k- F' y+ X- r' }4 Q* {6 \
admin_password = %SERVICE_PASSWORD%1 H. N* I' f) H- |# E  z/ U9 P
改成/ e9 r$ v7 Q. e
admin_tenant_name = admin
" W3 w4 s: x6 W: yadmin_user = admin
8 l/ M% y4 z: L6 h0 }admin_password = hastexo' m+ }. P: p8 `$ {. P% m
4:配置/etc/glance/glance-registry.conf2 w" M! p: h0 `2 U
修改1 s2 j# q3 M/ q2 w
#sql_connection = sqlite:////var/lib/glance/glance.sqlite
; K8 Y, y. ~( _% i" H. u% |sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance; f! R3 i, M# i. U( ~( V
% h1 l' j8 j" ~0 b
; d% M, d" X1 u- v
在末尾添加两行4 [' y. I9 G$ f  |9 I! ]
[paste_deploy]$ _- y" N. o$ ^" F! p
flavor = keystone
5 d3 ^; W% N" m" R" F, g

& O9 f7 g4 J; q# k5:配置/etc/glance/glance-api.conf
  ~, P# r3 o- n! M% ~在末尾添加两行
+ U$ k3 a# z6 d( `7 `[paste_deploy]* |* @/ k' {% R* A
flavor = keystone

8 {3 Q, Q' g7 y1 d, V& I8 f
  v: n: v- S0 n6 w" H6:同步数据库  E! M5 [$ P8 g! `) Z2 q
目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
* z' F/ ]* g" k# glance-manage version_control 0
) M  U3 i2 W6 z% K# glance-manage db_sync         
& p% L5 p' F- k# T( C. g/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.
2 M0 ^2 V7 w1 q; o3 q! U  useexisting=True)1 L2 \8 M# N1 A
重启服务# F& `% v; n# q4 a; Q! j2 O
# service glance-api restart && service glance-registry restart
% ?1 G& t2 z$ _8 Z# o& e* n+ n$ Wglance-api stop/waiting& V* d, H9 v# }/ `% ^6 y  d
glance-api start/running, process 13321- r. c4 Z; b+ ?) N' U: t# P( H( Y- _
stop: Unknown instance: : T! \* ]! W0 A
glance-registry start/running, process 133278 x  Q  k) z# N- R
1 M5 a2 m/ ~% o* o/ H: l- ~

- F5 v# W4 }! g+ [7:验证glance服务是否正常
1 V* X; \6 l" r$ c4 ^1 {) L下面的步骤照做就可以,具体原理可以看英文4 Q# Q$ |+ @& n7 y  p2 t' k: b
export OS_TENANT_NAME=admin9 M, w, v& `1 R) u1 ]7 ^
export OS_USERNAME=admin
9 o. S: N# [* [  |$ I! J6 j  lexport OS_PASSWORD=hastexo( Y9 G% p& @  ~/ Y
export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查+ W  Z( M0 z1 W; Z, D0 ]" k
# export | grep OS_
. q4 h) i1 J3 wdeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
7 ]0 E1 z+ |; `  ^declare -x OS_PASSWORD="hastexo"
' d! ^" b; h3 @5 q( ~) ~) @declare -x OS_TENANT_NAME="admin"% U/ _1 A- M/ u
declare -x OS_USERNAME="admin". d' Y# b9 w8 o! T  C
运行! n: K! _  E5 j  N5 s, K
glance index
: _  T3 @& k' F$ T. V! D. }5 N没有任何的输出。表示正常。  }. M. j/ G; s+ F) G
#echo $?
/ k7 H. H2 s- L( i+ e, w下面会输出0 ,表示正常。
9 n1 _/ f4 T- U! P4 }3 n8 n, P# glance --version
/ W4 ^! x# @4 P. [% Cglance 2012.1
, n* a3 |7 r6 p: W1 Z8:下载镜像并上传" V" S  W+ _1 p
ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意
% g2 Q( f+ h# E/ w- F6 a, h这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。
4 h- u- ^# m2 }2 H下载镜像3 O( M3 P3 Q* J9 z
http://cloud-images.ubuntu.com/precise/current/. e* E& U: Z: U6 K& N3 F
这应该是ubuntu提供的最新的稳定的镜像。
, V! F% C/ v& c* ?wget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img
  M, _7 Y6 e* B) [1 y上传镜像( y3 d% ~# A7 }6 ^1 f8 ?9 R8 a
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img& {4 M* j& L4 V( g3 g6 A6 b
这里还有一种方法上传,如果你没用环境变量。
, `0 T* Y7 Q: }glance --tenant=admin--username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 add name="Ubuntu 11.10 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img- ~, \( _8 a( v+ m  x$ E: m
上传完镜像后。在运行
+ `, J; k5 T( y: `" A9 oglance index7 W& B; l+ s4 U8 e8 \
或者
# u' m6 H. B( b$ _3 J" o7 ]glance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
( @" ~/ S6 X4 b: ^  g4 x' ^" h" a就可以看到上传的image。
) E& e# A4 l- C2 l3 M
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg & M' S$ k7 V# S4 e& D, X8 A0 s$ X
五:安装配置nova5 |1 \' F; D* w8 T$ |) W1 Q! J
1:安装nova相关组件: I* a! m8 W# z; O+ v. _1 S' W. N6 t
apt-get install nova-api nova-cert nova-common nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler  nova-volume python-nova python-novaclient  nova-consoleauth python-novnc novnc
" o/ O5 P' T. j3 U# S) B) _2:配置 /etc/nova/nova.conf
. U$ ~1 G* ~/ I6 b( J把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,
- l/ o5 o/ b6 O, E  Y* U) B如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。
" U2 L- C9 G* B% Z7 x( Aroot@node6:~# cat /etc/nova/nova.conf
6 [# [% t* J9 L# `--dhcpbridge_flagfile=/etc/nova/nova.conf2 S3 j0 I# }& W. b
--dhcpbridge=/usr/bin/nova-dhcpbridge
1 ^) l$ |5 \8 D. \. O6 A--logdir=/var/log/nova
! }* I1 T; r4 q  x3 a--state_path=/var/lib/nova
; v9 W& g) N3 F2 A; g6 F1 X1 u--lock_path=/var/lock/nova1 G9 Q) ~, a$ Z* q
--allow_admin_api=true
0 C6 {4 d7 D6 w4 m4 `  n2 D5 L2 S--use_deprecated_auth=false
' l6 I5 ?  s: r( D$ n--auth_strategy=keystone! n; S3 j4 x7 f1 {  y
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
- F5 g- P6 e* W  {--s3_host=10.42.0.6
# ?5 w: \9 v) P8 w5 O3 E--ec2_host=10.42.0.6! I% [9 W1 T7 U
--rabbit_host=10.42.0.6
- u& f% {& z+ ]) L0 @+ [  z# |* V--cc_host=10.42.0.6
  X+ \2 K) ]3 Z+ t1 V& N# U8 _--nova_url=http://10.42.0.6:8774/v1.1/- `! S- e. O* S- N* K1 F
--routing_source_ip=10.42.0.6' d2 t% W3 }/ g4 x% q; S5 G0 v  d
--glance_api_servers=10.42.0.6:9292( M- A- W2 T/ }
--image_service=nova.image.glance.GlanceImageService1 [) h/ u7 M* Y
--iscsi_ip_prefix=192.168.22; E0 u# N: Z% s+ w  m
--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
  i2 X! ^0 p% `+ S* m1 L--ec2_url=http://10.42.0.6:8773/services/Cloud( W; j9 l7 v& C4 z- `
--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens
. S* D* R! [8 Q8 K" g--api_paste_config=/etc/nova/api-paste.ini
: \' x' ?' `+ _5 S. X; t--libvirt_type=kvm
$ w* C- [4 G% e4 W; |4 Q1 Z#--libvirt_type=qemu$ F; J8 T1 R5 i8 O5 }& J0 b+ W  D) Q
--libvirt_use_virtio_for_bridges=true3 T$ M/ }. p9 d; N( c' d
--start_guests_on_host_boot=true
% ~- Q* t' J2 o: Z  W' d% K+ ?( q--resume_guests_state_on_host_boot=true! i2 X& v+ U1 \) X

5 e* m  Y( ~5 A6 P( _+ k, E$ H#novnc! C2 T) x2 L7 K) x1 o/ w
--novnc_enabled=true+ C9 C  q/ H& t8 q8 I9 m9 y
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
2 [  |# p& Y, j8 a% g# x3 ?--vncserver_proxyclient_address=127.0.0.1
& G1 z+ G6 Q( i2 C: @--vncserver_listen=127.0.0.1/ I% n: T+ P2 S: `! g( C" B! `

' _2 R( [7 `9 h+ F# Q1 H" u" E6 ] # network specific settings' A" m# Z+ [. \2 \) j
* L, q  m# L9 ?; v
--network_manager=nova.network.manager.FlatDHCPManager
0 ?0 R! m0 D) ?3 e8 P7 @) y* E--public_interface=eth0  R$ }+ W  }! k; [) s* T0 P$ U
--flat_interface=eth1
  @4 t' ~* ^* [7 h* [( Z2 e8 Y--flat_network_bridge=br1002 l  v/ G; K: s8 U
--fixed_range=192.168.22.32/277 _  {9 s2 w' c& A3 s
--floating_range=10.42.0.32/27
% x+ h+ C& V, G- Q# ~- I--network_size=32
# b. }' O6 |1 C/ x, U$ Q$ J--flat_network_dhcp_start=192.168.22.33
1 A2 _  P' e- X) X--flat_injected=False
; \- a6 P. b  u' W/ D* ]' }* \& \1 d--force_dhcp_release$ q3 \& j: m4 N# @
--iscsi_helper=tgtadm/ s, I" Y$ S: m6 n' A8 ^
--connection_type=libvirt2 w* ^+ E! S& @3 ^' Z
--root_helper=sudo nova-rootwrap: W2 t4 P" _7 ?' }; D
#--verbose
% X) @- A( D9 o; B% y1 n--verbose=False
& O; n3 [! }2 \" k) G
6 `% w$ u) M+ g3 [; j
3:配置/etc/nova/api-paste.ini
+ e2 X3 E1 i# M* {) H$ G也是修改文件最后3行,; t5 l* I& H: G6 f; U
admin_tenant_name = %SERVICE_TENANT_NAME%1 _# D7 E& c8 C  F3 T
admin_user = %SERVICE_USER%# w7 w6 m( W: o  x# c' q6 D7 V
admin_password = %SERVICE_PASSWORD%+ \5 Z) |  v* G9 v9 T. F% @9 ?+ [- c7 u
改成
* }! i$ {; g$ f0 yadmin_tenant_name = admin
0 f" ~3 U! C8 c8 m) F4 n7 Uadmin_user = admin: a4 I% Y/ V: w7 _# F6 Y
admin_password = hastexo
  |5 ]2 l2 |! M4 [- q7 D" I1 ?4:停止和重启nova相关服务- I8 H9 q* U0 n" w* q. Y. u, Q
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
" O# U0 J) L, E' b- J
# K: p3 z: D. H1 j! f7 {5:同步数据库
4 n& H" r& @1 k0 z; @! }) c以前我运行同步数据库,如果正确, 当nova.conf
) V! u: G) h  w9 t' e7 a--verbose=False  O, z0 R+ I# M$ N& X7 \
是没有任何的输出,否则有一堆是输出。
' A9 \5 x( ?8 z$ R- H  Lnova-manage db sync
8 l& v0 b( O( T/ X
( s1 r" C8 N( a3 S
d386ae19ebc4b74515d430adcffc1e178b821518.jpg + `$ ]/ @- A  E7 y+ N" S5 }

: d9 T- V: i+ c8 j# S创建网络  j  [" ~8 |; _9 o/ j9 c' P* j$ ]
nova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32
/ E6 ~  T; X. l! s7 H$ g; b
d3a81f087bf40ad11f734058572c11dfabeccece.jpg
" }- g" l' F$ u/ B8 Z设定floating IP
' {" {- Q+ @5 K8 e7 fnova-manage floating create --ip_range=10.42.0.32/27
% {3 \3 x# S" u1 p1 M' b- V6 F
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg % ?; b' k0 Z0 m: u( I6 ~
设置权限4 J4 q) o, m; i8 ?3 [
chown -R nova:nova /etc/nova0 k9 @' d& d0 G% e8 r2 q* p6 J/ E
再重启相关服务" J$ r" O1 f; K9 m* v; w) U. \
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done" i) R' O7 W8 ~" o* V2 ~

1 y" W+ z7 c- x# z- Y1 ~: Y, c6:检查nova服务* @- z* W% `' b- F6 U5 E3 C
nova list
& C: x$ K8 w* o- @% E: R) y( a4 l" dnova image-list3 W/ b: S5 V% A( a5 F' |* ?
nova floating-ip-create; ]' a2 K# ?5 Z

! h: n9 n5 Q  H' ^# H( X5 G9 V 3f1e66899e510fb330aef02cd933c895d0430c2d.jpg
2 w8 r7 B3 p0 \5 t  l1 N$ o$ S六:创建第一个VM
6 H) f, P" e$ {: y. L# j9 X这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
7 j; }/ r* ^& t% ?1: 创建密钥
& w0 H& k% S  l& f# ssh-keygen( m4 X# J# Z- A/ c  `, q' _# ?
一路回车,就可以了。8 N# k3 R) y# K) A# ]
9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg
% M9 Z. l$ K6 [( g: u2 `3 C2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1
  v9 N" [) H( B# L7 |
这个时候,就可以查看到上传的key6 {* f; @( @  x
root@node6:~# nova keypair-list
- p% X) Z; a7 B* r  X# m9 Y$ S+------+-------------------------------------------------+
# ?3 w) c6 t( x# X. u| Name |                   Fingerprint                   |  P5 \# J3 U# G5 y& M$ H9 g
+------+-------------------------------------------------+  |7 z1 G+ _2 T3 g6 S; V' F8 V
| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |* W" B* L  @- ?  B* ~, G
+------+-------------------------------------------------+
0 T- l0 m  F  t' Y0 U8 ~7 W% E4:开始创建虚拟机
4 P' J( P/ o4 H( \( [. D& @ 查看image list
  k/ l5 n5 r( ^: y; {& V0 {9 H, Gnova image-list, f, p, K7 X$ B% K' A" s# e

7 G" h- `# V, R2 a: v查看flavor-list# x  ]) j# |  E1 @

1 t' R% d1 b7 j9 \2 X6 H2 k nova flavor-list4 m# m& O& i1 L4 m3 M' v6 t" R
创建虚拟机
0 V( f* U6 R5 D9 [# q% E~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
  `  R$ C" \' L- V# i; x看图有真相
) D: m. b5 B3 E+ A; o- a0 P 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg : ?# e4 X7 K4 Y1 P
查看一下创建的虚拟机
7 K2 I0 y% O" N8 `* q, j
nova show superfrobnicator, A) J0 S+ [4 X% V/ `& A
61dd66ec54e736d1a27346b39b504fc2d4626979.jpg   C, I; Q; q: W2 Q# Q6 V) d8 {

" ?) y4 B9 J0 J# @7 Ossh 访问VM
8 u3 x* ^/ G  u* I( ^; x) W6 K  Q2 h5 ]0 ]2 W
打开防火墙
6 ?4 \! ^+ |! T" ]. dnova secgroup-add-rule default tcp 22 22 0.0.0.0/03 M( ?) l2 s$ K- q5 {( A( n. @
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
; _; V/ g" V! O% x- y+ b4 a这个时候,就可以直接ssh到虚拟机上。
" e$ T; K1 p3 X( Q; X, cssh -i .ssh/id_rsa ubuntu@192.168.22.356 r: e- A" D% U7 i, }* l+ S
这样就可以登录服务器。
. G; }$ r" v+ AFloating IP访问) y5 k( g4 e# N$ A( s
如果希望访问floating IP
9 i# @7 p( g5 _) r1 F, _( m+ m$ E申请floating IP: E; U7 u7 d( E7 A) a0 i' s
nova floating-ip-create% J" c6 k# l, Y/ F$ x( ?; X
关联vm
; a! Z% z2 q' p; J0 G$ s# nova add-floating-ip superfrobnicator 10.42.0.36
7 W# L; d( w! A0 J" t( ]  G, E7 H4 A7 C0 \
查看虚拟机  R: \1 r2 |8 P' r. |# m  o
nova show superfrobnicator1 l0 j5 k! R# q6 x1 ]' x
ssh访问虚拟机% p0 N! [' F2 c  D
ssh -i .ssh/id_rsa ubuntu@10.42.0.36
- S0 @& p9 U) N7 T3 q( F* k* p& h查看安全组和规则; k$ w" n5 W; g; x2 r7 C! F
# nova secgroup-list
; L7 w0 t3 ?5 K# nova secgroup-list-rules default
/ C( w7 B& _  e! J3 r' r& G看图: c9 J3 z* W) W/ Z) z& I
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg - S; F, M) A' Y8 I5 l8 e) }
4 \9 h; V4 o& V2 A' z* u3 y% o
看看结果
& d9 Z5 r6 {1 o- T! e: Q 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg
* j/ N/ }, |# z: L, a) Mssh访问vm: R: G6 n4 c9 Q
) P$ K, p& d# _# J) i
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
9 p  l' d+ L. Y# g( j' q% J
4 Q; C9 k$ Y, Q6 E0 T4 p; Q9 W
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg & p5 I9 _7 b/ ^" A3 u- S

! r& G1 J1 N. ^- d# s# h/ L有用的命令
; a& A$ e) I3 x0 Y, h查看keypair
- H, \: o* c9 a/ U8 Nnova keypair-list
, `: p' x$ Q. r删除keypair
- h% K  i) b* Lnova keypair-delete
/ M, Z& ~  Q1 X  P查看vm
- f& Y6 J* y2 c8 ~. m+ u) Q/ knova list
6 \/ B4 a! T; ]: Q5 ^  n" y删除vm,vm的ID
" D. t0 q) x+ snova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343
; _( Y% a7 q) S* i8 M$ f: n( E0 {5 @; U. d( \$ K. |
  X" L6 U& u% S2 [$ u! T
七:安装和配置Dashbaord
7 A& n4 M+ e, H8 e1 Y- A/ g 1:安装dashbaord/ t: L3 B; S8 P( G8 }
apt-get install libapache2-mod-wsgi openstack-dashboard
& E% O% M5 }0 Z2 F6 y/ L) y, w( i
% c, o, p" @) A3 t1 j9 k( ]: I  s7 ^# I/ p$ U4 b7 @( N
这个时候,你就可以登录dashboard  y3 G2 Q7 s: c
http://10.42.0.6
8 m# e0 ]& V1 K) `8 I6 quser:admin) k' _; L: O. |& L+ ~! l
pass:hastexo
! P9 c: M$ k5 a1 u
, ?  h; X, S! b) c. G0 z- U# G 29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg
( T2 N2 C6 x9 z* U7 G" N
; g. X) h* a2 Y$ o2 z+ J' {" _+ L
6982e5198618367ab223fa612e738bd4b21ce53c.jpg , Q3 B' j) Z  S- b5 c- b

# T% ~& v: q/ n  u
- m: I) F6 F6 ^8 x
5 W7 q7 O6 o- {1 z- }0 t9 l: R5:理解project和user关系' }- H# m6 P8 S: }& [+ T( P
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。
$ P7 I  E6 F5 P- o你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
  Y0 S$ L; y% E4 A/ L我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行8 l& P  H, ~" O, ]
6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg
. @* Y, _  C! Z/ P# o" ?
. w' P% }8 g' a" _
八:euca2ools 工作
# f& _% f# A9 B6 t# r& _+ R+ Beuca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。
# K: J9 Q0 [5 F5 R3 g8 N' H  }& i. K* t1:安装euca2ools工具7 R; }, E' w9 Z- `
apt-get install -y euca2ools
4 c  O; x& X. W  U. q% C/ F2:设置环境变量+ [) V; R. o; T# h9 D# k4 O
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
( A. A  Q  U/ Y) ~# l, Aexport CREDS=$(keystone ec2-credentials-create)* I7 M" }- h# l3 U' T5 K; e$ B
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')3 f' e. \- p) r
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
; l6 d6 S! [2 t5 ^* ?; F) H$ l3:运行命令
. u$ E0 P8 A3 l* g& S8 w& r大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list
4 k; g8 V4 C# U0 r* d, ]现在Essex对Euca的工具支持应该比Diablo好很多。
8 O- `2 ]# Y9 p. X 96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg / t5 l7 a: ?- Y  V/ E! Z  q
列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances

7 Q4 d- }" r' X5 V 4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg
7 R2 z+ }' U* h, f/ C
$ \7 o! J9 p" l) ~7 ]' E  G& w. q$ x

/ v& V7 q6 j# `7 N/ _2 y; T. [Appendix A:  使用nova-volume ( p" G7 Y- `2 r" e% M
Essex Dashboard可以管理nova-volume。有两种办法来实现1 s7 h% z4 q0 t" q/ J( W
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。" p4 A& p; M- ?5 x

1 `! r1 w$ z, ]) u" o  k1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,2 C: c  L+ S  z+ t
新建一个文件来做 LVM:' M; O1 [+ J+ A: `% e
DD一个设备
# `9 f- \& L) I' m3 b# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=05 ~% o3 d) ~' g( W8 e
加载一个设备3 O+ k/ g+ R* b# ]+ X0 u) N
# losetup -f nova-volumes.img
3 ]6 I0 A! Q8 @& x$ L查看加载情况/ n5 k) L7 U( r5 P: p( r
# losetup -a
1 }+ h2 [9 u1 I0 o; W( o* N8 N. X/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)4 [+ P. ]+ c/ k& l4 L
创建一个nova-volume的卷8 ]* g! p# w, H8 N1 J" x3 B
# vgcreate nova-volumes /dev/loop0$ J4 ~2 M" h/ e" q* T
  No physical volume label read from /dev/loop05 A7 H& _% `/ {) N. V! v
  Physical volume "/dev/loop0" successfully created- E# U1 O( c1 t( A6 d  u5 ^
  Volume group "nova-volumes" successfully created
7 S$ }" X, }2 u7 {: p$ T4 ~查看卷
+ T/ O  ^1 C0 ?/ ^8 ?7 g+ y#vgdisplay
$ G- B, M% I9 Z3 [9 B+ r0 z! ]就可以看到创建好的nova-volume。
" ~  s6 t& J: R, w3 ]创建一个5G的卷,名字为volume1
4 F6 L) `7 ~- H& K) d, k* _nova volume-create --display_name "volume1" 5
3 G" q8 s" g  q创建完后,可以) J5 Q4 Y* s1 j
nova volume-list
- P' a/ d! L  }% G6 y. G$ r 08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
4 \5 p) I. E/ d- c: M- W

, s. ]9 t/ L0 ^6 r& ^创建的过程非常慢,看status完成后,才能attach。
) e8 V8 [' }- e5 A; r7 J. k如果希望删除创建的volume,目前我知道的就只能通过
& K  Y. |% K# G8 B4 U, g$ Geuca-describe-volumes8 C7 K' O( A3 c
euca-delete-volume vol-00000001
1 d8 T4 [- `$ t! w. Y% i! D
; C" d' s( {0 `: @% s$ V. K把卷添加给虚拟机,1,表示ID号; ^5 w3 t' m$ x5 L% y  R1 K
nova volume-attach superfrobnicator 1 /dev/vdb: b1 @) Z8 i4 O" c+ N
4 w# f1 Q% P9 Q0 p! B/ [9 q
2:单独一块盘# n4 |/ X- }' {9 Z, g8 ?' S  Z# m
# pvcreate /dev/sdb1
* j, {3 M% }( Y; d! Y" x/ z# pvdisplay0 v' j% C! l5 y8 X2 G0 u- Z& a
#vgcreate nova-volumes /dev/sdb1  A1 ~6 H: X. A
# vgdisplay
' r+ T  p( v- u# [这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。
' }) ?0 K0 [  l8 T' h; l: A0 p+ M9 t

/ p. @9 D2 ~! R; A+ q: c, A参考下面文档$ {1 R/ P) J: z4 b5 g7 r: n
http://www.vpsee.com/2011/09/openstack-nova-storage-management/
$ h) ]' V7 f/ d8 khttp://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html8 E- V& r; V' T$ B* p
lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html" ]( ?" K3 [3 N* z& F

+ H9 t& f4 s- Z/ L) X8 B& G! M* G
; {1 O7 H% }3 p7 Z8 S& J
9 U% @  N  }% p6 v( P+ I! z6 [, H+ m0 C! ^7 `: A' n

7 {. E; g% v6 f( \' ~2 J% H. zAppendix C: Dashboard 创建vm,允许ping,ssh登录
/ g+ @$ E; b- M$ k! X对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
+ h; J; l" o- |# L8 c$ M2 w不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。+ f; ]7 {6 Y& l* [% u, I2 u1 s, Y$ m
从ubuntu下载的image,只能用密钥登录,不能用密码登录。
4 b& M2 _' [( h+ e# h1:设置安全组 Security group
( X+ ]3 e% X4 \  j- I, x# m% Q安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。0 N" Q) ~# m/ D  _; e1 p
为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。
7 Y; d% \, }8 u: n) T: q. j默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。: h& Z! a$ W: p9 r, J. {+ n
9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg
7 V. `7 b5 R8 T5 s

# ]6 k; e$ w3 v+ p5 D
, g- B# m. b6 I7 l
6 T( F$ _; D% O" h# e2:创建密钥6 Y! }* R3 v$ x
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。
! j! Y- j0 p; |7 v这个时候,你如果有私钥,就可以直接登录。$ J/ {* A. R# @" `$ @

2 V- I/ Z# L% ^, h- P3 p- j, n5 b 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
; e' K4 a0 W  g. `5 q! n# ?下载私钥
! a  X" b- n& R% X' k* H  `- n" m2 {点击create keypair,就会提示你下载私钥。私钥是pem后缀。
4 u# V& M6 K" ^4 C4 G/ L 7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg / }2 C, Z" X) N4 r
) n. \; X) w: L, h% O

/ s" [2 T! N- F0 b那么你就参考这个文档,就可以。
6 @  u& Q1 \, j! P) p3:创建vm
' D( j8 ~2 O2 ~! B7 f. E8 y创建vm的时候,你会选择keypair,安全组。2 W/ \/ S& i8 U7 ~# Z
5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg
* d+ J) E+ C8 L9 @2 J- c. a' ~, P
/ g$ n1 P) ?9 ?! a" v1 u
. V5 r$ v/ ?. s! S) ^) R3 }7 |0 n
46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg % f7 i4 A, f6 }0 y- H* o5 o+ J

% \! h) W, [8 k" R创建完成后,得到其实是一个内网规定IP
6 n6 y9 l) i2 }- V' [ e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg ' t0 c  ]+ @) M  n; d6 V" w4 j
7 e* V! u4 @: O% V1 P5 E/ ?- A
4:floating IP# E4 R! ~$ L7 X5 m8 A0 s5 a
给虚拟机分配一个 floating IP,可以理解成是公网的IP
, W" T: H* s; V( H7 g+ E8 ] 8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
& w. |! K: [. n: i; E2 Z分配完
0 H: t: C) f( S2 @, ?0 t  A
60d25790f603738df2568f99b31bb051f919ec45.jpg
1 d1 F3 x  v9 \关联vm

% z  {8 }; P' S# u8 K; b' | af15baefce1b9d161e8719daf3deb48f8d546419.jpg
. N% F  g  _" a8 G9 k

1 N4 c+ P# W5 q8 _5 `# J+ l0 D* m% t. k  J9 W) N
5 s" T4 x4 N' L& K6 J  t3 O
看看结果
2 [1 v( f/ P0 I3 c. K. | 3c0efa1190ef76c647bf78909d16fdfaae516774.jpg # `) r$ ?- ], h  }$ @' S9 Q# n, R

2 I+ l# v  @* W5:ssh 访问vm
% C$ ~7 ?% i* ], J/ i5 `. j' W# }: k0 Q& v这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。4 ^! A5 [+ {1 Q: r( F0 S
对于ubuntu提供的image,ssh的用户名是:ubuntu,
0 T. `6 W5 @8 ^5 oSecureCRT 6.x版本
' Q' }0 B3 W, H  r8 g  p对于6.x版本,已经可以直接使用pem后缀的密钥
7 c9 x$ z7 J- A2 e) h* V# |" r3 _( ]4 Q% v% `3 Y+ k3 W
e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg & t+ N# R2 i& u/ K
, l- Q0 Q0 y2 N( l4 V
putty登录" f4 z% l1 d3 F- y% t
对于putty,需要对密钥进行转换。6 h/ E1 e3 A; `; @
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
' Z* I- D' ^1 _+ |4 _到官方网站下载:PuTTYgen这个工具" T7 I0 {8 D: o. H
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以" h  y5 P4 c2 u9 \" c% t2 u
67da7663053a03280d33fa5f.jpg
9 e8 h6 y0 i) N8 s: v9 X$ [
. F0 J" a. u$ E
存放到本地。
+ m  S- z. _/ I4 o设置putty使用密钥, Z* f) p' z2 B% a
4e0ebc44ad345982731568290cf431adc9ef84c6.jpg
' u7 \* }4 Q; |- x
& s# D: L- |; `( M, t- Z# O
d520caca7bcb0a4664b806826b63f6246960afc3.jpg
4 u" ?8 L: g2 x: ]0 A  I& {
0 z/ }) l* C6 A8 s4 Y! p' u

. Y: `* k& f1 F. v+ V: G9 {2 xlinux客户端ssh登录vm( d; ^4 F" _" P0 ]
如果你是linux服务器上,你可以上传密钥到服务器上
' \5 ]% }3 W9 d3 Y5 qssh -i key_for_openstack.pem ubuntu@192.168.22.34' l  U) w! i# _1 F- t! x
就可以直接登录虚拟机。
) n9 R. c2 f6 m# B" _- \8 A0 B0 _4 o! u# ^

4 `3 ?3 a' X3 R4 GAppendix D:FAQ- H" x, _; b7 r5 f1 ?
1:我登录服务器后,命令都无法运行
1 Y. a" H9 T; W$ ]% b/ B2 M~# nova image-list0 n) {6 ~% C; c9 D4 g5 U+ D6 t2 a
ERROR: You must provide a username via either --os_username or env[OS_USERNAME]# R3 d# r+ r" B

  q5 @5 X3 x4 S- P$ {如何解决。
5 [. a- [2 n8 ~& |2 C! i; J9 n
这个问题,其实还是你的环境变量导致的。+ Z5 o' I2 r% U# S) p+ d! O
export OS_TENANT_NAME=admin
4 r* o! D& r! \export OS_USERNAME=admin5 m, H' D- y- w9 F; H
export OS_PASSWORD=hastexo" P) `. P  J" o  P  P# H8 \- Y( Q
export OS_AUTH_URL="http://localhost:5000/v2.0/"
1 {2 \( J5 p4 }" `6 [' f5 v' Dexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
. e8 f% u6 a  z$ }1 l+ m0 Eexport CREDS=$(keystone ec2-credentials-create)
$ {& H! v( `  H6 wexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
8 B4 V; b4 e' |( c( W0 Q3 pexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。( Q' D4 C6 Z" b  f% u8 ^
如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。
1 v) P! K# {; X9 chttp://bbs.chinaunix.net/thread-1958386-1-1.html
+ _# _: ?, s# W* ^5 H
. ?$ g$ A* i2 G1 l9 C( H8 [root@node6:~# nova image-list- b4 U$ p" S  z9 t
+--------------------------------------+-----------------------------+--------+--------+
% T' l7 _% Y/ [|                  ID                  |             Name            | Status | Server |8 W( Z0 G% a  B7 w* G
+--------------------------------------+-----------------------------+--------+--------+
# F4 H2 D% B. D, k7 S| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |1 \! k! R* L7 J6 A" c, C
+--------------------------------------+-----------------------------+--------+--------+
; g% ~8 r2 W4 M% z/ ^  T% ~
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg ) e! j/ X' J3 s1 B! m
7 G3 l, M# p/ X! d
2:如何用curl去测试keystone
: D/ Q* r" e, s* T9 E7 ~& a替换红色部分,就可以了9 s8 }+ g7 ~6 @" ^
# curl -d '{"auth": {"tenantName": "admin", "passwordCredentials":{"username": "admin", "password": "hastexo"}}}' -H "Content-type: application/json" http://10.42.0.6:35357/v2.0/tokens | python -mjson.tool; R# u/ n8 M! k& k6 F
5 G5 B: d% M2 L1 R( E

4 w6 `+ f; j9 y/ g$ V博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb
& T4 d& d+ A: \( M: b! V, V. j
# s/ i9 c: o2 i
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:- _3 R; E- I5 S! M% o
Traceback (most recent call last):  File "/usr/bin/glance-manage", line 122, in <module>    main()............................  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__    super(Connection, self).__init__(*args, **kwargs2)sqlalchemy.exc.OperationalError: (OperationalError) (1045, "Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)") None None
" s& _9 X) j$ g8 s# \' z
6 }7 N+ T1 Q9 d6 M7 k解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。, c  c, I  [8 o
           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
- `9 N# o+ _6 k+ N' B0 s: e* v" W注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
2 ^+ E5 L: w% D5 t" l" Kexport OS_TENANT_NAME=admin& |/ [" S0 Y7 X& X, T- l9 }9 L/ }$ `
export OS_USERNAME=admin
  m5 r, f. S/ }2 Fexport OS_PASSWORD=hastexo
% r+ O0 P. V6 n) F7 g5 F- nexport OS_AUTH_URL="http://localhost:5000/v2.0/"
, u+ z. K2 v% T$ a: Pexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
4 T. N8 I7 D' pexport CREDS=$(keystone ec2-credentials-create)
  m8 n$ \! u$ W* t/ }export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
9 \/ u# U6 K' V" `3 S/ U8 ^export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')  C5 n; [3 v% d* B

( \( x( r* j1 @8 D1 H现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑
& T" C8 r( G) m6 v# `, s& ^; n% q9 e7 c! o  Q6 [
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:6 d# E- A4 D9 I
) X- x$ c! p; v8 q+ {# ?' m
SSH Secure Shell Client工具密钥登录linux:
/ N( {* y4 C) R5 t( D
- q: A, p" K  f# }http://server.chinabyte.com/365/8835865.shtml  ?) v9 D: B! C
( L" C- a" S: r; E: O( E: v! l' p/ Q

' f2 i- w( h/ N3 |3 \SSH Secure Shell Client用public key认证登录
! F- b$ L, P" D, `http://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html0 N8 a+ l& }* @" m" z9 x
( I, E, _' s. \0 B" U/ J3 x( o: N
由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:% g/ N9 u/ `4 S* U5 k

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

! ?! z0 D# f3 m& J
& R$ m+ Z7 t$ u- o$ Z. I. H没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。, H3 h! h; E2 v8 H9 a0 }( S3 o7 M
vi /etc/ssh/sshd_config
2 A/ W' r& e; Y3 _将PasswordAuthentication no改为yes0 Y& N' k& ^: n
service ssh restart: `  ~/ Y% o6 J$ a5 I% @$ U6 ^
9 b7 D! A6 \7 u
这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。
/ d9 `, w  E% V% Q- r! U安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版; ~9 k! l5 y) g) `. j& s' \
) t4 Q0 y3 H7 t7 ?
虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题- s$ r5 n9 _. I/ m$ L7 p

  M3 N1 [1 L) f( `1. 在vmware workstation上的虚拟机需要修改 *.vmx文件3 g! R7 t3 T+ U' q: k* t
vcpu.hotadd = "TRUE") S. M. x9 ^7 ~
变更为
' V, y& F5 l" v2 Z8 x, Dvcpu.hotadd = "FALSE"  ?: T$ t9 }9 y
重新启动机器,如果执行命令:
! }/ A6 x" a- ?' R0 @$ qvirsh/ z7 l2 u3 D6 u' C
进入控制台就没有问题了。* r8 D/ x7 v2 Q" I5 t
2. 修改nova配置文件/etc/nova/nova.conf: P- p# t& u) o3 q) I0 w
#--libvirt_type=kvm8 W. |% r! A6 d% y. \
更改为qemu# L7 p& k" p7 Z- d' `2 S
--libvirt_type=qemu: v6 e" H) Z1 c  U
3. 修改/etc/nova/nova-compute.conf
% w/ _6 V8 j: M4 {4 X3 j--libvirt_type=qemu
1 m" I- I  R: Z) d( x4. 重新启动nova-compute,如果libvirt报错
2 t; a5 _* |  d$ V- h# {1 N. t1 ?  b/var/log/libvirt/libvirtd.log. }: T0 t+ U+ A7 M) J% u0 a3 c: m; i
Cannot find 'pm-is-supported' in path: No such file or directory, t5 [: Y" M, T/ V& s
报错后需要安装# @$ ]  v% j1 l( U3 x0 B
apt-get install pm-utils1 ^+ Z! H3 J& O; r; Y
5. 重启libvirt和nova-compute就可以了
" c& V$ B" _9 \service libvirt-bin restart! S& ~0 ~! O4 ?$ l' [' A
service nova-compute restart
" `& t$ E" D) p. h) j  R9 l
+ g" J: m$ c4 @6. 执行 nova-manage service list
5 P  Y/ y6 Q; d* Mstate都是笑脸的话,恭喜你,搞定了:->
  m, S; u; n- W+ ]* g; n4 l
7 D  t5 s1 g8 a: _/ c感谢IT探路者,原文:http://blog.sina.com.cn/s/blog_869bf7c5010168hp.html
学大数据 到大讲台
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

在线咨询|关于锋云|联系我们|手机版|投诉建议|版权声明|云计算|Hadoop|大数据|锋云网 ( 京ICP备13050990号 )

这是云计算时代的精英部落,这是中国最大的云计算社区 —— 锋云网(sharpcloud.cn)!

本站CDN/存储服务由本站CDN/存储服务由又拍云提供提供

Powered by Discuz! X3.2

© 2001-2015 Sharpcloud.cn

 

锋云网官方QQ群

中国云计算精英群(ID:64924638)中国云计算精英群      Hadoop技术交流群②(ID:25728812)Hadoop技术交流群②      Spark技术交流群(ID:413581066)Spark技术交流群

Hadoop技术交流群(ID:113156288,2000人群已满)

返回顶部