锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑
$ B8 B( v% s, Z; }: @- d- X' d( q* F
之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。8 C7 N! ^; s2 ^

  S3 \3 L) j) i5 g. X3 D原文如下:2 @4 X3 t' I: K$ B- u

$ G/ V% W# m1 wUbuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex
3 D3 e/ |! R! r. K4 l0 Q这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。
* Y; ^' W4 ~% p1 ~$ c8 g$ [: x原文
  z' f6 ]$ E# F. n5 X4 s我下面的步骤,也就全部参考原文。7 n2 `# }) z! H: I6 B: g0 }
3月27日更新:基本完成文档内容5 a- n: N6 i' l$ S3 O
4月5日更新:重新安装第三次,修改了文档一下小错误。
0 t' i# O+ D8 k; v* A, ]) Q) N4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖
. b: B0 Z; k: U7 i% r1 y4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
9 Y" j1 _+ I4 G0 y- z4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。
! ~( x4 v8 T9 Y( t- S$ B" E8 ` 4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。; b6 S9 q, v$ @  r; J% [$ l
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
2 |. @4 m2 r7 T( Y( d, B+ G 5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。
4 E& O3 ], F2 `: x5 X* G6 s5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。; Q' K4 z: o, N. G' Z" ~% O$ z
, l" `3 D0 ^* d; j+ g. f  z& u
硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。
' K9 [+ D$ v- x, W# Z下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。, B; Q! Z: x* K- Q8 |- ^
为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
% L) D; [: r, A8 h目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。
- e' N$ f, S) n" z7 I8 ]: Y( R/ j6 ~0 y& J0 y9 U- b! X1 |0 E
一:准备系统: g9 ?# U7 Q5 a8 J. q
1:下载ubuntu 12.04. 服务器版本7 Q* T: G: Z4 h0 h/ l
ubuntu12.04正式版本,需要4月26号发布,目前是beta2
" W% L$ y! A1 k( l7 [* v+ N; Ahttp://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
) `: A  B4 B& R  g) k5 Z
5 W# j. u0 I0 C3 a& E% U- j( ~2:安装OS
+ H2 x7 _  L  {安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。. s; ~: w+ L; ~
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。
! v. d7 D4 x9 I- C- E$ C3 Y$ r1 h装完系统后。, Q) P4 k9 U3 z' c* z/ [
apt-get update, f5 C$ i6 x; O
apt-get upgrade
% V8 ~8 G4 ?( e8 f# k3 j) b" L: T" s更新源里的包,更新系统。确保你装的是最新版本的包。
$ L8 ?$ b0 }1 {( b; v( _
5 ^' M+ c1 I# h: \3:设置root权限
# z- d# ]: f& o6 ^  B% z2 [& D1 Y为了简单,全部都是用root来运行。  l6 a+ j$ F" T2 `
sudo passwd8 h. C+ Z; u6 i8 c! j
就可以给root设置一个密码。直接用root运行。2 ]9 _$ O1 o2 J  D: \9 z  m) ]! p/ e
4:设置网络: V: s: `* A1 ]2 y& I
我的网络设置和文档是完全一样。这样也减少错误的几率。6 \4 i' y0 M* y9 W
root@node6:~# cat /etc/network/interfaces 0 q9 N) z' p4 J! z0 g
# This file describes the network interfaces available on your system
8 w9 B% h0 N3 @# and how to activate them. For more information, see interfaces(5).
6 ~( Q2 y* a% h; G+ ]8 C) I9 T  r" q2 L
! p- a1 z, q# T/ Q/ Q# B# The loopback network interface
9 s3 L- k/ A1 x7 J: Mauto lo
/ b- E$ j1 k% ?8 J" L2 R3 k' Viface lo inet loopback
: }7 K; O2 a  U# ?2 g" k1 \! [4 O  C' C3 o4 ~8 c
# The primary network interface
" I# z. I- C- O* F6 nauto eth0
* H$ `% P0 U/ T: A" S; \1 Iiface eth0 inet static. o' s; ], t. U, g
        address 10.42.0.6" w2 h* f) A6 c7 I" P
        netmask 255.255.255.0! q2 `3 C1 C' o: E3 ^/ P% Z% ^
        network 10.42.0.06 u8 p5 k5 x. c9 I
        broadcast 10.42.0.255
5 V1 s7 ^/ s6 s, G        gateway 10.42.0.1  c3 s. ~* j' E  v. A) q
        # dns-* options are implemented by the resolvconf package, if installed( q7 M6 C6 k6 o. m+ Z( z% G2 x' Z
        dns-nameservers 114.114.114.114( q  x! V( T; {  V2 E! x9 l' a
        dns-search test.com
9 {' Y' G7 S6 W9 C8 S+ Y+ ~$ l1 ~; g7 k
auto eth1
# j6 ]  l0 U' J1 ]8 P' Uiface eth1 inet static
& e$ f* B; L1 w! ?1 |2 ]) b% V  naddress 192.168.22.1$ G" J3 K0 Q; A7 W) I  @. i
network 192.168.22.0  x9 R0 S: o; g' U  ^4 R9 ?5 B( r
netmask 255.255.255.07 e2 e% t2 o1 f
broadcast 192.168.22.255) W/ c9 u9 i2 R  r( v# {+ B( x& ~
5 T: G- p$ T0 l, K% n
重启网络,让修改生效/ L+ P$ r' n" r
/etc/init.d/networking restart( e' v: r$ v' y5 D1 V% w4 @% X
5:安装bridge& D0 O4 S' U. Q# R
apt-get install bridge-utils
1 w6 c6 r  q  v! R2 \) w重启网络或者重启一下机器都可以
8 g2 X; P$ z5 v0 h9 t/etc/init.d/networking restart3 F6 H- S4 _2 G* y
6:设置NTP% b' Q1 W  N% G2 W
apt-get install ntp
0 |7 x1 Y/ V% [9 h% l( x  R5 r
) o2 ^( R( i# O4 I4 S+ b( \/ @编辑 /etc/ntp.conf 在末尾添加下面3行, k# O. T7 n; O0 i! z0 M

/ W( N- ?, Z# G, u/ yserver ntp.ubuntu.com iburst' M( j" n2 m+ h- d# L# K
server 127.127.1.0
5 S; k3 K: J; ~: ^( H2 ]6 j6 `fudge 127.127.1.0 stratum 106 Z( W! f4 t1 I. I: b, K+ D8 v4 {7 \$ z
7 U' ]# Y* s$ ~) q6 [
重启服务
+ e. Q+ ]- L- x( Qservice ntp restart
* o) |4 m8 ?- i7:设置Iscsi
- C$ j$ k4 b1 z8 M" g+ y/ h8 lapt-get install tgt3 o5 c5 k1 u, \; U) V
重启服务
7 O# w2 p) p: b2 I6 P# m6 X* nservice tgt start8 C5 ~  b7 ^( i, ^5 ~* }
安装iscsi客户端
& @' q& G. ?* _5 U9 w' }apt-get install open-iscsi open-iscsi-utils
  K7 H* n' q$ d/ p8:安装rabbitmq8 o1 C8 }8 u: U: a2 q4 [
