锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

大数据培训资料领取
搜索
查看: 18044|回复: 4

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑
9 C6 o& Z- b( @
& d4 l  ~0 _7 T. |" ~( [, v之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。& [3 c+ A( @# V! z/ ^
, U3 D3 B7 y/ v
原文如下:
, c, `0 U6 b8 A: L* R3 k# ^6 w/ M. F3 `( D' i, {0 Q* [9 |" M
Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex# V6 Y3 J, ~, T" y$ E8 x
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。
/ l+ C' l8 h: s! y原文
) n" w& _  X' z& ]- t' v1 `) b我下面的步骤,也就全部参考原文。6 _8 o  a5 Q! Z  G) J+ L
3月27日更新:基本完成文档内容5 K  \- d$ ]4 i% e& n
4月5日更新:重新安装第三次,修改了文档一下小错误。- V6 s( _4 I  W4 t5 y% f3 d5 C. Y
4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖
0 j# t7 y# t! _3 s' D& G4 Q4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。6 ]7 W/ D* }" e0 s  \
4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。; V' r3 t! c+ s
4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。" z: N% t: {: m+ ]. R
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。& e+ B& D) E3 K: u' e
5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。6 f$ T1 q+ I6 C+ y  p" z7 `. }' H: j. q
5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。
# E& S8 G! c- l. \; p
- F3 x2 p) s- O: i硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。7 L. m' a& g5 H1 Y* E
下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。/ Y2 m! U* r& o6 ?9 R, I
为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。* }& |8 P3 h) o) X% B2 h* s
目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。
' q  S" W- k& s- _* R$ }- X" s1 x
一:准备系统3 s5 V" E% ]3 h( l  u) x7 c2 f4 m
1:下载ubuntu 12.04. 服务器版本
; @6 y) i  l0 H* D% @ubuntu12.04正式版本,需要4月26号发布,目前是beta2& E& d& E7 H2 R) Y8 V" n0 R
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
' [" i. J6 L+ b) Q
  F& B% S* Y' R% V. F/ y2:安装OS
9 Z& {9 f. W) e1 v安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。
+ h7 h9 u6 }% _IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。1 z) i" \& U% N% I& E5 r
装完系统后。
& @1 W' y& c6 g5 Lapt-get update
) J# q/ ]# c  C% J/ hapt-get upgrade+ `8 K3 R* g; l
更新源里的包,更新系统。确保你装的是最新版本的包。
8 X9 H& a; w. E: O% s- P# I! U3 R6 _( m, q( J2 p; i9 u
3:设置root权限
+ T, l/ B2 M/ t8 g& G9 L# R" @为了简单,全部都是用root来运行。: n* ^8 p0 ?+ u/ d) j
sudo passwd0 Y: d. K: T) w( A5 P! i. x) f4 h
就可以给root设置一个密码。直接用root运行。" z' I# @2 o& s3 D2 X" h5 a
4:设置网络
6 A8 ?" v, G, J) D我的网络设置和文档是完全一样。这样也减少错误的几率。
! u8 Q% T! L  B; t2 i# eroot@node6:~# cat /etc/network/interfaces   p) g& K+ t# s' d: @* N
# This file describes the network interfaces available on your system
( U+ F$ c, r6 d& w7 A  F) N# and how to activate them. For more information, see interfaces(5).. M  ~7 [" n$ @& p! X) T/ m8 Y
( _, y! w( e* J  V
# The loopback network interface1 B5 ~) @3 ?8 w. Q; K5 E
auto lo
) P2 O/ @" r3 ^& M! P& x. t7 Piface lo inet loopback
6 n$ \6 X4 a2 v1 ~1 y
+ [- ?+ |) Q# f4 A1 P; A& m" G# The primary network interface
* ]' L7 @/ `# T. Vauto eth00 G  s9 Y7 j/ `. ^. |5 \
iface eth0 inet static0 z5 i, d& D& K6 V; U5 Y
        address 10.42.0.62 k! y- L) T7 H$ q3 G
        netmask 255.255.255.01 R# J# E9 z0 O7 F' Z% P
        network 10.42.0.0
/ j+ M7 i/ H  L3 I        broadcast 10.42.0.255
# }" m( b- q/ |! {8 C3 D        gateway 10.42.0.1- m* {8 `- {6 D4 e" l; R& _6 W
        # dns-* options are implemented by the resolvconf package, if installed
9 O  d! n" M% j4 `4 O3 M+ F5 h2 J1 h        dns-nameservers 114.114.114.114
- Y4 l1 k  z9 t/ B8 v" [        dns-search test.com, E+ T& [  X7 d3 _

) s) G4 S8 Z. Bauto eth1! g  k0 P* D1 C, C5 J0 h1 k! y
iface eth1 inet static
2 A# Z! l& l3 ]; i& Saddress 192.168.22.17 ^2 x+ o8 v- `5 ]9 H' F' y
network 192.168.22.0# v2 B7 \1 z. [  Y2 V9 S; J! O
netmask 255.255.255.02 t9 y7 K5 f5 W! l
broadcast 192.168.22.255# ?* L2 f8 {6 a9 u& T) X' S# N