apt-get install rabbitmq-server memcached python-memcache4 I2 O, b* ^& p) H5 V
apt-get install kvm libvirt-bin7 d+ V# x6 I) x) `3 {9 ~
$ v2 ^+ v/ O( N
二:安装mysql和创建相关数据库5 U0 f& V9 z8 Q5 g2 Q
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。+ o$ M% h6 t. Y$ X& S3 ~8 q
1:安装mysql
' @* @$ v0 `8 p$ Q! S过程中,会提示你输入root密码。
6 z8 }- |$ t7 I0 P1 iapt-get install -y mysql-server python-mysqldb8 h. H1 x4 X" S" l9 l1 \8 t6 s
让mysql支持外部访问- Z* D* r9 _- m9 V, }! W* V
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  3 z- q8 f9 i1 w% ?
重启服务1 p$ k  h1 ~: k! P
service mysql restart
# Y6 o5 W8 w' K  k2:安装phpmyadmin (可选)% X1 v/ d7 H+ n$ l, D. G  x
为了方便,可以把phpmyadmin装上,可以比较方便管理数据库; l" [1 j% a6 u( N
apt-get install phpmyadmin# F4 h/ @2 O4 S- D- Z7 H
安装的时候,第一个提示是让你输入root的密码。
; u9 j; A1 w% x2 L, f: v; d3:创建数据库
) @+ N7 {9 ~5 C" n( P. U9 f& anova数据库,   管理员:novadbadmin,密码是:dieD9Mie
: g% `' n2 k: X& ?* zglance数据库,管理员:glancedbadmin,密码是:ohC3teiv
# n% \( H2 N0 U! B. }如果你修改密码,后面很多配置都需要相应更改。/ R$ I7 Y3 \$ o  k) k* E
mysql -uroot -p
6 `+ Y4 j' D' E! f$ Z3 nCREATE DATABASE nova;1 b2 Q* {' R  h* z$ K) ]
GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
* y& c2 p' {, d3 @5 m0 bCREATE DATABASE glance;
: g7 F+ _" i. b& F# P# MGRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';& d3 g0 w8 v5 {, R" ]
quit6 R- X! A4 T$ f: e

, B. v4 a4 L1 L- @  X0 i8 |
0 r1 v0 d: s& H* Z  x 三:安装和配置keystone
; s% `+ Q7 q3 d. e& ?( Q- eOpenstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。0 b' z; j* p% M* P* W# O8 Y
1:安装keystone  B- @0 X# s& R, G* I/ U+ R
apt-get install keystone python-keystone python-keystoneclient
6 Y% u& T9 V4 h& L2:配置keystone6 r8 k+ I- @7 C, C1 G! w
需要修改 /etc/keystone/keystone.conf 两个地方& O( K- U( v# b( q' s
默认定义的token就是ADMIN,我使用hastexo作为token
4 l8 ?; ^* R3 m: k% b) [7 m* w
3 C, x+ V0 n5 t7 V. ]+ w6 M[DEFAULT]( f+ N- i% s) `
bind_host = 0.0.0.07 K- t5 ^- r9 f' ~% G& G' @# Q; ~8 a' e
public_port = 5000
! ]. f6 D* r, ]- U% e/ z+ xadmin_port = 35357
% n$ s. {! F1 X! k#admin_token = ADMIN8 F1 N2 U. ~# |+ q
admin_token =hastexo另外一个地方是
6 s+ Z+ k" Q! @. k/ _. C# F* s[catalog]. a8 ^5 e! @  o+ d. c
#driver = keystone.catalog.backends.sql.Catalog
$ I/ Q  q2 N, I; Adriver = keystone.catalog.backends.templated.TemplatedCatalog
. R8 v8 S5 S0 l5 R- {template_file = /etc/keystone/default_catalog.templates
2 a- W3 P8 P1 n9 p7 m' V  ^6 \1 M* r! X3 c, i) a
重启服务
; Y" X; S2 v9 f5 dservice keystone restart
& @0 ?/ f+ m) b$ R: E3: 导入数据
' B& X% Z' w1 P& m* n( |! J# }+ `' Z这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。8 S0 K& [; V' ?) \
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt, Q8 r$ @/ |. ]
下载脚本: L) o! ?0 O" l! S. I" ?
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
2 P/ c* p/ A- C, U6 Wmv keystone_data.sh_.txt keystone_data.sh
% K- g( L% c- n6 X% M
( T+ S6 P  \$ q7 Q+ U6 _) u让脚本可运行
# s: W# g7 b2 n' }$ tchmod +x keystone_data.sh1 |4 ^* y  J( f# M2 |6 r, @
运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
, X! S( j# I  @8 u8 T第一个是登录dashboard的admin的密码: ~9 Z9 l5 `/ x
第二个就是keystone的token
+ }+ p3 e, S: }+ G3 ~5 I+ g#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
/ r: k+ T7 f5 n) B4 \! I& g8 {2 S$ oADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
2 Q7 e3 C& T* `4 D. d( l0 V% RSERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}! g, o# Y* c3 y- Y# U! n
#export SERVICE_TOKEN="hastexo"
1 }; B8 k- s% C' m4 P$ zexport SERVICE_TOKEN="Centrin"
/ J3 T& J6 d3 ]7 P0 fexport SERVICE_ENDPOINT="http://localhost:35357/v2.0"
3 @8 w; ]9 t7 q8 S& \" P( NSERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
3 F' J% l/ t, c; f; Y% n) W' u8 b2 r2 L( r- Y$ K+ l% `3 Z
: B; _2 R8 F( |1 `
./keystone_data.sh
. ^& g9 z1 T+ O顺利运行,会什么都没有输出

( K+ @( d& d- E: L; k$ j* ~# e$ A
" D5 N/ a* P' Y# I* p

keystone_data.sh 脚本

keystone_data.sh 脚本
* ?% t8 h9 x: r' F9 O$ b

: j' @3 B( \& g7 e6 i( Y% {+ M
+ N/ v, ]" R7 j$ G4 ?#echo $?4 y( K4 n' j& M0 q
下面会输出0 ,表示正常。你就别再运行脚本
$ w6 R9 C+ ]. h" E" Zkeystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list8 }1 P1 ?5 q0 i; D+ |/ N; y
看到这些,就说明keystone安装正常。
# T6 Z- M% @" X8 W
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin
0 J; W  _4 @! A' V$ [& i7 rexport OS_USERNAME=admin
" f1 @; D: \% I. Zexport OS_PASSWORD=hastexo9 ~. e4 O: O% g
export OS_AUTH_URL="http://localhost:5000/v2.0/"8 ^) s1 E# N8 C% X5 T* d% P1 T
检查检查
( S7 o5 a: i- W2 b# export | grep OS_* t' S  m# R/ M% G# d, ]8 n
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
, c9 [- G# ]" ?! i8 [* b8 `declare -x OS_PASSWORD="hastexo"0 a8 j! R+ e  w, H3 q2 n( Y
declare -x OS_TENANT_NAME="admin"
4 V) K- y3 s/ {, ydeclare -x OS_USERNAME="admin"
7 X1 ~; K' E7 z( X( ~7 n这个时候,直接运行& q0 W" q9 u9 h, D/ t8 v( a
root@node6:~# keystone user-list7 O1 C# `# o  I2 M# n% y7 K
+----------------------------------+---------+--------------------+--------+* n! L- }+ i+ ]1 N& ~
|                id                | enabled |       email        |  name  |
' f: o+ j( m: j* I+----------------------------------+---------+--------------------+--------+: N& z1 Q# Z( F
| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |
  }2 |6 w, V9 V# J. S& F( ?% G| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |
+ F, _+ f3 \. Z% O, g* c/ \- ^4 Q| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |
+ \9 M: a! e! D9 h$ ?| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |) L4 d( n$ R& q4 j
+----------------------------------+---------+--------------------+--------+
1 N3 |% ?! F+ z, f' p
2 d) J! z) T& T, ^7 Y, ^# Y6 a) N0 X# f$ k; L

1 ]7 l0 ]2 a4 y( l5 t" f四:安装和配置glance
+ T' |" A) t& C8 l8 [! o. w8 q1:安装软件" [8 q" l/ o, {  F% [% ^
apt-get install glance glance-api glance-client glance-common glance-registry python-glance1 M+ m0 |' e  m% w4 ]7 O
2:配置/etc/glance/glance-api-paste.ini
1 B0 ], t' S' G修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
4 e/ E- E1 K4 c% F9 M: m$ |) \" Uadmin_tenant_name = %SERVICE_TENANT_NAME%: S4 d  `! A9 @) m. z& A
admin_user = %SERVICE_USER%
# a* H# `: J8 h5 f, \* q6 qadmin_password = %SERVICE_PASSWORD%改成
' \/ m4 k! m3 q, A2 |5 e5 wadmin_tenant_name = admin6 M; {6 L" y* i4 d
admin_user = admin
9 h" F# o9 E2 E5 g/ T1 S3 |; f- Xadmin_password = hastexo
" H0 M& S0 b& e3 u" X* j
8 z# O* u+ q/ r) }0 f4 g/ b3:设置 /etc/glance/glance-registry-paste.ini2 s% F- J+ \2 E, Z. u, b4 P/ j
也是修改文件最后3行,和上面是一样的。- g0 ~& D, I1 i: Z  h2 [$ r
admin_tenant_name = %SERVICE_TENANT_NAME%
0 M7 C% }/ L/ d( l8 Xadmin_user = %SERVICE_USER%5 O4 ^: i/ \6 O1 m9 S/ k2 V
admin_password = %SERVICE_PASSWORD%
, f4 u: S' U  m) l0 I改成8 |! I- B- ^8 n# C5 b: h& ?3 [9 l
admin_tenant_name = admin! g. @, b* s7 L- m7 P- J
admin_user = admin  S% H: {& c8 T
admin_password = hastexo
/ d( l) {5 @# h9 z4:配置/etc/glance/glance-registry.conf
8 p! A) J( Z; D9 \. G修改7 `. v& K* F5 }9 F3 A+ Q) N. F
#sql_connection = sqlite:////var/lib/glance/glance.sqlite# @# c& v, q4 w  I5 J- _$ p
sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance
( T5 A, i0 m" j! r& m' S/ Q! \8 A% D
, L. @1 m4 e5 v3 \1 c1 T# U# M- f* |9 A7 g9 z0 d6 V
在末尾添加两行, R) r% b# p0 N, N
[paste_deploy]: @! f' n& N3 c
flavor = keystone
% B/ O4 n* M+ p5 i/ ?% }' e  g2 c" e
$ x7 k1 l; e, Z& o- U0 Q
5:配置/etc/glance/glance-api.conf
& Y* x; d6 _+ B2 P9 \! ~6 O" x$ B在末尾添加两行- L) ?* v( W7 N! q! s  `) q
[paste_deploy]
1 v- A' M# w7 X" uflavor = keystone

! e' @( m0 H3 O, y4 ?/ |! b; M1 Z+ T$ }
6:同步数据库
: t% Y  N; l* M/ H+ f# r6 {目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。: [* p* W; {4 [
# glance-manage version_control 0
* `$ {: v# k! ]7 z# glance-manage db_sync          4 N5 c% m0 Q( w' W# p0 v: |
/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./ J1 W8 n5 t  u# u2 n; ?! N; d$ i$ Q
  useexisting=True)6 B9 }* k- g2 E& ^% w6 z3 p
重启服务- A! c5 ^/ ~1 o  }7 ^
# service glance-api restart && service glance-registry restart1 T* X1 \# X$ y) A6 Y8 Q
glance-api stop/waiting
; F7 L$ H0 W% Y, {3 @glance-api start/running, process 13321
- @8 V1 W4 f, ~* E6 r$ A1 ostop: Unknown instance:
9 U3 Z3 ~, W5 O& k, i& `glance-registry start/running, process 13327$ J" S0 r: f1 f. j% Z- ?6 h7 a) }

; p* B6 ]' w# k) t- |& g9 ~. ^- o2 V
7:验证glance服务是否正常
  ^5 M6 ~: O9 i1 K, j; [7 _# ~下面的步骤照做就可以,具体原理可以看英文
8 h  Z1 ^; |1 K1 W3 E! y6 E' pexport OS_TENANT_NAME=admin# \" s* l2 ^2 O* u: a1 W
export OS_USERNAME=admin
$ C( r: T) a4 Z9 _. B! Sexport OS_PASSWORD=hastexo
' @/ E- ^2 ?  ?5 x8 E! @export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查; R7 b3 v2 h9 T4 E* l# g% y
# export | grep OS_
3 _6 D+ _6 z& B: p) i5 p+ bdeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"5 S- |1 ~0 G3 r, b, E
declare -x OS_PASSWORD="hastexo"1 \( b( _7 q7 X% Y. U  @# H$ Z
declare -x OS_TENANT_NAME="admin"
6 k. M+ X2 f# N4 u7 odeclare -x OS_USERNAME="admin"
% s6 u9 V, e) h4 K# u运行. B3 e( J/ k  d6 F9 P, F1 ]  g' W
glance index- l- V: f: a$ m& O+ X, V& u  V# A
没有任何的输出。表示正常。
4 E! `6 h; b& |8 |- c- \#echo $?
, `2 i  s- D  D) T下面会输出0 ,表示正常。
  x- ^! b2 y& D8 i0 x6 X3 f- g# glance --version
, r9 O/ b% P4 q: Uglance 2012.1
' R. V& y* g2 _6 R  Z8:下载镜像并上传2 Y8 k" P* t- G, ~1 L2 J3 p
ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意! x* P0 Q: ]6 |3 t1 z5 U7 g! G$ w! g! Z+ ]0 L
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。" \5 a; ?# t( u) U- Y3 l
下载镜像
% t( h& z% [$ l5 ihttp://cloud-images.ubuntu.com/precise/current/
9 S7 N2 G5 R6 i$ q, B6 x这应该是ubuntu提供的最新的稳定的镜像。
5 r5 V0 E, [/ ~% q7 _$ ^5 lwget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img) u; [0 R& f6 W: w6 M. Q, X8 s% P
上传镜像$ _: _1 W. f' W4 Z3 ~
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img2 v% E3 Q# F) a7 A: G: e7 B
这里还有一种方法上传,如果你没用环境变量。* E2 D" ^6 |# e: ~' w3 R  V
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.img9 n* s& ^( R6 C3 D/ V2 Q
上传完镜像后。在运行$ Z) s! S8 H. q% n* K$ h
glance index9 C8 r0 y- M: J
或者
) v( r& {& K4 n2 \( o8 `% {6 gglance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index4 ~! a+ x  J# ~) T4 J
就可以看到上传的image。- Z7 V) k- V! c" }- M4 p7 B1 j* }
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg 4 M* I, Z* w1 Q7 f: C. s$ v
五:安装配置nova$ _1 P+ _, y) p
1:安装nova相关组件  r- G0 @3 Z& w. i9 N
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  e% _4 C. f/ U& y
2:配置 /etc/nova/nova.conf
9 A4 N7 X( V- P5 m( G: C. t( P6 K把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,
; j( ~. z, s; C( i3 d7 @如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。# ?- B, ~4 B& w' h8 |2 b6 \
root@node6:~# cat /etc/nova/nova.conf& \+ L+ ^. F3 v: y3 p4 w
--dhcpbridge_flagfile=/etc/nova/nova.conf- n* ?' |. c  N/ h! i
--dhcpbridge=/usr/bin/nova-dhcpbridge; o  C0 ]8 ?' f3 V
--logdir=/var/log/nova
& G$ ^5 q4 y5 |--state_path=/var/lib/nova
" ?7 N1 s8 C8 Z7 j1 D: R3 Y# F--lock_path=/var/lock/nova
9 S! {6 d! _7 C, e. ?# f5 K--allow_admin_api=true
. _7 t2 D' r9 n& e4 R: k6 P--use_deprecated_auth=false
0 o+ R" g- ~. R; a( O. o  d--auth_strategy=keystone4 c( d4 [( f$ G2 ]1 ]7 a$ Q" ^6 Z
--scheduler_driver=nova.scheduler.simple.SimpleScheduler  U, L, x- k: Z: s4 w1 X" E
--s3_host=10.42.0.61 o. U% s$ J4 z0 d0 S
--ec2_host=10.42.0.6" X  c! _7 j+ P/ p" I2 X
--rabbit_host=10.42.0.6; @. p8 r. T1 u% P8 r
--cc_host=10.42.0.6
! E. x/ J5 L) }8 y! t* c  \--nova_url=http://10.42.0.6:8774/v1.1/4 }& y* x. A! [: C; Z$ K1 P1 m
--routing_source_ip=10.42.0.6
; f" `/ T  R' F% k1 }, n2 L--glance_api_servers=10.42.0.6:9292
6 G) r* X1 x. M, K0 k--image_service=nova.image.glance.GlanceImageService
: F" O4 s) P5 b  b--iscsi_ip_prefix=192.168.22" y* m3 P  ]6 k. ?1 o+ r) ?
--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
- }. `6 C+ S) Y: m" ~4 Z--ec2_url=http://10.42.0.6:8773/services/Cloud
' m1 R& m2 R( K! m* F/ B. P7 f--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens( Y, t2 y, b& Z& K+ i* Y6 H
--api_paste_config=/etc/nova/api-paste.ini- z4 I+ w7 c! F; ?) p) R
--libvirt_type=kvm
, E. G+ [, ]$ S#--libvirt_type=qemu/ f# `, r9 i1 ?) k* ?7 B
--libvirt_use_virtio_for_bridges=true
( y( l0 x" c2 j! Y--start_guests_on_host_boot=true9 t# ]! }# i4 Q( W6 n
--resume_guests_state_on_host_boot=true
; |$ x) `$ T" c% r; r. Z
' }, x2 u8 U* E. D1 I#novnc6 a4 s3 C( C' W2 N) g. N
--novnc_enabled=true
' @- q0 H6 C, W( ?4 N4 ]  ^--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
. ~* A6 [; U& z, [1 {  L- H8 ?$ |--vncserver_proxyclient_address=127.0.0.1
* i1 ^9 J' y' i! z--vncserver_listen=127.0.0.11 D$ A) p: w  f3 u9 L4 h0 K3 o9 `# ^

5 f. q8 B" y: e# Z # network specific settings
5 t6 V; N. I. C4 j( s1 ~( x
. ?1 m' i0 ?' }7 s--network_manager=nova.network.manager.FlatDHCPManager0 z6 o, v; `+ Y$ K
--public_interface=eth0; h8 q% S" x& y5 G- T/ f
--flat_interface=eth1' F9 e4 F% n4 T0 f/ m- W* @
--flat_network_bridge=br100
) i! z  s4 c4 Y- Q4 x, I) t, B--fixed_range=192.168.22.32/27- o; h$ P- y2 p. ]0 ^8 S9 D
--floating_range=10.42.0.32/27 4 Q7 `1 o- ~! L
--network_size=32! f5 C% v3 b2 z+ K' M9 |
--flat_network_dhcp_start=192.168.22.33
0 E0 s4 d# y' z4 w0 o# h  v--flat_injected=False, z  N, R- B' {
--force_dhcp_release; H0 [; q* w; e$ Y. a+ Z
--iscsi_helper=tgtadm$ r! @( a- c% p
--connection_type=libvirt
7 t1 m# Y; F. }* L% \( A--root_helper=sudo nova-rootwrap
' m. ^/ g1 m$ m2 c9 C#--verbose
9 F& Z9 ^* A6 @' N7 b--verbose=False
% i5 I6 l6 m# y; `3 c

  z+ ~+ [6 p2 g% W0 l; a3:配置/etc/nova/api-paste.ini; e: e! p' g( x3 x4 f1 m
也是修改文件最后3行,+ J, _- W7 Y- _* x% W5 t
admin_tenant_name = %SERVICE_TENANT_NAME%
  Y4 s$ Z0 V& T! X* _3 tadmin_user = %SERVICE_USER%
* ?2 |: g; t& {  l1 g- Ladmin_password = %SERVICE_PASSWORD%) w2 g: w3 t  a' m/ d2 l( Q% \
改成3 b7 C8 ~: n6 t2 Y
admin_tenant_name = admin
0 A5 F- n& Q$ U% C8 T/ H& o2 wadmin_user = admin
. A7 B$ D. J/ ]/ V& radmin_password = hastexo
; A3 X# n5 L& Y0 q) f% q4 z% l7 z4:停止和重启nova相关服务
6 ?  R9 \7 M3 V+ D7 M6 @for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done2 c1 @# K% \9 x  X' o- D
- A* }& g/ A" k8 M8 \! e4 K
5:同步数据库
& X: W$ ]4 g* l% z& I' ]& E1 @以前我运行同步数据库,如果正确, 当nova.conf% g8 `# J0 v, s( ]/ K" i) i. w
--verbose=False
$ g1 Z3 I! S* a6 n: V是没有任何的输出,否则有一堆是输出。7 c$ g5 @2 Z$ A. {8 Y
nova-manage db sync
  i" V. \8 O6 G- p  \/ g
7 C' J, V/ W# C6 T- L" L1 R9 c
d386ae19ebc4b74515d430adcffc1e178b821518.jpg $ c) h+ T; q( d/ ]$ g
0 \' {3 g7 A8 f7 Q8 @: g
创建网络
8 i/ q) i' ?( L3 B. T# ?4 Onova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32/ R' v0 c3 N. ]5 ?: @
d3a81f087bf40ad11f734058572c11dfabeccece.jpg
) k; N; o: Z6 C, N- I设定floating IP! N+ B% u6 b; w0 ?' v
nova-manage floating create --ip_range=10.42.0.32/27/ S6 M0 s9 Z) X$ U7 E
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg / n+ U: P7 O  h7 o0 G
设置权限  E/ U3 d3 |! H1 u1 ?/ v
chown -R nova:nova /etc/nova
9 i4 V$ x& Z5 [- R& M4 A再重启相关服务8 P( g8 H, f0 b% J9 u+ s# R4 R( _
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done9 b" y; w* b. k/ }( U4 r8 l
* c' Q6 ?% w2 n0 j- z% G
6:检查nova服务6 V  n, ~1 w2 Z- J. K7 D5 B/ q7 D
nova list
) E* P* @9 t1 K- F/ U  C% D5 U' mnova image-list  a4 m8 S' P4 P  _" ^* i  k
nova floating-ip-create
8 A, \# ~- ~: w6 h8 t0 R- ^/ B! x$ w
3f1e66899e510fb330aef02cd933c895d0430c2d.jpg 2 ^' o" w7 C* }/ j2 r
六:创建第一个VM" e" i* b* P. N7 H, Y' s0 ^
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
3 n4 ~2 Q0 s/ f/ i# ^* Y! v1: 创建密钥2 g, G6 V7 ?0 [+ Q
# ssh-keygen
& L8 P8 g, J+ I9 e一路回车,就可以了。
8 F8 F, H* n, R, g/ j- J 9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg ; \; @+ z( G3 n$ t; Z+ ?
2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1

% {! j! c" z$ R4 B6 _% r& a3 j这个时候,就可以查看到上传的key
1 e8 U6 Q% R# R- k7 yroot@node6:~# nova keypair-list$ Q9 G. p5 }, r% K. ]2 B
+------+-------------------------------------------------+
: G) P( n( m9 @. h/ b| Name |                   Fingerprint                   |5 C& [8 H3 S- H' P1 a5 O7 J
+------+-------------------------------------------------+
6 D# g- h+ |; ^6 l! i3 Q| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |
; W9 N! p" v5 i/ v( _. n0 x+------+-------------------------------------------------+
3 o+ a& ?/ Z6 _. Y" a5 \4:开始创建虚拟机4 s4 m: y! C" J# b' E, j  N1 P9 K
查看image list
) ?) N" [/ K  n3 \7 O4 R7 j' r5 pnova image-list* J+ U0 ~- g4 O2 ]" e. j$ T

* X+ r+ ]% ^; h3 e) Z* ]% F查看flavor-list
, I; v% Q& w6 u' Z/ C- B, Y* f; X! S- p# n. g3 ]( G
nova flavor-list! f9 d4 L5 I2 F  b- E/ V
创建虚拟机
1 ~4 N$ G+ b) N~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator3 J/ G2 P" i% |0 l5 N& C9 ^% v) \
看图有真相8 x0 x" A# J! h) B9 R: O- U
6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg
; |  S! r: O+ b- E$ o4 O1 E 查看一下创建的虚拟机
( e  }. m, T3 e. {- V
nova show superfrobnicator
( O7 n" x7 ~$ f9 i7 l 61dd66ec54e736d1a27346b39b504fc2d4626979.jpg
  d, e" ~7 {9 R

1 Z' S8 ^- W8 R4 _5 v- lssh 访问VM6 M8 T+ M. `% W8 I! C: F
6 q; U: h5 j( ?; Q; x/ Y
打开防火墙
! X" U% G* q9 x' O, h. Cnova secgroup-add-rule default tcp 22 22 0.0.0.0/06 H0 _! y6 t4 Q) H
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0. I$ C% B' x4 O' x
这个时候,就可以直接ssh到虚拟机上。
' s. E: e/ k3 \ssh -i .ssh/id_rsa ubuntu@192.168.22.35$ j* X- M# y# g. ]4 c& e7 y0 y
这样就可以登录服务器。: I2 z# v; h0 A/ X
Floating IP访问6 T0 q; B5 }$ a1 Z1 v0 q: \5 ]
如果希望访问floating IP
8 N: |8 O# q- Z, a6 K申请floating IP
" b' Y  F( e, Q. dnova floating-ip-create
% t2 {6 m: n4 Q# t关联vm
; t" X& p# J4 L/ H" q7 A6 C" I) N! R( z, a# nova add-floating-ip superfrobnicator 10.42.0.36
7 d7 X* ~2 ]) v" h" a4 Z6 |2 R1 M9 Q0 G
) ^, g$ C' |) @4 I( F/ f 查看虚拟机' |. h0 V6 o) T! d) v3 T
nova show superfrobnicator* b4 k1 ~0 u' F1 |- k4 Q
ssh访问虚拟机% R& @9 V7 p" [5 f
ssh -i .ssh/id_rsa ubuntu@10.42.0.365 h" ~9 X7 f! T9 X& r4 n
查看安全组和规则
* @$ m' o! o  h4 L# nova secgroup-list
- Q# y% P2 b3 O; _# nova secgroup-list-rules default+ @: @$ G$ Z. p8 u, ^& m: M
看图- b& d0 u. |& s6 L
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg
. w3 g6 U, G9 n8 s) J