# h/ F  X! J) } 重启网络,让修改生效" B+ F& \& H. Z: X
/etc/init.d/networking restart7 h* x/ H' J, r! x9 s* s
5:安装bridge3 q( j: |, H7 E3 k* X/ r
apt-get install bridge-utils
. D0 k1 i, W& b8 q3 e重启网络或者重启一下机器都可以1 G# ~3 L* r' d
/etc/init.d/networking restart( l6 V2 C) V. D* z/ Z9 G
6:设置NTP+ g1 T( M3 t' F! ]7 Q' b5 Y
apt-get install ntp$ w# a* X: O- s$ \1 g2 k- M6 [

/ x% z4 a& x! L6 s7 c" K: I$ P2 S编辑 /etc/ntp.conf 在末尾添加下面3行
' s. g+ i- m* X$ `9 ^- M- e  q/ U0 m; ?8 ~) ?* [  f
server ntp.ubuntu.com iburst: h, x; t- c% ~; V
server 127.127.1.0: y' M1 x( Q% O9 C) T0 {
fudge 127.127.1.0 stratum 10
; @; Z! a/ I. Q
2 d3 y6 e( L5 ~/ R! Z( A9 G重启服务
3 F2 Q3 P1 @, a. v( Qservice ntp restart
; d, I2 T& z. K4 x& e+ [. B7:设置Iscsi
! o5 M7 t7 F; E9 c; G& _4 Napt-get install tgt* q" T6 t6 ?5 ]
重启服务3 w8 f; w; @: k2 d" y2 F2 r
service tgt start7 ^* v7 {8 u- ~" C* d, B% h
安装iscsi客户端5 C9 Z# R/ |$ J4 G: Q. G1 Q% c
apt-get install open-iscsi open-iscsi-utils  ]! Y; D4 _, ]  @5 Y: T
8:安装rabbitmq
' i% _& [: i0 X& M  {/ z7 |apt-get install rabbitmq-server memcached python-memcache
  r3 i7 k3 b, ~apt-get install kvm libvirt-bin
+ K3 |, W- h7 m% p5 b9 X9 F9 L, C
9 l2 {) s0 z. S% S二:安装mysql和创建相关数据库
8 a+ Q6 n9 F- M1 ?Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。6 w: o. B# t3 g5 |; O
1:安装mysql
1 X; \$ ]) u9 i/ E1 T2 M$ _过程中,会提示你输入root密码。
& |( ]& P) o8 X  y: f% Capt-get install -y mysql-server python-mysqldb
3 ~! G9 u6 v7 V+ q5 t8 U( ^. q让mysql支持外部访问
) U5 K6 X1 j& i; z( u- K& nsed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  
1 A" s) P' Y  m2 f0 k  J6 S重启服务
9 W7 g; O1 P. Uservice mysql restart
4 y' r  G1 w4 l2:安装phpmyadmin (可选)
* _2 A9 G' m0 T; J1 k  G* ]为了方便,可以把phpmyadmin装上,可以比较方便管理数据库
7 A( `# C* s* B2 Eapt-get install phpmyadmin7 A. l, r- J2 b$ x* `) H+ R
安装的时候,第一个提示是让你输入root的密码。
# g: }$ C0 T# e8 e% |' r3:创建数据库
. X7 g6 ^: M& p- K$ h% r/ snova数据库,   管理员:novadbadmin,密码是:dieD9Mie
* k8 a( N" V7 C5 o( \glance数据库,管理员:glancedbadmin,密码是:ohC3teiv; P6 `/ {: ~7 f% [7 O- L1 I
如果你修改密码,后面很多配置都需要相应更改。
0 g" g# v4 x8 ~/ `mysql -uroot -p5 W; V( u: {+ j: Y" `+ i. t
CREATE DATABASE nova;
0 ]3 |; ?+ A+ HGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';, b+ H( g% X. z/ d9 I
CREATE DATABASE glance;$ b9 B7 B1 Q5 ^
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';9 `7 C5 q: p9 n
quit
3 x9 d: ?) E5 a+ a7 i7 Y0 t/ c6 y
. Z* g7 I2 M7 E- C
三:安装和配置keystone
' W6 G5 U* U# MOpenstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。
# L' v5 s; f& \+ ]" o1:安装keystone+ ^' r8 F* j. ~+ V) r
apt-get install keystone python-keystone python-keystoneclient0 n  H! ~4 |  W$ u( n
2:配置keystone
# |) r0 e% R  H% l4 q需要修改 /etc/keystone/keystone.conf 两个地方+ h' O) e# x1 c6 M6 f" v4 b
默认定义的token就是ADMIN,我使用hastexo作为token
, l* W6 E3 v' h0 i, A/ ^7 l2 _
# ^1 G6 y' y1 h/ l. i& w0 b[DEFAULT]9 u3 V7 f' I. B; f! `; q) L: R8 G
bind_host = 0.0.0.0
6 i) s; r; S) A: F1 Kpublic_port = 5000
  C; u# R2 v! Iadmin_port = 35357* F  {0 D, S/ F
#admin_token = ADMIN6 f- G) S/ s1 w: o# v! d% E
admin_token =hastexo另外一个地方是% s9 I4 G! l- y! U
[catalog]
( f. p* r' }  J. u4 n7 W#driver = keystone.catalog.backends.sql.Catalog  Z# l" G( s8 V7 e% k7 b& ^
driver = keystone.catalog.backends.templated.TemplatedCatalog
% m7 v! y  C' _7 y+ K/ Mtemplate_file = /etc/keystone/default_catalog.templates
( t. |' d( D& V( I3 _- C9 T) M0 q# C
重启服务$ N0 V0 h9 G) I$ {: K
service keystone restart/ [) E" Y$ q+ F' h% H* J0 V
3: 导入数据
! I$ ~- P) {. M0 g+ {这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。
& f, S0 o7 K% i2 Y9 mhttp://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt. N' b: m  |, d
下载脚本
, E& T6 T! j. S wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
) S* V# ]* d2 e2 }- fmv keystone_data.sh_.txt keystone_data.sh
& |' \* q0 r; P1 }( D1 F5 }7 k
; X' t5 |* P9 I4 s/ k让脚本可运行  j" ]( Y* D. [2 w9 R
chmod +x keystone_data.sh
+ |7 v4 j. X: M/ J运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
5 t6 t& f+ h( }, [, r4 A第一个是登录dashboard的admin的密码( f/ J9 M1 q% x  @1 S0 ?3 Z
第二个就是keystone的token
8 }% [* }. R; h1 t  N: [5 Y  e#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
; E. U: h6 D' f* D5 |+ pADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}: r) D/ s, q9 ]
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}8 _( W4 }; D# U1 q& u1 u
#export SERVICE_TOKEN="hastexo"' q+ e. Z8 U# @$ ~
export SERVICE_TOKEN="Centrin", T9 v' G; t2 ^
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
/ A/ b+ ~9 Y$ h7 G$ p& x; bSERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}1 W' v: S! y7 V4 \0 E0 Q
/ c2 D! Y. W/ ^3 x
& F+ [) d0 a2 @0 L7 P! C1 l3 E
./keystone_data.sh: ]- T; y8 v& D/ i% ]
顺利运行,会什么都没有输出
) @  u3 I6 q3 ]

8 L  ]: ^6 f2 P8 Y# C; A

keystone_data.sh 脚本

keystone_data.sh 脚本

# _; z- E2 n4 L" C% P# e
& B  y) I  ]& E1 C" h$ b; W; m. Z. u: y" u- N6 V* z5 I' z
#echo $?
5 }/ F+ H; N' B' D( ]! n9 i5 S下面会输出0 ,表示正常。你就别再运行脚本
7 q; d; i$ X) B& g# }keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
2 L9 r" q8 A' h8 w' Z看到这些,就说明keystone安装正常。
9 Q2 M" Y, W4 R- x
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin
& d* a3 u' `1 q! i: `, j" qexport OS_USERNAME=admin/ N% j; A: p! C3 h+ N9 ~" {+ g* {
export OS_PASSWORD=hastexo
! {$ Y: k. W2 ?! Xexport OS_AUTH_URL="http://localhost:5000/v2.0/"1 I: M, p; Z8 ^
检查检查+ w5 b+ A3 T% m# S
# export | grep OS_
! x9 C8 ?* _5 F7 C+ n, }* cdeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/": M6 q" f. t7 @0 p2 \
declare -x OS_PASSWORD="hastexo"
# V* d+ q) d" h% @  i5 b/ x2 g1 A+ n; udeclare -x OS_TENANT_NAME="admin"
0 ^4 R% |5 a+ b2 g/ m2 e9 Tdeclare -x OS_USERNAME="admin") w% y0 a% o( B) c* o$ d
这个时候,直接运行4 q  k9 [; M; H6 N2 D  O6 ~; @
root@node6:~# keystone user-list
7 P3 g* C; Q5 q5 y, C+----------------------------------+---------+--------------------+--------+
5 O% A. b8 h1 O7 K6 M|                id                | enabled |       email        |  name  |
, O4 U4 ~) e9 E$ f9 _$ {1 ]# Z6 d+----------------------------------+---------+--------------------+--------+
' T$ [& o) {& g& s' o) d+ }9 }; Z| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |/ f6 M3 ?3 V2 e9 p
| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |0 W* m, n' i) s8 n9 }
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |* @$ C+ T/ j+ d; }; @. r- t/ e
| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
  @+ s$ r/ U* l+----------------------------------+---------+--------------------+--------+
- u/ u( R* W* P- C/ ?" Z: Q0 M' e3 {8 E+ g, O

1 w5 h- K0 M4 I3 y! E, v
( ]3 v, _- J' y! {& Q4 q) l四:安装和配置glance. o2 E: L5 C' I$ e4 n+ z' r
1:安装软件
- ~" r7 i9 \. y) o8 Wapt-get install glance glance-api glance-client glance-common glance-registry python-glance" u1 Y' |2 B2 d, i. m" K
2:配置/etc/glance/glance-api-paste.ini . V+ H& r' W3 D, I& v
修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
3 l/ t% d" f( ~# u) k) w& z% Fadmin_tenant_name = %SERVICE_TENANT_NAME%6 q  a7 p$ \; q- F9 W! N
admin_user = %SERVICE_USER%1 o; E+ `7 _: ?
admin_password = %SERVICE_PASSWORD%改成
5 \. p/ {8 o6 M3 Q& b# D0 {admin_tenant_name = admin
) X8 }$ k2 [, }2 |' h2 iadmin_user = admin3 L! z8 X- N5 ~* r
admin_password = hastexo5 H1 w0 r+ v2 a. r
; B- |/ R: F# P
3:设置 /etc/glance/glance-registry-paste.ini
3 ~, p& K2 n/ ]! B7 X也是修改文件最后3行,和上面是一样的。/ `7 w0 ]+ ^' p; _& @) g$ w
admin_tenant_name = %SERVICE_TENANT_NAME%$ k1 e2 u2 w/ \' b6 H  V
admin_user = %SERVICE_USER%
, s7 Q5 D6 U% O  }admin_password = %SERVICE_PASSWORD%
( ]4 T- y0 r3 A4 t1 @% N/ \2 F改成% n4 Y% Q. c4 R5 ]: i
admin_tenant_name = admin
6 d/ o9 T. I. R6 z" Fadmin_user = admin
( q0 |. Q4 i/ U) B; `admin_password = hastexo
  k8 q% z8 c! ^/ \, D" `4:配置/etc/glance/glance-registry.conf5 P+ r) |" h' o  s( j
修改- V' e; p: |/ B, U
#sql_connection = sqlite:////var/lib/glance/glance.sqlite
- O: m8 A7 f5 }. w' l" dsql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance
  F1 o  F' U+ F' f