- j  F+ h" |) J! J8 [4 b看看结果
0 ^: a6 a" ?, W8 S 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg 9 T! K! N# r, b7 h2 R8 n5 d/ ^7 W
ssh访问vm! o/ v" Q& r; k: p* c6 P! s

, x' P  {4 u6 V
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
$ c8 a$ |! k% s; L% R
0 R( B) b! J- L% P  O1 T5 v8 R
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg % T* U4 K# S0 A# R' l
  ~  R1 h4 G9 c0 S1 a& E; ]
有用的命令* E; T! ]; e* Z# G" q
查看keypair- Q# B) A; q6 k0 o* k) L6 V
nova keypair-list
8 `& M; w( D3 r/ ^2 N1 w& }+ e删除keypair
& @( I  @7 t3 G1 E$ u# e" R5 Fnova keypair-delete
" m: L2 H. R( W' `查看vm/ [9 W5 R) q8 ~
nova list( \) E* m  O: Y
删除vm,vm的ID' _8 Y8 ]; `* o5 K1 k3 D6 o7 ~
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343
$ N# L+ I# a' c  z4 x; m" d. u7 [5 ~3 V/ a: P, r' v' e/ ~4 @$ k+ S
- ?" V$ F+ P& t2 b& l
七:安装和配置Dashbaord' Y" Y" J' z: a0 I+ q+ g/ U  f
1:安装dashbaord$ F) |  V. r$ \6 I
apt-get install libapache2-mod-wsgi openstack-dashboard
- k" h/ r; i- |' H# ~* {: j/ k6 A8 U1 m8 x) l; `
% f+ D8 o9 G0 U1 g5 ~( |
这个时候,你就可以登录dashboard6 Q# D: E8 C8 L4 w! z* z* C
http://10.42.0.6
4 v# Z& M! p: \user:admin
; {# L% V/ J. H+ Ipass:hastexo
; r" M0 ^: T' t; F) o% \6 K" q5 ^4 M- ]" k
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg 2 i/ |# V0 D' \7 D& Y9 t8 _. r
. {2 `) |" T2 L  m, _' n
6982e5198618367ab223fa612e738bd4b21ce53c.jpg : @3 }, e8 v0 \

1 N1 K& h+ J- Z. F* T! O
* r: ^. f) D% w& [/ ?5 {% f# |9 `7 w; y$ \& R9 Y$ u. K
5:理解project和user关系6 L$ S3 b) t# W" L* l
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。" B% T2 {2 R0 P+ l) o6 A
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。" e* b* u! p1 K4 U: _- x
我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行
3 R; l- Q+ u, ]8 V 6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg 1 ^. K0 x. [' u

, I: f2 W, t9 {( O$ [$ T* Z* x, D/ X八:euca2ools 工作: o) X- F" j" l- T' z6 V- i
euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。7 [. u4 A) @& M- s5 @% H" M. n- p
1:安装euca2ools工具
$ O! L' L5 ^/ P) g6 y0 _: P& fapt-get install -y euca2ools
% ~1 e9 E6 P4 X: _% w+ l2:设置环境变量# U1 c. p1 j4 J; i1 [
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
3 \' K. ~+ H$ B: c3 f! O- `export CREDS=$(keystone ec2-credentials-create)3 A" ?1 Y' I: A, w
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
; J1 _5 S( h! {: V& ]" sexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')8 A' I6 ?  Z5 @1 A% V. W
3:运行命令4 y2 f$ V' t& w& f
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list
( T8 n0 A# O8 C8 }- k现在Essex对Euca的工具支持应该比Diablo好很多。! o! X8 m; X) {" N
96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg : f- K1 x, `# z1 O1 k( f
列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances

) h7 H8 _' e' R- v5 y1 ]7 j* s2 ^ 4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg
  F, H9 \! |. y% ?" c( I! j- I

3 z5 X; B8 Q- R
. z# f3 W; i) [5 m5 ]6 UAppendix A:  使用nova-volume 0 W6 Z8 y5 S% [0 w4 Z
Essex Dashboard可以管理nova-volume。有两种办法来实现
4 |: P/ O( ]0 u% Q默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。
. j7 d0 Y* k3 R) j. [6 G  L
- J$ s2 o" U$ w& h6 E& `) u; M1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,
4 h/ o/ f; q0 w1 o( u* z+ U! f新建一个文件来做 LVM:5 ^8 L9 @! k; L9 V2 P+ y
DD一个设备4 @& w" `8 w  _3 D$ g  y. Z: e1 q
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0" V" w1 M$ `3 M; b2 [! p
加载一个设备) B( w& D( w6 `6 Y
# losetup -f nova-volumes.img
7 ?1 A% c% R  b9 t4 C查看加载情况
9 }4 U2 `* P8 \# losetup -a* Y* y4 \9 g' ~; u2 ]* y5 |5 B# _: Q
/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)
$ Q: r$ j: V) m: |2 x7 ?创建一个nova-volume的卷
3 b1 h+ r0 ^9 C% U4 c# vgcreate nova-volumes /dev/loop0/ p6 {* C3 E: e) V  i
  No physical volume label read from /dev/loop0
" S6 i' W9 C+ T  m  Physical volume "/dev/loop0" successfully created' O  n2 p$ g7 c" Z) V- j
  Volume group "nova-volumes" successfully created1 v: v) n, c& c7 j
查看卷6 r" X7 t- ^. u* o5 B
#vgdisplay7 Y. c3 ~( |4 I, |( \: L
就可以看到创建好的nova-volume。7 x1 F' D% K* u" B. C
创建一个5G的卷,名字为volume10 [0 H: ?# _2 d) d
nova volume-create --display_name "volume1" 53 ?9 U* g8 [) w; n) J) u6 n1 _6 \
创建完后,可以; s6 z+ P: Y7 o' K& i7 m  R5 T
nova volume-list5 Q, G- h1 f; H. e3 O( g
08daaede9c82d15854a67711800a19d8bd3e42b9.jpg 9 K' V7 G1 S2 l4 B8 y4 B
( l& D' O! e% K7 s
创建的过程非常慢,看status完成后,才能attach。7 Q; ]  Y5 w, X: [% p) X& [
如果希望删除创建的volume,目前我知道的就只能通过, c1 E0 Y; G9 F
euca-describe-volumes
+ \  Y9 V3 Q5 m8 h6 G1 T* oeuca-delete-volume vol-00000001" g# L" f6 M6 C; D! |3 \

* N3 `3 P; ]  B% F  l, ]1 ~0 p把卷添加给虚拟机,1,表示ID号+ T% s" K( J' R6 ]+ Z, K# L
nova volume-attach superfrobnicator 1 /dev/vdb
( F" H8 k$ t, \4 ~* S! E
! B7 f1 Q+ h# P$ w; U8 T6 p7 { 2:单独一块盘
! G5 H* |0 r9 Y1 ? # pvcreate /dev/sdb1
% F4 X& _3 G; a5 l# pvdisplay; U; e3 d$ X2 z7 `
#vgcreate nova-volumes /dev/sdb1
9 H' `$ E+ {5 O1 `3 r: N5 c# vgdisplay( w& q% Z7 ^4 G. B
这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。
0 J9 e# q/ L2 ^7 a( l' @8 _+ l" }4 I: }2 |9 y# |# Y9 L
" C3 a' w1 z2 l- N4 v* t
参考下面文档
9 a5 S, C% G9 G! g  _http://www.vpsee.com/2011/09/openstack-nova-storage-management/
0 m# A; H' g! `; j1 W4 ghttp://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html& V/ ^& F" V  s
lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html, x% s* T; S3 W( s- Y8 _

' g" z% z1 r" z: ?" }5 K' `
' q0 v; j) ~! M  l, _0 S  b$ l) S$ O) |/ R+ [. c9 \2 l; j

/ `1 {& l3 i( J: w1 i7 t- l
' A! w  M3 l& P2 z0 RAppendix C: Dashboard 创建vm,允许ping,ssh登录
  r0 l2 F4 H1 Y6 {% q对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
- U0 g, A; n& K3 p1 v: ]3 f* G不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。9 F0 t- K9 X: K; o
从ubuntu下载的image,只能用密钥登录,不能用密码登录。1 B# b& W  a6 B* y7 {3 K" ]7 _
1:设置安全组 Security group
# Y) v% q. u+ t: \; N5 F5 M安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。% }; q" s6 ~0 X( w! w
为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。
' |4 n5 P: s/ w- o( \默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
, t3 n# ?6 E0 A4 r5 b 9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg + N: `6 f  s8 y+ G) E
- d  ^8 b: Z" y3 e

4 y, ^: ?% ~( z5 s# h* u4 B0 ]. G& ]- F) ]
2:创建密钥
+ w* z  u+ C' k9 n7 g为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。: d) D* }8 r. j8 s' O. K
这个时候,你如果有私钥,就可以直接登录。& {% O% X8 `8 @7 R

  |0 `: [$ |6 ?: Y4 y 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
5 n2 Z% K0 O' _5 f8 C6 w8 r& l下载私钥5 J! ]0 B$ G6 _8 n* E6 r% p$ X9 [
点击create keypair,就会提示你下载私钥。私钥是pem后缀。- I; c6 X# f+ j" g1 s
7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg - S) g: u; E4 J, N0 [. S* T  E5 ~

1 w9 L7 _+ H5 _( K# ]8 Y3 Q+ v9 `
' @3 Y0 {2 [# q. A% H1 |那么你就参考这个文档,就可以。
. b2 N( H: k3 p; ]5 U/ H1 ?/ Z% }3:创建vm
% L0 ~! |5 h* Z1 c创建vm的时候,你会选择keypair,安全组。
% b  ^) f- \8 S9 c; {* y 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg
) M0 f* g: w* `# `

! J: @+ W3 q& v4 F/ @9 H4 k
1 e, R5 Q" }2 ?7 ?& A 46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
2 k7 p/ i. D7 A  T
  }) z* Q/ L4 U+ V创建完成后,得到其实是一个内网规定IP
' [5 b' s/ ?* { e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg
: C0 r5 ^2 J# y1 o  f8 {

8 F+ j# `  I' d( I4:floating IP) u5 A/ l+ I1 ?4 Y0 x, _; U
给虚拟机分配一个 floating IP,可以理解成是公网的IP
3 E& x+ O' g4 K" t4 F& \( W/ r& } 8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
9 E( a5 p: T8 z5 t) F分配完
+ H& t- |: }; c' ^
60d25790f603738df2568f99b31bb051f919ec45.jpg 1 a  n( a+ W/ s2 G1 k
关联vm
5 h' {' u* t' E
af15baefce1b9d161e8719daf3deb48f8d546419.jpg # A0 I& l. u! i1 ~: C" M$ X
  S3 G( z* V; l+ X& R' X1 z. h
# _) ~. n, @/ J0 _

$ k5 b7 m6 t& F& B7 ] 看看结果
$ K$ ~7 K2 w# K0 I0 L& p 3c0efa1190ef76c647bf78909d16fdfaae516774.jpg 7 Z3 }( d" \7 R4 j, R$ k
8 }2 S! v0 p& v
5:ssh 访问vm2 `' H6 ?3 j/ \9 t1 T2 u$ Y1 n1 j. z
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。
  U. I3 h/ D* F$ R: w* c4 m/ d对于ubuntu提供的image,ssh的用户名是:ubuntu,
! |5 K. y; S8 B) XSecureCRT 6.x版本
9 t5 T* c; H: h7 a! {; W对于6.x版本,已经可以直接使用pem后缀的密钥
* j4 N, M$ D6 G+ ]9 O3 ^/ ~% G
$ y( }7 e5 F9 H: S/ B8 t* N" g# S e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg $ H% B4 R: D0 S8 m6 [
" U3 x) Z2 W7 Q
putty登录; T* X, L0 _' ^1 s  a
对于putty,需要对密钥进行转换。
) e( V7 }4 L7 u4 j) rhttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
8 D( E- P3 y. w$ U* O* K) d# }到官方网站下载:PuTTYgen这个工具5 x& }% O3 |0 D
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以
1 Y7 i: l/ A0 v7 B& O: o 67da7663053a03280d33fa5f.jpg 8 P% |$ i- ]3 Z1 k6 k- ^

' I# Q9 F. k+ A3 A9 z5 C2 y存放到本地。
$ i9 A2 D, d& w% e4 b% [8 l" X设置putty使用密钥
2 I8 R$ g0 I. v) O 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg ' \$ T( m% r/ }( M2 s9 u' z
$ M) o, K" v) t$ [) l$ @. }$ d
d520caca7bcb0a4664b806826b63f6246960afc3.jpg : V6 W) x$ _0 o+ Q4 V" P
8 l. M' I4 Y0 v+ p* b
2 W3 W7 h2 Y* A: |, q) D
linux客户端ssh登录vm. ^5 w. j: K, {7 b* x% c
如果你是linux服务器上,你可以上传密钥到服务器上
' P* K+ P; `" j5 g, g0 sssh -i key_for_openstack.pem ubuntu@192.168.22.34
" n: `3 W! ~/ N& ~$ x4 u2 b7 G就可以直接登录虚拟机。, r, D! s0 T/ g, M- Q) ~0 H1 e  H

) u: h5 P) e3 \8 Q" X* P( _( Y  q% s7 a( `+ ?9 A& D4 e9 E
Appendix D:FAQ
' d8 T! Y% a, x, g; r) w" ?1:我登录服务器后,命令都无法运行
" H, x3 P+ s) L5 P' q8 B~# nova image-list, X: U  H4 G5 R% T% E' L# P
ERROR: You must provide a username via either --os_username or env[OS_USERNAME], M: a) X6 }, G  f! t/ j: m
1 x3 X0 n% q% |8 [9 J6 k) G
如何解决。
; _' V! q0 c" }3 C
这个问题,其实还是你的环境变量导致的。
! _/ C) l6 z% {( j! mexport OS_TENANT_NAME=admin  y! `) _. H  X( C
export OS_USERNAME=admin
3 I# z$ A# k, J& i! S* t+ l! s' sexport OS_PASSWORD=hastexo
4 r4 t/ \( T, A$ h7 }7 ]- yexport OS_AUTH_URL="http://localhost:5000/v2.0/"
, x5 `% B9 a8 l, o, I7 Xexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')- U0 t0 c8 p8 ~$ ~8 y
export CREDS=$(keystone ec2-credentials-create)+ u0 T1 H+ n! O: {( U
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
$ J5 N# S1 e! |* M$ x# G+ Eexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。% Z% N' x& x  r! Q9 m
如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。8 W  p% g9 \) r% f2 J: f2 D: D
http://bbs.chinaunix.net/thread-1958386-1-1.html
: {# p7 v0 d* E8 a; z$ P( D: W0 ?; u6 L- s2 d# g7 ^
root@node6:~# nova image-list2 |; E- W* }$ a) b. Y& ~
+--------------------------------------+-----------------------------+--------+--------+3 n4 @0 V* ?4 |
|                  ID                  |             Name            | Status | Server |
9 y+ H2 P0 Q4 v# U+--------------------------------------+-----------------------------+--------+--------+, n0 X7 y' Y% I$ A* }: Y4 a1 y
| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |' S  y2 D' i( L3 n# v- h
+--------------------------------------+-----------------------------+--------+--------+1 `( ^+ i" @, T" R0 ~9 i
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg
  ?; I3 w$ }2 W$ {* H! Q; n4 y' d
' u! a% ]3 a: X7 O 2:如何用curl去测试keystone
+ [7 s! ?, Z' R+ h. L替换红色部分,就可以了* e2 ?, g. e+ N- v; E- u
# 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' D! X: v' \: i) S% Q" {

5 w% e: {: [& m# {7 z4 y$ i
  {  t8 A- [3 Z, R博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb
/ G5 i, k. C2 n; }/ b) B5 [7 W* ]5 O  c5 F0 U+ ?* Y
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:, @2 q. d8 J( ^( k( ~- U, 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
# O4 q+ z7 ^0 S& f+ }! U
; V) q; j. V8 f解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。# |. p6 i' E+ I# i) `' m& R
           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
; @5 c2 N% a; `注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
& f9 ?4 [. y: |7 j, v7 {6 G1 aexport OS_TENANT_NAME=admin/ p+ ^$ _" l* A, Q  C1 g1 X6 w8 t
export OS_USERNAME=admin3 B7 ?$ R: P/ `# B; d
export OS_PASSWORD=hastexo
2 L5 e, h- w& U# _' w% Uexport OS_AUTH_URL="http://localhost:5000/v2.0/"
1 ]8 }$ M  Q( @export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')7 U7 {. o- I9 V7 {
export CREDS=$(keystone ec2-credentials-create): X! a+ h7 j, z
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')/ E  e/ S% O( _* ?( N2 g9 P) [
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')- r$ g& U3 N3 ~- N# C4 ]4 t. N

  u; s6 H0 z/ f现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑 " [$ W  _) g( y

" W2 X5 E2 v# [1 U  l$ M3 ]SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:' G- U% V5 U9 u" `' I. }

& S# S6 ]7 A  O1 }8 pSSH Secure Shell Client工具密钥登录linux:) r7 T5 `9 @2 j) d2 B! T) B' |! y

* T# ]: x% L) r1 m5 v2 Ohttp://server.chinabyte.com/365/8835865.shtml+ b  Y. b# @3 ?8 t

5 `$ l# L7 H' c. E: d. j
2 n* j$ V) ^) v2 S: KSSH Secure Shell Client用public key认证登录
4 k( M3 ~3 C6 {" T3 xhttp://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html
9 }( U4 a2 A+ Q: O' a
, t2 p8 y3 U4 P" Y3 `6 K由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:3 S5 z8 ^3 ~& P7 r& X! A& P; Y

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

1 t" N: T# w) p+ p. C
) F7 [0 D0 I. }7 u没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。
$ ?" w+ M0 n$ y4 Hvi /etc/ssh/sshd_config
7 q7 ~" i4 K2 z( C将PasswordAuthentication no改为yes
- E2 n# y( x+ g- E: \- bservice ssh restart
# x: q1 F, |8 G: I/ m9 W4 B1 f3 c* J" e; k3 z2 d- F
这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。
4 _9 q4 l6 U# n安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版  J4 {" d! E  s0 _

% c& P4 f. O6 a5 C2 V虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题1 I$ P: O$ l" @7 l0 h2 B
+ A; t4 O4 N: u/ k6 V+ d0 s; ~
1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
  h4 @  ^! Z. U8 {- [, P; svcpu.hotadd = "TRUE"  }+ ?5 \3 q5 T* s8 ?
变更为9 f1 L- `2 _0 y) T9 C- Z
vcpu.hotadd = "FALSE"% K" @9 ]+ @$ l9 @+ ^. |
重新启动机器,如果执行命令: # \$ E+ ?- p0 j$ k( ?0 g8 R
virsh
9 z4 A( d0 Z8 y进入控制台就没有问题了。
) `- \  K. {$ [  b" Q% a; m2. 修改nova配置文件/etc/nova/nova.conf
* `  ]) y& ~. l#--libvirt_type=kvm0 T  }$ Y* X8 I5 B9 H1 j
更改为qemu
7 o8 K: z$ R# {6 e" l--libvirt_type=qemu
$ c3 b# a* H9 q$ [6 t$ b3. 修改/etc/nova/nova-compute.conf3 t, {/ c* {! ]/ v, s; P  y4 h
--libvirt_type=qemu
% }& @) O% J) s1 s4 N2 C! J4. 重新启动nova-compute,如果libvirt报错& I5 ]$ w- S! Z; z. R! [* k
/var/log/libvirt/libvirtd.log6 w8 t. o3 z3 i/ ^% z3 k9 j
Cannot find 'pm-is-supported' in path: No such file or directory5 C% Y4 w0 w, ^) o5 ?* K$ Z7 j
报错后需要安装* e! n  M1 Z+ n7 D. y; P/ i$ }
apt-get install pm-utils. A% b4 C( R' c
5. 重启libvirt和nova-compute就可以了
  n8 ^5 Y! }0 A3 Q$ K3 Jservice libvirt-bin restart
+ P% P0 `+ G, tservice nova-compute restart
9 H! u' x7 b4 L7 w& e. |; Y( }5 X0 q! F8 l7 m& j' t
6. 执行 nova-manage service list, Y* Y& R# k+ \5 o5 Q4 q
state都是笑脸的话,恭喜你,搞定了:->
$ s- E% u7 T0 d, x$ ?$ r6 _! J
$ p& J& B' }" d  Y% T+ J感谢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人群已满)

返回顶部