4 `( h6 l" p9 F. v: R7 C
- ?& }' g7 H. ]& U( |在末尾添加两行
0 a$ ?% j2 V/ @[paste_deploy]
1 ?2 x; f+ F' W/ V; J( nflavor = keystone

! b( ^/ {2 L. w" }8 H
* }% ^* U+ p9 O- Q) }' w! o, [7 K5:配置/etc/glance/glance-api.conf+ ^. G+ z* V. Q" F/ b
在末尾添加两行  K/ @: g# Z( Z' k$ g$ h
[paste_deploy]
9 [* x6 c! q" m# G2 K9 E7 Mflavor = keystone
" n$ X0 X, W$ {9 l4 B5 h& q: }2 }
: b' a! K. A9 o. s
6:同步数据库6 w- U) [) t) S# M! y
目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。  L0 y4 h- s9 O+ @
# glance-manage version_control 04 x' S& b; j" I  u% h* ]+ o# T
# glance-manage db_sync         
* L) O$ @& v) B9 q/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.3 O. c& _, }/ @
  useexisting=True)3 V; {' `$ [& O8 ?* S- [
重启服务# F/ W: C& T4 O) f
# service glance-api restart && service glance-registry restart4 I# Q8 P: c5 d1 y: u8 y
glance-api stop/waiting
4 U: Y( l$ }' d1 S" nglance-api start/running, process 133219 j' u& o) n7 O+ p7 u% U. }9 C7 n
stop: Unknown instance: , x* j) {1 A% `, I7 @" j$ z
glance-registry start/running, process 13327
3 t+ _  h- A0 M+ f
7 L- m+ O, a. u% x! Y  s% @# o% D* o/ m! P" j
7:验证glance服务是否正常
2 F( [" ?7 J# j下面的步骤照做就可以,具体原理可以看英文0 b6 r# p9 z7 Z" I) V) S2 o" w
export OS_TENANT_NAME=admin
: w1 N  ^% f$ b8 O! Aexport OS_USERNAME=admin
1 \, w  o' {7 V5 Fexport OS_PASSWORD=hastexo/ V; U+ N0 [9 @" m& n
export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查
! V4 g% W7 E! U" X0 X7 B# export | grep OS_
$ u/ H5 G& L" {declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
5 m2 A! b+ a! w; ]& A5 g6 b& H. _9 @declare -x OS_PASSWORD="hastexo", W" ^4 o, I$ ^# L+ k
declare -x OS_TENANT_NAME="admin"
; p7 b8 B4 P, Z1 J$ {0 b5 N+ Odeclare -x OS_USERNAME="admin"
4 }( S0 E# c& A  F, v6 I8 s运行2 Z6 h4 y9 Z8 d
glance index9 k" ]( D5 _  v/ R! S
没有任何的输出。表示正常。. O5 b$ i/ u# a$ w4 A' l9 w6 k
#echo $?) ~" H, R1 G. n& \0 n( C4 B
下面会输出0 ,表示正常。
# f2 w3 c7 c0 @6 \7 t% t; [# glance --version2 Q0 o% u5 {. R/ N) N$ w
glance 2012.10 W! e  |- p7 o& o& ^1 b
8:下载镜像并上传3 y  s6 g' C& L
ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意6 D/ h# s6 ^! ?: ~) y: f  ^2 D- n
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。- [7 m7 A* q$ O3 X. G; u+ ~
下载镜像) _: h" `, D, Y' ]2 Y$ |7 M
http://cloud-images.ubuntu.com/precise/current/
5 h4 G- q9 ~- m  w  @% f# k这应该是ubuntu提供的最新的稳定的镜像。% J2 B# \* ]7 T, }  \. z
wget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img
$ Q3 r8 y" t5 C3 l4 w8 S( q. w  ~- P上传镜像
/ T) F2 Z, L' y4 l9 Fglance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img5 b) l3 N# L) }; B
这里还有一种方法上传,如果你没用环境变量。
) b5 m% ~, \. p. P+ T( n) i/ hglance --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* p- u: u( u* T2 A; p* q! E* t& V
上传完镜像后。在运行* U+ `+ p2 t  g" R
glance index
0 K; u5 {; t, @, n或者) f2 J3 l- p" E4 C6 `* d
glance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index% w2 X; {8 Y0 i: o/ C
就可以看到上传的image。
8 G1 j# S6 ~  X; l! b1 Y
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg 7 w8 ?# v' x1 D+ e: L
五:安装配置nova+ v3 ~" l/ X- K1 h  w8 ~; x
1:安装nova相关组件  ~$ n5 G; G2 v) T) d5 H
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& l  w7 X  G& y; q' G
2:配置 /etc/nova/nova.conf+ q6 e, \: k% |; A1 m
把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,7 i0 N3 M; S9 e5 r0 O
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。
+ a/ M, V8 o8 B2 vroot@node6:~# cat /etc/nova/nova.conf
0 B2 v( \% s; [: U--dhcpbridge_flagfile=/etc/nova/nova.conf7 W" V4 t$ z* `8 r. a5 D
--dhcpbridge=/usr/bin/nova-dhcpbridge8 ]4 b/ g% G% D: E7 u$ w6 \5 V  v- K
--logdir=/var/log/nova
2 I4 C2 s) H5 Z5 m( ]+ M4 p, [--state_path=/var/lib/nova+ S8 W# Q. W9 g- n) I, z' G' t- D
--lock_path=/var/lock/nova
) u4 r# U- }) k; ?& ?8 \" x9 |--allow_admin_api=true; d1 m2 L( ?/ Y5 \( h& I
--use_deprecated_auth=false
4 m' Z' v6 [8 H+ z--auth_strategy=keystone
0 A1 K: }, W/ l--scheduler_driver=nova.scheduler.simple.SimpleScheduler
5 x7 J& C/ z+ a% w" D1 J' C$ o--s3_host=10.42.0.6
$ A) J  |2 d1 I! L& Z3 l--ec2_host=10.42.0.6: i. G: I2 k. M- v# |' w
--rabbit_host=10.42.0.6; v1 }$ Q# n- v5 L/ T( i8 v0 e/ v
--cc_host=10.42.0.6% x. ~  Z, G; Q: \( Z& Z5 A
--nova_url=http://10.42.0.6:8774/v1.1/
2 E  Z; e! H" ]4 t) {2 g--routing_source_ip=10.42.0.6
$ l+ R  c# P8 ^2 }& z; t2 Q--glance_api_servers=10.42.0.6:9292
' ?/ S  |( h( a1 m--image_service=nova.image.glance.GlanceImageService
* \' J- N% U6 h8 I+ v* a--iscsi_ip_prefix=192.168.22
) f& c, e3 _9 B8 w--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova0 }1 V. [8 b8 J+ m5 v8 }
--ec2_url=http://10.42.0.6:8773/services/Cloud  N' t1 z. r# r9 k* ]
--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens
7 _7 m! T/ j% W2 r' a4 u  A$ a--api_paste_config=/etc/nova/api-paste.ini6 I8 y. H: k% ]* Q1 I
--libvirt_type=kvm2 X+ P% O6 \% |  K
#--libvirt_type=qemu
" z, ~+ E3 F9 J0 ^' }9 L--libvirt_use_virtio_for_bridges=true' m# Z& n, @3 x) A9 ~, R
--start_guests_on_host_boot=true
& _+ R. H4 f9 y4 L--resume_guests_state_on_host_boot=true
" V" k* H- w  }* @* ^) E8 k# I7 U) R' ~7 t) ^1 ?) J
#novnc9 o, ?: S( _% {7 ~! V* T
--novnc_enabled=true7 I! |( B. h( }/ F
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
+ B' X+ y2 f9 v" s$ G--vncserver_proxyclient_address=127.0.0.1
( c) _* W  L1 T: A6 q--vncserver_listen=127.0.0.1. I' s( p% A0 t9 `$ K% O. B

3 C4 Y# ~+ g) ]2 X. f8 t+ h # network specific settings7 X$ ]1 T0 S/ b3 R

9 }: r% s7 N- w1 P7 i: w7 y--network_manager=nova.network.manager.FlatDHCPManager, ?8 N! ]- J* S
--public_interface=eth0  G, @) G" m% @! N7 l6 Q( c) s: r; h& p
--flat_interface=eth1
' \+ z( u4 [! O--flat_network_bridge=br1007 O9 P5 ?3 n2 g$ q1 p, ]& l# g
--fixed_range=192.168.22.32/27
) k" |$ y; U7 `--floating_range=10.42.0.32/27
: \# a- R+ L( W9 _9 u--network_size=32
5 q& x! I' x! g$ E: e/ i# |+ }/ t--flat_network_dhcp_start=192.168.22.33* g: N5 c7 F: b
--flat_injected=False# R' D6 b6 P4 r- I9 i( d
--force_dhcp_release
& K% Q# H2 J5 ~* W# X- t0 F! T--iscsi_helper=tgtadm* a6 I0 O- {8 j& H/ U" Y( j4 a( T
--connection_type=libvirt0 D$ h9 T! q/ C; w! P' M
--root_helper=sudo nova-rootwrap
- {/ ]/ E( K$ O5 i#--verbose! M4 p, N4 J# C& ?/ P
--verbose=False

# [) y, D7 N7 A7 a! V9 ?1 e0 K
9 [' H+ g/ `# A1 {) G, d2 c8 E- S0 n3:配置/etc/nova/api-paste.ini' ^& N) N3 O+ i/ z
也是修改文件最后3行,
/ |0 R0 m# l& \8 v' K* \" O9 k+ Uadmin_tenant_name = %SERVICE_TENANT_NAME%. r* |( h$ c+ w5 v% D
admin_user = %SERVICE_USER%
9 D4 K- e, a; S! K" wadmin_password = %SERVICE_PASSWORD%! k0 d" Q, D, W
改成" r. @" O" I5 D: ?8 f4 @2 s
admin_tenant_name = admin2 L7 ~& d  a4 i1 g& @! r
admin_user = admin
7 R; G5 Q3 x4 L; k: Q* Aadmin_password = hastexo  D" ^) k8 O' d* Q# p7 C
4:停止和重启nova相关服务& r) S* V% L1 @- F9 G( ^
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done1 s, Z" A6 D% ?  j

" ^# w1 k6 S( a6 o- f3 k5:同步数据库/ c9 v- _% ^3 F1 s; q: q/ t
以前我运行同步数据库,如果正确, 当nova.conf; {# T  |, o6 \0 U! G& K* T8 {
--verbose=False
) G0 c6 f/ f$ `- p) @是没有任何的输出,否则有一堆是输出。
" d% U5 n$ |, A' N& x' }; Vnova-manage db sync
0 E6 m( G0 C/ |" z  j: v

1 s, j7 S$ I  @ d386ae19ebc4b74515d430adcffc1e178b821518.jpg
/ u9 s; B' Y# E& x' \& j1 c6 x: ]; r! P. E
创建网络2 g' L$ h* z+ K  O
nova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32
- p1 X, M/ O( U: P
d3a81f087bf40ad11f734058572c11dfabeccece.jpg ' V& k0 a! V6 E5 c! n* i1 V
设定floating IP
5 [- }$ @  y6 Q- a0 ^nova-manage floating create --ip_range=10.42.0.32/27  L) R' w0 O+ k+ B. G$ _. g
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
' O# W, L' }& v3 i. Z, U! c$ @设置权限. E" t& n* h: b- r; z, D
chown -R nova:nova /etc/nova- l9 ^/ V* P% ?1 P* {% K' W# ^
再重启相关服务5 M1 J- t( Q, U3 ~6 \9 q7 Z
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done7 c  N: ]* L8 j. N/ c

& A- H* Q2 b* I" C- @6:检查nova服务
% C. k; V- {% Snova list( r- V  l5 G( ]5 s' n* ~
nova image-list+ f+ j% f7 J8 ^1 H+ h* n) ~% s
nova floating-ip-create
: a! |! s, c5 I. E3 ]" B2 |( K7 i8 z. w) w. G  m
3f1e66899e510fb330aef02cd933c895d0430c2d.jpg 9 Q7 {+ a" t+ ^  c- n( P2 d( p
六:创建第一个VM3 D: I+ L" {7 h' a0 H: V# E* f/ j
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
9 Y8 R5 p( _) W& W9 i9 h# d3 t8 I  e1: 创建密钥
$ [0 j1 P9 L# \  d+ D( a' b# ssh-keygen" E7 Y* I& h1 j' y5 A' j
一路回车,就可以了。
" p3 H$ |7 L/ O9 ]3 R' G 9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg
& {, M7 {; Y, {3 \. h2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1

  {0 K( ]5 i0 Q; s+ d这个时候,就可以查看到上传的key, q: f9 f  |% c6 p1 c
root@node6:~# nova keypair-list
; u/ o0 Z7 [; c, `8 L! B3 g+------+-------------------------------------------------+
2 o* l* l7 [+ Y9 c) i, G| Name |                   Fingerprint                   |, G0 S1 _: E6 y: f8 M$ m- @
+------+-------------------------------------------------+7 c% V3 j$ Y; Z, v7 }( p1 F( m9 h! J
| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |# Y0 r- |5 Y# H; z6 P0 j  q9 N
+------+-------------------------------------------------+
" n0 y6 q* ?: w4:开始创建虚拟机
- s9 i- r% d. U. { 查看image list* T# K- r) J* I5 P3 ~. o- w
nova image-list
: |$ W' X! P3 ]' t% K! {  z4 E
6 q: c( I# F" r5 ~查看flavor-list
4 ~3 j5 j9 q& S3 A) ?
. X) e0 N9 M  o' }) _9 ]. `6 H. M nova flavor-list
% n2 R. _* R( j+ T! y6 `2 M创建虚拟机4 K+ K6 y" \5 H, K2 O9 G  j
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
& N' h, @6 G9 o  Y5 u看图有真相
. j& U" Y6 X) ]* b) h8 n8 b. d; m4 { 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg $ w0 q2 Y  x$ U5 i- d3 s/ k. E7 ?
查看一下创建的虚拟机

, u5 y, U1 c8 q* v4 M nova show superfrobnicator
6 ^# r8 x8 `2 V$ b0 c+ @: o- {3 g0 q 61dd66ec54e736d1a27346b39b504fc2d4626979.jpg ; _" G/ I( y6 d* T. e- T
7 w4 ]/ R- ^- H8 `" Q, J
ssh 访问VM1 {& F6 w: `$ W2 {& Z
( H# p. S/ v1 v5 J( u* T
打开防火墙* C$ H0 g* n/ y, I
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
% p! r' e0 z( q/ `: _% Xnova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
; z, u2 Y& @$ M" u这个时候,就可以直接ssh到虚拟机上。
, P) A$ `" {0 p# zssh -i .ssh/id_rsa ubuntu@192.168.22.353 b1 G3 L& u4 b! h) {
这样就可以登录服务器。' [  i6 R" }) Z4 Q
Floating IP访问
" V: q9 P" H7 M* [: c4 r4 T如果希望访问floating IP1 l4 u4 W+ p1 Y% J
申请floating IP
; W" f3 w$ j4 m, @nova floating-ip-create# i. W* \# w/ r: s
关联vm
2 M. \$ R: S4 H3 Y# nova add-floating-ip superfrobnicator 10.42.0.366 H4 k) g3 M+ |! L

! k" X% y- i1 w7 w8 C( S 查看虚拟机
& V) Q' l5 D1 V5 E nova show superfrobnicator9 E. Z. y, L5 u2 ^3 S# j
ssh访问虚拟机
6 v3 O! v7 V- p' E) tssh -i .ssh/id_rsa ubuntu@10.42.0.36
7 E* \0 o5 {; F) |查看安全组和规则% k, [: F; u' i/ g/ @: `  \
# nova secgroup-list
# p) r8 {( l0 x# nova secgroup-list-rules default, W  A' X4 H- [1 A# q+ |2 m) a
看图
: a# O( B' x2 y7 }: E' Z ef00c839b6003af371e5f5dc352ac65c1138b606.jpg
7 U, X! }5 V, Q. U% g
" c0 S/ b/ m* O+ Z+ @1 G
看看结果8 I- f1 G" t* Z; @" D* c
485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg
  C2 H8 F2 S. u9 A4 c6 Y0 Yssh访问vm
  b- N( w+ R9 b+ @
4 \% C8 i7 A- z9 n* a2 ~
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
8 q+ [( r& D3 l  f  \- K& U6 x, j) u
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg
' D. k3 [2 L7 }
& l; v3 K0 u4 D9 N3 Y9 i4 Z" t有用的命令, G" ~3 T% P0 n- ?
查看keypair  u- `# j! e  Z7 u* ]9 A
nova keypair-list
% a% l5 w5 z; i. p删除keypair: X& l( j! j2 Y9 A, q% `0 ]! Z
nova keypair-delete
9 f6 @3 i7 X% y( Q查看vm
) V  H6 R# S+ [. N$ F% x( O2 r4 Vnova list; x' }) Z3 a, I
删除vm,vm的ID
, l8 Z# F+ z. ]2 L4 |. e1 b4 `nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343
7 V4 G3 v" N3 Y* k# w
* ^3 \' N6 s# l* q3 Z9 U$ a5 S2 F% O1 Z# [& [; q
七:安装和配置Dashbaord; I1 x" X3 c# j) N4 `" O
1:安装dashbaord9 k5 d/ |7 d, Y9 y& M# {
apt-get install libapache2-mod-wsgi openstack-dashboard
. d; A! Y% T% @* u3 Q6 p& m" k* M( e6 e% P; v: y# [5 o
' x5 V* ?& M/ Q" j  t2 W
这个时候,你就可以登录dashboard
+ |' ~2 Y. T5 F; s. Nhttp://10.42.0.61 W+ n8 V6 R# [: z4 g4 W' V0 z
user:admin
; R5 u4 q, j/ W* G5 o& @pass:hastexo% C" ?8 j9 o0 a; h& ?- F$ ~( T

7 w) @" \$ b0 c) [" t4 z 29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg
5 @" r6 {# y  n

' w0 S6 U% v+ x7 T/ R 6982e5198618367ab223fa612e738bd4b21ce53c.jpg 7 F2 O$ ]  D0 p5 p
4 ?* t' T+ S3 @5 m$ z# k2 |

: r# F2 b4 ?6 X: O; @3 T% v
+ N$ i5 }3 k% }! M0 [- k1 V5:理解project和user关系5 l. X* c# _# j2 H6 [5 S6 Y- g
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。  M, J, ^2 T+ S  u5 Z
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。  Z) U2 s5 g: ?' N0 w3 B
我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行
* D- Z, j0 B4 j6 ?- D) x 6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg   n7 X/ T6 a( L' B5 e1 M
: L6 @# P+ k. @  l* c% `
八:euca2ools 工作. f' I1 K4 N# v/ k
euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。4 g# H1 M! n) R4 l+ D
1:安装euca2ools工具
8 w6 `5 q0 F) `3 m7 Sapt-get install -y euca2ools! A% }( g4 ^( d! z0 k+ ]9 `, R" \
2:设置环境变量
3 _2 {1 W/ y' y# Jexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')4 w$ Z' A9 D7 c; a: [1 k% |1 I1 N
export CREDS=$(keystone ec2-credentials-create)
8 t, B2 s! S+ B; ^4 `2 a/ H; d2 Yexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
# @, w2 F& ^6 |( o; B( B0 Fexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }'): n. k2 x5 B  \1 m( p, e" i
3:运行命令
: J8 P7 C7 N% H( R+ V& q大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list( N; }  h( I2 v$ G; ]' t
现在Essex对Euca的工具支持应该比Diablo好很多。) R3 u! ]# _/ e2 A2 m( y
96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg
5 z, j( d9 M& _2 X/ K/ T3 T3 D: b列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances
2 [; t* F; ?7 z
4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg " C5 L+ N- o% v- z( ^+ B
1 p/ N- x! z* m! Z) ~# H+ M/ C

. Y4 a0 |7 [* V4 U% bAppendix A:  使用nova-volume
( G- d, q, d6 x6 X% S1 @' ~+ {Essex Dashboard可以管理nova-volume。有两种办法来实现
+ Z0 c/ O* X3 v0 P' _/ f0 {默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。
5 k0 C9 Y* S+ K: i3 `4 h) |! e4 N6 ~
1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,
/ \4 ?/ q" }/ D: B) G/ O新建一个文件来做 LVM:
( }& `5 c8 E+ K) FDD一个设备
. G% U4 m! E8 R# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0! e( H* Q3 A0 j" I: w: @
加载一个设备
7 z' ?0 |2 Y$ B# P% p# losetup -f nova-volumes.img
: H: [; b: l/ F2 c: P1 u查看加载情况- }! `8 D* S8 |1 k7 v
# losetup -a* U$ }* k- M2 w( h9 `
/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)
/ |8 E- ]) _( w! v1 l& w7 ^  I创建一个nova-volume的卷
6 x! e, j, {3 j# vgcreate nova-volumes /dev/loop0. f$ w' _$ [! T& z0 N
  No physical volume label read from /dev/loop0
: l; T  f& Y! B* A  Physical volume "/dev/loop0" successfully created
! G4 I) w- y! c- K4 Q  Volume group "nova-volumes" successfully created
5 z: m+ N$ Y, ^& w7 f查看卷
1 t& G" Y. k' p( W0 o  }" w' E#vgdisplay- J( B' B: G: s2 G" d
就可以看到创建好的nova-volume。0 |( w) q1 b5 J$ l5 h
创建一个5G的卷,名字为volume1* Q5 r/ i* E/ \# @. ^
nova volume-create --display_name "volume1" 5
, b) Z' L5 m" w' o, K3 x创建完后,可以
- \( A6 K% ?& S; ]& r# ^% p) {1 s8 Anova volume-list+ ]" y$ _  `. c/ v
08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
& Z3 m- i& ^* m$ N3 }& o

: Z0 s9 f, Z- v) N9 ]4 ^% J6 z8 ]创建的过程非常慢,看status完成后,才能attach。5 a" C" ~- \/ R# `& q. ]7 ], X: @
如果希望删除创建的volume,目前我知道的就只能通过5 N; Y2 [9 p* \& [+ n6 ~
euca-describe-volumes% [3 `$ _8 {+ b* Y
euca-delete-volume vol-000000010 p% e1 G6 y. K: J% [  |1 e7 f6 Z

: I& r: Y* K: N, V$ S3 ~) |2 x& @把卷添加给虚拟机,1,表示ID号( `# J' K( o2 w% b, a9 T# V1 ]
nova volume-attach superfrobnicator 1 /dev/vdb
' _6 {8 s5 g" p/ i7 D) R% }. r) l3 O
2:单独一块盘
% T5 M9 q4 B* [) E; h9 F # pvcreate /dev/sdb1
5 t7 m/ [1 I2 h# z. I6 M0 d* G# pvdisplay! ]- ?( |1 W4 f+ @. \" V" N
#vgcreate nova-volumes /dev/sdb18 ^4 c, _, B- Q3 n( |
# vgdisplay
1 M. y: K: F% W2 a这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。" ^/ T. v3 G2 J2 s+ R5 p

. N# s, R0 }& j5 O5 B, D7 L% N4 a. v! o# v* _! s1 E: f5 j
参考下面文档" F1 A  j$ j# D. D
http://www.vpsee.com/2011/09/openstack-nova-storage-management/
; S! A# p# j1 m2 Whttp://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html# |5 d' T- M1 l( F( @) o9 b
lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html
* h$ f' q. j! P. v+ [
/ D# b; f' E) t
9 q: X& y5 Z5 {% [( `( S: V
& Q1 v/ K! W" p2 i
$ P) A+ A! o9 ~# C
3 W3 n* @, o" j: s* N; |6 p" UAppendix C: Dashboard 创建vm,允许ping,ssh登录
+ y1 B/ j  Y, E0 o6 _+ `% x对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
# Q: ?3 b2 s9 Y8 [不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。  v# K  [+ U' Z9 a2 k: |0 b
从ubuntu下载的image,只能用密钥登录,不能用密码登录。3 {8 D( f- n& r- r4 N; c
1:设置安全组 Security group* r! e) b% U, }+ o: c) U: v
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。5 \. }) E9 e) o5 W
为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。0 y8 f' [" w1 m5 f& v
默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。& q* A( |2 y/ n- a7 _0 _& Q& ?
9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg
# e+ U9 b% H$ z2 T* ]! `
6 J1 Z+ I9 \6 k+ _# }" _

5 m3 l2 H" U  d0 _! Y! d& o$ k1 H: f+ F( U# P7 K* \
2:创建密钥
+ b3 Y4 S" R- @; J! p7 w( c# T为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。
" [* ^" s7 V2 ?( }. K  h7 I, p1 N这个时候,你如果有私钥,就可以直接登录。
1 j8 V! j6 n: K) V) t2 Y6 U5 V4 u8 M
" `9 D/ u' L! F7 A' x 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
0 M# {& N, ^) N, k2 K2 O下载私钥
& j  m# l0 ~' `$ P8 }点击create keypair,就会提示你下载私钥。私钥是pem后缀。% ]+ V5 d1 z5 L, m' p# K
7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg
2 B4 c$ z* z. Z5 D
: G9 F! g4 @8 J" h+ w: w$ y1 y5 z: ~: K: E1 }2 `; m$ N
那么你就参考这个文档,就可以。
( t6 l  M( }) ~2 ?7 j/ S2 ~3:创建vm
3 T( p9 b5 }$ ]6 L" O创建vm的时候,你会选择keypair,安全组。
& G& ?- \& a$ z* c/ E& O( E& \. C 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg
$ f) \- Z: W' H

8 w5 R7 ^2 k/ A, [% i# V, H# A5 N0 Z+ I/ c. V# `4 L. M" O
46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
9 S% `. g4 ?& |. Y3 J* H2 Y7 E. i- W$ @! v2 h3 }+ R5 ^# c
创建完成后,得到其实是一个内网规定IP
9 K4 S0 I  z+ p, q& n( c e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg 4 A$ k5 ^1 _0 D$ e% Y9 I5 ~

/ k; a7 `3 W4 h& M* D4:floating IP5 R# D5 A9 u( B% o+ }7 E7 f
给虚拟机分配一个 floating IP,可以理解成是公网的IP
2 B+ a' c5 d7 r. D5 ~* } 8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg   j& o2 J5 ^: U. E/ L9 m" E
分配完

: p) z* o; G3 R1 V  z7 Q 60d25790f603738df2568f99b31bb051f919ec45.jpg
% @8 k: g7 Z* A/ @& m0 r关联vm
$ U4 g) j4 Q  i$ G0 k
af15baefce1b9d161e8719daf3deb48f8d546419.jpg 3 Y/ v$ W% F. i
5 S0 p5 T- J% t0 ]4 K5 N

6 |* y& F8 Q' V9 A: {* r4 {, ]6 X, K+ @; M. E7 q( }
看看结果/ P, B9 h; {# U/ m. ~2 H1 ]6 m! D
3c0efa1190ef76c647bf78909d16fdfaae516774.jpg
8 d" q: w& G2 t0 O2 D9 j
9 `  e' J/ I. U, l4 e
5:ssh 访问vm
5 M, `0 i! N0 S, d& W这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。
4 o$ q% R1 T, ~5 J2 w) @对于ubuntu提供的image,ssh的用户名是:ubuntu,* i+ |+ }: [0 T7 ^% o
SecureCRT 6.x版本3 O" Z8 T6 I% P
对于6.x版本,已经可以直接使用pem后缀的密钥
* Z% x5 z; e( X1 r
: t+ J5 h. A2 g' o, E( x e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg
6 [; P  V0 j! c; W4 |" q% b( A; W
" B5 k  A! a6 _. L1 y$ d0 Y
putty登录
0 c3 U" `) x* H% ?7 X# [对于putty,需要对密钥进行转换。+ p& J+ U3 B2 W0 R5 e0 A
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html2 k2 _) A7 c& k5 s3 _0 h9 t
到官方网站下载:PuTTYgen这个工具& \# B, h$ K% A7 {% c
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以
' P6 M8 }5 r% a' K  B4 C 67da7663053a03280d33fa5f.jpg
* O9 g" c: W! B" D8 u

" Y5 Y7 ~% `# e+ f+ P存放到本地。. E+ b' i3 M# C5 M
设置putty使用密钥
0 ^0 Q3 x/ @" t) e/ _8 e3 o 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg
8 v1 H! J% R: M2 q& Z
# Z: K& C* v% t1 z+ K
d520caca7bcb0a4664b806826b63f6246960afc3.jpg
) Z+ x8 y& [6 k; j  z' [6 |

* d- F6 M! i- ?3 B9 e& ~9 p( U
: |" N4 G# N/ o+ i1 |! a2 |$ Mlinux客户端ssh登录vm& t- L6 n+ X% o# n+ z' }9 R/ \
如果你是linux服务器上,你可以上传密钥到服务器上
) m4 g  e4 Q% u* e) x7 Fssh -i key_for_openstack.pem ubuntu@192.168.22.34$ u2 B5 {1 K/ P: p* t& z
就可以直接登录虚拟机。  [# \: c. u- q* l4 {5 E
" y) O6 u) G" t. \  S
8 M6 m9 G6 V' R; d0 I
Appendix D:FAQ: a' W4 b" S& L; I2 Y5 `3 N
1:我登录服务器后,命令都无法运行8 y8 o* c5 z9 `  h6 q4 L
~# nova image-list# i% k! O/ j, ^" c) O, T( j
ERROR: You must provide a username via either --os_username or env[OS_USERNAME]3 s7 H7 k1 T" t: i: m. [. M

# M6 n% H, z) d- r8 a如何解决。

4 P+ H2 g$ ]6 u0 s3 h% y这个问题,其实还是你的环境变量导致的。4 e, I1 ^7 U* }1 u
export OS_TENANT_NAME=admin- J8 R) K/ G% e
export OS_USERNAME=admin1 V3 o/ ^; _# ^& |8 h" C$ n
export OS_PASSWORD=hastexo' `7 n; r1 \0 U' H
export OS_AUTH_URL="http://localhost:5000/v2.0/"
+ j0 j+ [: g- Fexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')$ {+ I5 ]4 j/ |( Y8 L
export CREDS=$(keystone ec2-credentials-create)
1 ~# u- C$ q$ I% b& T& bexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
* w8 _; V2 D2 X7 rexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。7 I  p9 P3 P1 e9 t, @$ m3 D$ m, t
如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。" `9 K0 c  d( W3 k' q; i; B
http://bbs.chinaunix.net/thread-1958386-1-1.html
0 N- |5 q  W  ^& o1 e
5 O) o* l- r3 y* y0 M0 t, qroot@node6:~# nova image-list
* q1 {/ ]: R( j- ]+ N% P9 k+--------------------------------------+-----------------------------+--------+--------+
+ E; G1 {, I7 `7 [6 o# Q$ D6 O( g|                  ID                  |             Name            | Status | Server |
% w# A  K9 }, V* y# J& _+--------------------------------------+-----------------------------+--------+--------+
. `) Q5 C8 [* t) T| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |: L! X9 O2 k, t5 ~8 U  ~
+--------------------------------------+-----------------------------+--------+--------+8 |5 N6 w% `" [. K2 g/ q2 N# o
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg
# `; D. i* ]4 B% P  o& Y
9 q* n2 u, u2 q) ~+ p! [1 z5 } 2:如何用curl去测试keystone
" g2 B  o$ S4 k+ j6 I) d' l) E替换红色部分,就可以了2 F$ W' p& m$ d1 f3 v& f
# 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
6 |. `; D% O+ L, A3 @# z) A
# @; G( C+ m7 G& H
; G& @! p# T- e: M: C0 Y0 m博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb& I! G* r8 p! o9 e6 h
3 I& d5 z. e0 b6 J- Y5 J/ d7 S8 W
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:5 N+ H0 G( Z' ]: O" l
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
# m' G* e$ i% o, G  m6 ]+ C, t+ @0 }2 L' ?
解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。
% W  h7 U& H/ [# o; r4 d9 g6 Y( l7 W; N$ U           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'2 Z; N2 l- `6 t& \- u
注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
9 w) T& p5 i6 A& Gexport OS_TENANT_NAME=admin
$ n9 P: t1 y6 Y) Y3 I3 Pexport OS_USERNAME=admin" ]5 t! s0 z" t) L; ]4 x- R
export OS_PASSWORD=hastexo
2 Y, `) z' |" m. M  v! }1 g5 dexport OS_AUTH_URL="http://localhost:5000/v2.0/"3 }2 L; I: e5 U) }: ~6 b! W
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
5 g( X2 N, @* F# I* eexport CREDS=$(keystone ec2-credentials-create)/ R7 {; [$ j1 Q3 O( E' X& ^
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')" o( z% |- I& ~1 t! j8 H% _
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')7 r9 U9 V" P8 s7 {
# d7 Z* T1 f" n3 n- L
现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑 7 i1 W1 Y# z: h7 ]! m7 k0 b. A
; O3 f5 ]+ ?/ h  }
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:
$ U3 v( J/ B4 K3 e; ~  n/ V/ s$ X- `
SSH Secure Shell Client工具密钥登录linux:$ a/ S' ~# `4 g0 ?- i: k: K8 v

6 R! O! y: e8 E$ I' J. l& {6 U  Xhttp://server.chinabyte.com/365/8835865.shtml
% [/ |# r+ i' U  Z& l3 H" v. m
7 \' J5 ], f( `, J5 p3 {* l
1 K2 d* O5 s7 ~- _5 O5 l* }! Z! l) sSSH Secure Shell Client用public key认证登录6 Y2 R/ t2 K$ V) I0 Z' k
http://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html
( y5 Q& `3 `( j1 {) g' I0 h# m7 V2 y+ g2 D! r$ H: ^
由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:; w% V/ `/ x1 v, w) U

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux
6 n( j5 I/ ^- P5 v* I
2 |+ {2 P1 I! o. _6 n& g- S& @0 ]
没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。
+ _6 v( N) L. K! yvi /etc/ssh/sshd_config
; R9 X! n, q+ j, i" V9 s将PasswordAuthentication no改为yes
# X$ S. q, T/ J# Q( [' {. z! zservice ssh restart
7 M/ ]5 H# H+ p* L- M- u
" G( n" @$ ?, q. {; Q$ E这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。$ f% o- b2 j0 h8 d
安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版
+ `4 O: B- c% k4 w# S  s7 J1 `' h$ V* e% `% l3 B& G% a
虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题. z7 W3 X  a. Q& t; l$ O

( z$ c5 o, ]/ Z& {, u1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
- S7 |4 ?: O- P. Yvcpu.hotadd = "TRUE"7 x' _- ?% F6 K+ M( V  j
变更为
; p) B( d% z; Wvcpu.hotadd = "FALSE"
+ f, p+ q# I9 u) `( m$ j" }$ |重新启动机器,如果执行命令: ; B% f2 a) c2 p# S. ]
virsh/ q2 f% O1 q# y. {
进入控制台就没有问题了。+ B% K" ^: C$ y8 d1 C/ h# p
2. 修改nova配置文件/etc/nova/nova.conf  q" v4 @. w9 [+ d5 ^! z0 {
#--libvirt_type=kvm, G5 y7 T! W5 m! x9 d
更改为qemu9 |. u" j/ _' _8 W8 }) J' v: i
--libvirt_type=qemu* {! r) K# D) c5 L8 }, e7 |9 k
3. 修改/etc/nova/nova-compute.conf8 ^, G) H$ ?: t( q# }9 y3 C
--libvirt_type=qemu6 B: X- z" }! d6 C& b; U2 j
4. 重新启动nova-compute,如果libvirt报错
: C/ \& u3 W) D) g/var/log/libvirt/libvirtd.log' l4 M* E! T  r, N7 Q! u
Cannot find 'pm-is-supported' in path: No such file or directory
! B. ?5 |5 S. P) _( Z, Q$ N4 V报错后需要安装
% A5 N$ g5 n) F9 P, J" T: r& b: lapt-get install pm-utils) T0 r# s, s- ?  T
5. 重启libvirt和nova-compute就可以了
) p+ q5 m0 }; R4 Gservice libvirt-bin restart& z$ K* P4 F9 g! c, {
service nova-compute restart' A' v: I: ], u4 m
# d9 z7 m. a* t
6. 执行 nova-manage service list' J4 Y3 z: m  [9 j' q& e. y
state都是笑脸的话,恭喜你,搞定了:->0 Y& @: c4 W# @3 \# l
) ~2 q4 |9 j. f3 U6 v3 H
感谢IT探路者,原文:http://blog.sina.com.cn/s/blog_869bf7c5010168hp.html
学大数据 到大讲台
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Sharpcloud.cn

 

锋云网官方QQ群

大数据运维&云计算运维群(ID:64924638)中国云计算精英群      Hadoop技术交流群②(ID:25728812)Hadoop技术交流群②      Spark技术交流群(ID:413581066)Spark技术交流群

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

返回顶部