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

锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
查看: 15239|回复: 4

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑 0 w, v! d4 D, ]6 l5 Z* K4 C
  x( m$ J6 z5 n3 w1 o2 F
之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。
7 d; t5 s, I+ o  ^/ h" J
8 N6 R+ k2 z4 @: f& m原文如下:
+ _# Q$ U# G0 L6 \$ [* H0 T( E9 a2 K* `% u) }
Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex1 p- {1 p, a( K0 F: W( p) r4 H8 i
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。1 [$ T# ^8 ^) z, W  U2 P! N: H8 A( C
原文1 T+ L# A! W& k. L- `3 p! J
我下面的步骤,也就全部参考原文。
; b( D, B5 |6 a& u6 ]/ m3月27日更新:基本完成文档内容
, A: U! o# J' A* n4月5日更新:重新安装第三次,修改了文档一下小错误。- b$ M) L6 `) }+ |2 C$ p. b
4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖9 A7 x& K- ^; ~& a* k
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
  F8 |2 S* s* V; J( A4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。" O9 q- c  o* G
4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。; y: C9 x- x; \  J3 n$ J7 O
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
8 G' p2 }$ ]" U: w. B: N 5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。( x8 k* n# P* N" O7 ^2 J! P9 v( M
5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。
2 K1 r3 k! U/ a2 I$ B+ C7 y/ N$ [4 h/ t; Z% H6 ~% l
硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。% a" R5 l' ~' F! }1 m
下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
' w1 B) |6 q2 i' p) M6 L% E为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
* w2 O; I# D7 F) e, L目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。
% h* c' v/ `, s, m  T1 w6 G) g# _" z0 V2 Z
一:准备系统
+ |# E: K8 S- i  o. t, J- |7 S6 V1:下载ubuntu 12.04. 服务器版本
1 V+ Z7 q/ h3 }9 subuntu12.04正式版本,需要4月26号发布,目前是beta27 L2 ^( L/ b8 w1 U" ]
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso3 g+ l3 ~( C& d- r2 d( A

( j( f7 C. i. H2:安装OS; \/ }5 a& D; p0 ~: P
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。
7 f; z- ^% M% dIP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。6 H. j( ~2 |$ s  H2 Z
装完系统后。
- v6 ~0 U  F/ L7 Yapt-get update
- j- N2 g0 |& b* Vapt-get upgrade
; H% ]" D# c$ k6 E% x9 Q7 ^更新源里的包,更新系统。确保你装的是最新版本的包。
5 Y9 w/ W4 l6 ]  U1 y6 X; `* [
% ?, ~& j) a; q6 z3:设置root权限
  e  J& q" R0 N- b0 ?: X为了简单,全部都是用root来运行。
3 W: e0 R3 w5 B% Nsudo passwd) U( w6 K" B/ y- c9 Y- G9 |. ~+ E. P
就可以给root设置一个密码。直接用root运行。
  b: U, D' Z; [3 n. N( O4:设置网络
& c$ x' |* q$ g' L0 X0 |2 P2 }/ k我的网络设置和文档是完全一样。这样也减少错误的几率。
3 }! V1 U& l$ @% m: H. jroot@node6:~# cat /etc/network/interfaces / N# w4 X2 t; N( B0 f5 k6 S
# This file describes the network interfaces available on your system  [. s) |2 f4 S. Z$ P' m0 [
# and how to activate them. For more information, see interfaces(5).7 x6 J# L4 p) Q& J4 V8 X

6 ~) Z& L+ ?. M8 M3 w$ p# The loopback network interface& _: v/ X. I& Q
auto lo
2 d) r5 p. b3 |- P- b' _3 I: Fiface lo inet loopback
! A+ ]& l7 B- B
" U" z* f* B1 _* d# The primary network interface
* F- q' ?( ?1 G3 @0 S0 cauto eth09 q) L+ ]+ h. J' ~# n+ ^
iface eth0 inet static
+ J! e5 L. y9 g4 E" n        address 10.42.0.6# {4 N/ d7 Q, H5 e  o0 C
        netmask 255.255.255.0- m, [0 C+ t) A+ _) R
        network 10.42.0.05 Q0 Y! `8 D0 A) t- k3 q7 R
        broadcast 10.42.0.255. v8 W3 ~& M" e# g& K& ]
        gateway 10.42.0.1
3 s$ \1 \4 D. \& ~4 n5 k        # dns-* options are implemented by the resolvconf package, if installed
; ~5 P2 w4 E; Q; X        dns-nameservers 114.114.114.114
, D# J! F1 h0 T) ?: p5 e1 A% O! {. {- f        dns-search test.com0 q- b2 |- @5 C

2 _. j$ y" L- x$ Uauto eth1( c+ N9 l7 e+ m! z6 Y) m; z
iface eth1 inet static: o$ d& c( h( K. r2 _/ `% ?: a+ E
address 192.168.22.1
" y  r, t+ K; }; N' f' x4 K3 ]network 192.168.22.0
! N& I8 j5 i7 o6 p7 n: Anetmask 255.255.255.0
: l+ v$ l, Q! {0 ?* G9 s, kbroadcast 192.168.22.255/ g0 J1 |. L+ O& Y/ _. b5 r, V. e
/ p: c# t5 @5 |" V
重启网络,让修改生效
! u7 p: q; a0 ]0 S3 i5 Y* b0 h5 T/etc/init.d/networking restart
+ n7 N3 H  o+ x5:安装bridge6 S) B( U' A$ i" S; f: ?& w+ ?
apt-get install bridge-utils: y( S4 a8 U5 S1 W
重启网络或者重启一下机器都可以
0 P+ H, M9 R; c( t9 r( H( k/etc/init.d/networking restart, p1 g. I+ d9 a
6:设置NTP; |7 s  n, D+ X" z  E
apt-get install ntp
5 Y1 E  v& \4 ?
% ^; [; [, l' Z/ l% L: F3 u/ O编辑 /etc/ntp.conf 在末尾添加下面3行7 p  e* d7 V* u2 s9 N9 z9 l8 S7 _

) y8 Z1 l6 E( S& E8 sserver ntp.ubuntu.com iburst2 P. |' {9 N5 ]: z3 W8 O" Y
server 127.127.1.0% D5 J' L, P/ U+ M# C
fudge 127.127.1.0 stratum 10$ a/ w6 {; I* z* J# s% \9 C
; Y3 s$ K0 I0 R8 {8 p# v* A# S) j. [
重启服务7 h3 z6 ?, J$ n  Z7 k5 w7 E, Z
service ntp restart
* |- S& M2 }1 {4 V4 Y6 h7:设置Iscsi
4 I+ }% o* d' K# x/ u3 e/ y- s2 Gapt-get install tgt
/ |/ f6 L& r; q( ?% g6 G( q重启服务
. i) S1 @4 w/ i; ~6 J) \7 kservice tgt start
. b. p+ B5 J; W( `6 s; w安装iscsi客户端, g  i1 }9 ]% n% G5 s" c
apt-get install open-iscsi open-iscsi-utils
1 _# C/ d  m7 \' ~* `8:安装rabbitmq6 n  }* C. U- ]2 T
apt-get install rabbitmq-server memcached python-memcache* F1 N% Q# s) O1 G$ r4 i8 N3 \
apt-get install kvm libvirt-bin
% `( O% a7 j, j4 `% b% \  }( K; s( n5 S; K& x  u( `
二:安装mysql和创建相关数据库  C1 o$ u; `' V; R' n! g
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。. S5 u0 ^" ]4 f
1:安装mysql
& Y8 V9 g  H, \1 }3 @过程中,会提示你输入root密码。
  [, Y' t  y9 E* ?6 w+ Lapt-get install -y mysql-server python-mysqldb* g' \* x. M6 I2 T
让mysql支持外部访问
! Y; V. M4 ~3 c7 H+ csed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  / ?. H1 w6 E. O
重启服务% K4 o% f9 l  l9 X
service mysql restart: Q' n! j0 O( e. c
2:安装phpmyadmin (可选)) ]0 r( D$ X- F+ u3 [' Z+ {
为了方便,可以把phpmyadmin装上,可以比较方便管理数据库
4 N& a( Y+ d  k! ~: ~8 H9 Oapt-get install phpmyadmin. I/ I# `) y  W6 D8 `% N
安装的时候,第一个提示是让你输入root的密码。$ _( t3 w* b. J) ?4 T  y7 `7 x
3:创建数据库
& ^( T& m3 k# b0 B; Dnova数据库,   管理员:novadbadmin,密码是:dieD9Mie
2 j$ Z6 Q+ n; A0 N) |4 m% xglance数据库,管理员:glancedbadmin,密码是:ohC3teiv0 C& K7 U1 ]: }6 G
如果你修改密码,后面很多配置都需要相应更改。' ?$ Q+ @, g2 q
mysql -uroot -p. e5 s; I# m0 l
CREATE DATABASE nova;
, I, J0 l0 V1 t( WGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
" i4 p+ [" s, Z& P' mCREATE DATABASE glance;) Y: p4 y/ }: \' V( x
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
2 K) v& Q3 E7 B- F) N7 B7 s/ B0 Hquit9 a  k2 ?, z" H* }6 m5 _

$ k8 B3 P2 z' `- `1 q. `2 Y3 k8 C* Y' @' O/ i. C" N/ O6 D
三:安装和配置keystone
/ |9 X, P! J7 H& x" O9 FOpenstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。# D3 Q: z5 @/ y6 q
1:安装keystone- E0 b9 G5 T  \# L! U
apt-get install keystone python-keystone python-keystoneclient4 V! T' U& I  m' g. ?
2:配置keystone
* J7 ]* s0 B- G/ x) n0 C: W需要修改 /etc/keystone/keystone.conf 两个地方7 d/ s" t8 y6 l# B: ~' S7 I
默认定义的token就是ADMIN,我使用hastexo作为token
& P. P7 W3 W6 V7 n$ Q8 u( B% B) z3 T$ G; q1 \. @5 w% s& U
[DEFAULT]
+ w1 d$ k' K' ~0 G: m' Mbind_host = 0.0.0.0
; R2 {* v- T- j+ \public_port = 5000) S8 a, _. T: I4 Z1 m: S
admin_port = 353572 z4 K1 m. d* k) ^) g$ v  V
#admin_token = ADMIN. U1 J7 _& {9 G  f
admin_token =hastexo另外一个地方是8 h/ j0 x4 T2 R& _, p4 a( G9 P
[catalog]
, a" O& t, b) o4 [9 k" s#driver = keystone.catalog.backends.sql.Catalog
5 W2 }1 N! A5 ]driver = keystone.catalog.backends.templated.TemplatedCatalog
0 ^  @/ ~( B$ I, s$ gtemplate_file = /etc/keystone/default_catalog.templates% K" O) o6 p& e) D
! S3 p( @" C* s  y5 T2 h7 L
重启服务
" w$ s: F$ x* A; y7 U/ {service keystone restart% U  K2 {% X% U- X! ^7 ]8 f
3: 导入数据
: D- w- T; t- t, p+ L这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。
% b" y6 _8 k* qhttp://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
  x3 `/ L3 y- n5 q- v4 ]$ N下载脚本, u8 R7 O5 y* [  I% q  w
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt$ x1 \# m- j4 }- [
mv keystone_data.sh_.txt keystone_data.sh* ?$ n0 p9 \; ~; v. j6 W

" B; L9 G* n$ W/ \" ^让脚本可运行
! l% i* W# m1 ?/ \chmod +x keystone_data.sh8 o# L/ v2 J+ ]% J5 _4 I; r
运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
! B1 o0 p5 i3 ]+ r7 ~* y/ _5 h第一个是登录dashboard的admin的密码# F' z% u4 v. h9 V4 t+ P  d/ }8 B
第二个就是keystone的token. r- k9 Q+ ?( z) U! `
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}0 i& M4 m2 W  s
ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}9 M, b; R6 U( T
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
* E$ O& N  p! B! p  j) u9 t#export SERVICE_TOKEN="hastexo"
* `) j. q9 k" h5 u3 k% C" Uexport SERVICE_TOKEN="Centrin"
# Z+ q! l% c: \0 o' l1 L6 Jexport SERVICE_ENDPOINT="http://localhost:35357/v2.0". V7 T0 O+ J; k
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}1 Q# b3 L5 o# I, r9 v) `( l
- \5 L) L4 a) c2 l8 i; e
8 p9 l5 B% Y2 s9 U
./keystone_data.sh+ t# k' ?7 P+ \* G- B* P
顺利运行,会什么都没有输出

/ F* R& z& u; \- x/ l$ W- E6 \; t0 e. Y' z

keystone_data.sh 脚本

keystone_data.sh 脚本
: h# E8 O( N/ L! s2 ^

% g0 R# b. Q( ~/ _4 o0 z; w' g- z3 o8 B' x* ]- ?+ }# g6 |3 o
#echo $?
. K0 k# t3 M# L( Y2 l下面会输出0 ,表示正常。你就别再运行脚本8 {$ W' }% V4 u8 r: y: [
keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list/ b2 a, W# t$ R3 q( I2 c5 r( e( J3 Q
看到这些,就说明keystone安装正常。; Y1 {9 F. y, V7 O3 w: l  W/ b7 a
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin
+ h5 U# }8 ^6 V8 c1 M0 Jexport OS_USERNAME=admin9 `0 b; X: Y! m! }3 n
export OS_PASSWORD=hastexo! F+ v4 r+ n/ z' T; p& ^1 V! \( K
export OS_AUTH_URL="http://localhost:5000/v2.0/"
( B& v3 D% H1 P3 E$ I; C检查检查
% q# y0 I: L4 Y3 r! ^# export | grep OS_
3 `# B  X- d! U, q2 t( B$ ]" j  Cdeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
- G' p' O) q+ m, L! W. A, l2 ldeclare -x OS_PASSWORD="hastexo"
0 C+ I5 g6 L7 C. o" j- Tdeclare -x OS_TENANT_NAME="admin"/ ~- b8 L* L, w& D7 A+ }6 t" y5 ]
declare -x OS_USERNAME="admin"
& E5 k8 g( A- i: m" g这个时候,直接运行6 d2 h, e( w4 w% v; T
root@node6:~# keystone user-list. s+ q' e, J; g
+----------------------------------+---------+--------------------+--------+
- P  @- @  `5 l' T* i7 C- q|                id                | enabled |       email        |  name  |1 a5 [* t& H: c. o# T
+----------------------------------+---------+--------------------+--------+8 R8 G$ ?& Z$ [1 A& I- `7 m: a
| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |
. F& I1 ?( s( W! `' || 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |9 M7 T' }% \/ P+ k0 M  y
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |
1 _7 q4 ^. J" D, J7 u5 a| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
. K9 U, Y' }4 [/ W+----------------------------------+---------+--------------------+--------+
7 j. z7 J3 E3 @; s2 p& X$ N' a9 n9 c' D$ y; ?
9 a  H- \1 b. t1 |

% w2 o( z! N6 R5 u5 u8 ?. Z四:安装和配置glance) v( I: ~/ Y0 K
1:安装软件
% x9 Z' G; U4 H1 v! K/ Z9 eapt-get install glance glance-api glance-client glance-common glance-registry python-glance% @7 q$ v) N, s! g
2:配置/etc/glance/glance-api-paste.ini
/ A+ h3 P) k# |$ A; V修改文件最后3行,这些设置都是keystone导入数据的时候设置的。4 E, a$ ?9 D1 f3 J- L6 I8 U
admin_tenant_name = %SERVICE_TENANT_NAME%3 J* |* I( ?" `! j
admin_user = %SERVICE_USER%
5 g6 {# {3 |+ d+ x: Badmin_password = %SERVICE_PASSWORD%改成+ w0 s1 f# [# e+ _& k% `8 }. e1 E$ k
admin_tenant_name = admin, j/ @; ^' Q8 G! w3 @4 s
admin_user = admin$ d+ c. E! |. s. W2 ~5 R8 E
admin_password = hastexo) |  L) b+ g+ x
7 \8 h" W6 e/ p. N+ a5 u+ {# k
3:设置 /etc/glance/glance-registry-paste.ini
& X% a6 ?, O" x也是修改文件最后3行,和上面是一样的。0 N5 r2 X; i0 n  }  z5 c
admin_tenant_name = %SERVICE_TENANT_NAME%& Y7 `, Z3 x, Y7 F* R
admin_user = %SERVICE_USER%$ L- I, Q2 f1 r& l. t
admin_password = %SERVICE_PASSWORD%
* ^: z2 D$ n1 \8 s/ i6 k; Q' n改成# L+ L" Q6 Y& o- H" C0 n
admin_tenant_name = admin
( l' `: F; M! [  }( ^admin_user = admin
5 N- k6 X* \3 n" ladmin_password = hastexo- P+ P. I; z& W- t
4:配置/etc/glance/glance-registry.conf; n" x  v( S0 J7 E
修改7 B* _0 D1 b6 c3 R% i
#sql_connection = sqlite:////var/lib/glance/glance.sqlite3 ~9 d3 e  V: O; {, U) ]
sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance
7 i( C7 }$ j7 e" }" s; l  J  y+ w+ R& H/ F
, ^! @: x" V; }+ h7 O8 c* V* E
- d# q! \/ |# I* g: p/ l3 n. r在末尾添加两行
; P& ~6 z1 r9 e- X5 o7 p[paste_deploy]
, s0 G  G7 d* D9 S6 rflavor = keystone
0 Y& c$ \6 G' V. F/ R# R
: M( ]. }# R$ H5 [+ w  b" v
5:配置/etc/glance/glance-api.conf+ |7 Y% J' T! e' Z8 M; w
在末尾添加两行# e: p1 c$ m6 E. M( x3 O
[paste_deploy]8 }; o" e. {, e$ N" b+ n  d
flavor = keystone

4 u. `! Q* Q% }3 s1 l& F, n+ ~
7 y2 h4 Y% c9 B; l& F6:同步数据库3 L- L8 \4 b& G5 ?
目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
  ]- O: n1 o" P+ Q9 a. d# glance-manage version_control 0
7 O9 {( r$ J& ?0 G1 x: \# glance-manage db_sync            w: c; p1 E. [4 S7 @
/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., M0 h/ g/ f0 ]0 S+ b6 r* U: k- D
  useexisting=True)
- A: o' E/ w% f* l重启服务
" p1 c. n; t! i8 X. V. c  A# service glance-api restart && service glance-registry restart
2 H, S9 c( k  u! s% H6 o" e) I3 Rglance-api stop/waiting
8 I7 U0 s8 D9 E! e1 L4 J" rglance-api start/running, process 133213 _0 K. R( `! j; Z, F) D& d- q
stop: Unknown instance: : e% M1 r/ C8 ?
glance-registry start/running, process 13327- c/ {" M2 k" k" u7 u- D+ z/ ?2 a

8 d% x4 f0 p; r5 \3 L) @4 |
& m" i1 m% ?3 U* c7:验证glance服务是否正常& j8 C6 `. f9 _) w% X/ `6 K. {
下面的步骤照做就可以,具体原理可以看英文
$ W9 g' a4 {( f4 eexport OS_TENANT_NAME=admin9 u4 a. @: Y6 w: y  ]9 Q& m& ]
export OS_USERNAME=admin
8 [9 ~( R; f/ yexport OS_PASSWORD=hastexo
5 `5 w( R; ~( T  d. }export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查+ M9 c  i9 o; ]4 T( [
# export | grep OS_
9 w; ~+ G/ V4 q6 \( edeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"5 K0 |+ Z* ^/ P2 Q( e1 ?7 `8 q! U
declare -x OS_PASSWORD="hastexo", Y- C) x1 D# j5 J, n
declare -x OS_TENANT_NAME="admin"# i; _6 K; t' n+ i% ?1 {' `
declare -x OS_USERNAME="admin"
( I9 C- N& [% @7 j, n; B运行
) U$ ]3 h, H$ R- _" u  }glance index
# f7 \1 q) U$ x& M3 C没有任何的输出。表示正常。5 W" p0 Q& O: T/ X
#echo $?
9 s, E7 Q2 T2 g, ?2 Y下面会输出0 ,表示正常。
: l; ~) Q# q2 a- b# glance --version
! j" g8 x; |1 F. E: kglance 2012.1
2 C/ |1 x/ g5 B: t! @8:下载镜像并上传
7 x. i0 w" h) U) e* v7 @ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意/ K) z0 @+ [, }) {
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。! P0 B- x2 z+ V. d
下载镜像1 ^3 {' p* p; B$ J! D) b9 y
http://cloud-images.ubuntu.com/precise/current/' I$ `$ ^  Z- A6 V: b. V1 S# B
这应该是ubuntu提供的最新的稳定的镜像。
3 @! A% d  p2 {) ]8 A# Awget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img9 r) q* j/ f2 I- S6 A4 t$ F
上传镜像
2 F& }) {. b# G. pglance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img; N+ F, T! H! l
这里还有一种方法上传,如果你没用环境变量。/ @. b) v. n$ ~: @* k$ e& S! V7 y
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 N& g) Y8 a! B0 D上传完镜像后。在运行% e2 a) E- q- i. E
glance index' ]& v& j, ^! U! ]" D" t
或者
8 x- r1 I2 ~6 uglance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
# q2 L: G, K, U8 C2 h. ]就可以看到上传的image。3 d' k. I/ G* M  c, C0 o: T* e! I4 e
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg
3 z$ O0 S) o! }五:安装配置nova1 U* {7 y% S+ J3 K- o) C  W/ ]
1:安装nova相关组件. e3 X# W/ C8 s" z* e& g
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: \$ {  [3 b. o$ R/ h' w; M8 o$ G
2:配置 /etc/nova/nova.conf6 T. Z, Y! M$ l  z( T! t+ N
把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,- e$ G# d  l, ^" P& D1 j- g
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。  G" {1 c0 O2 w% h
root@node6:~# cat /etc/nova/nova.conf
0 E7 W  R. ]* U--dhcpbridge_flagfile=/etc/nova/nova.conf8 W9 B$ R( W  x+ A& v
--dhcpbridge=/usr/bin/nova-dhcpbridge
9 q, k# E' f/ \5 S0 {2 s+ ]! g--logdir=/var/log/nova
+ i8 U" v( s" ^- C  t; ^--state_path=/var/lib/nova/ ]1 j9 ^/ t* m4 S+ [$ k
--lock_path=/var/lock/nova4 c' p7 O6 t4 c! D+ _: `6 m  _
--allow_admin_api=true
0 P; Y9 r1 D3 f& @0 ]/ @- f--use_deprecated_auth=false
- w) U5 t2 S3 U# ]--auth_strategy=keystone
5 X4 o3 G* O+ A--scheduler_driver=nova.scheduler.simple.SimpleScheduler
) D/ z& X  B$ J: n; p  Z--s3_host=10.42.0.6
' n" x; E) E6 g2 e! |8 s  e--ec2_host=10.42.0.6: d9 S8 p, N& o4 V5 `/ ?4 y
--rabbit_host=10.42.0.6
& K' z7 N* {4 h& K--cc_host=10.42.0.6
* U( Z4 u' u" _8 g1 d--nova_url=http://10.42.0.6:8774/v1.1/
+ R6 `9 D2 f: F--routing_source_ip=10.42.0.60 T! f$ `# R* _: f( @
--glance_api_servers=10.42.0.6:9292% Q2 B7 \& X( ?( [  A
--image_service=nova.image.glance.GlanceImageService7 U; M( k* v4 I; i, N& [; [
--iscsi_ip_prefix=192.168.22, H. \& k2 J1 U" R2 W5 e" r
--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
/ W- S1 V7 j1 W5 e+ b9 [& _- l--ec2_url=http://10.42.0.6:8773/services/Cloud1 C$ a2 G+ Z3 c
--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens9 ~- |/ A# s$ u7 t6 Q) R
--api_paste_config=/etc/nova/api-paste.ini
8 N4 `0 B, B7 _--libvirt_type=kvm
' i0 y5 D1 K/ A/ _2 e) D* {6 O' k9 k#--libvirt_type=qemu) X! ?8 {/ G6 {: I. J  f
--libvirt_use_virtio_for_bridges=true9 f1 M, l% `* j  n( K9 T6 w( c' T
--start_guests_on_host_boot=true9 t0 s: ~( |2 U
--resume_guests_state_on_host_boot=true6 F) F" r, o* q6 a) l
4 p7 N& v) S; g
#novnc9 A4 M5 _! N4 Z% _& A4 j- q, X: t
--novnc_enabled=true
* J6 z5 Y5 H) R--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html* t3 V% G+ w4 P  h& g& F' k
--vncserver_proxyclient_address=127.0.0.1
: }4 I7 ?5 U, z" H+ M& Q% u1 K- w--vncserver_listen=127.0.0.1, _1 j- ?, g7 j5 q/ y$ c" U

+ N% _# J) g; R4 ]' ~! T0 q # network specific settings
7 V4 L' V, K3 X# J3 G6 b6 W3 S$ N# x7 f1 h* j. I7 r# {
--network_manager=nova.network.manager.FlatDHCPManager  q, B& s# t+ Q2 S+ a% t, k9 K* `# ]9 X
--public_interface=eth0  [4 w* _5 h8 D6 o7 V2 {6 y# |
--flat_interface=eth10 O4 ^. @+ ]3 M1 t0 N+ ]; Q
--flat_network_bridge=br100
, O6 W: }7 S* X- L--fixed_range=192.168.22.32/277 C5 |! D0 b" S- q- a6 z, @! T
--floating_range=10.42.0.32/27 ( |/ l% ^, ?8 J" U
--network_size=32* H! o0 T! j% X/ s  k- s/ P+ x5 g
--flat_network_dhcp_start=192.168.22.33
; f9 r& ^4 b0 _8 Q! _--flat_injected=False7 s+ p2 h% F8 y, E; t; W- N/ T; p
--force_dhcp_release
* ?2 J' t$ H" s- H* T, D* @  w--iscsi_helper=tgtadm- j1 }2 O* e2 ]- y
--connection_type=libvirt
# c/ e% ^7 v8 S8 v8 F/ g--root_helper=sudo nova-rootwrap
- e4 @5 ^, B3 I( Z#--verbose- F1 O# W0 y7 ?$ x
--verbose=False

1 L3 Q5 J! i* o! ~# ^& X' W9 e1 z3 p$ n
3:配置/etc/nova/api-paste.ini' Y6 S' U  ~# u6 I  I' j2 `' ^% Y5 ]
也是修改文件最后3行,+ M2 i6 M' P, X% \9 E% ~
admin_tenant_name = %SERVICE_TENANT_NAME%: F' r8 c1 ^' ~6 d* i% L
admin_user = %SERVICE_USER%
8 W- b2 V) B: L0 g% ^$ uadmin_password = %SERVICE_PASSWORD%1 i1 t1 E; a$ s9 X& e2 ]8 |
改成# ?& q* R) s3 l" @! ^. N1 x0 }  k' _
admin_tenant_name = admin
  N' j) C/ K; F" Y  \; Z3 ]- eadmin_user = admin
* l9 n( O# ]" Q8 A: U+ _- yadmin_password = hastexo
: d, Y1 v8 L! K1 K/ X5 S4 w8 r8 g4:停止和重启nova相关服务. L. w$ m9 w1 S2 T# 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; done; B6 j, O' k, `# L1 S

1 ~& u% m3 h. }: Y! r3 D% e. D5:同步数据库3 E& b- x: Q/ {$ }! N
以前我运行同步数据库,如果正确, 当nova.conf0 q9 T0 s' S7 S
--verbose=False! h  o9 U  D8 W* B2 D5 H) z
是没有任何的输出,否则有一堆是输出。4 O! a2 l2 I, |! F9 [3 u+ {6 Z" u
nova-manage db sync
/ U$ x0 H! D( X* P1 S8 z7 c
$ g& y4 c/ h+ w% y% {8 p' L0 }
d386ae19ebc4b74515d430adcffc1e178b821518.jpg # M1 Q7 Z! T7 B& R' H
4 {" R3 O6 n7 T. r& R' w3 i' q
创建网络
* l' v  A* |3 l5 n) k0 Enova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32! X; }$ `% a$ u
d3a81f087bf40ad11f734058572c11dfabeccece.jpg , w) b: |% |5 S' }/ b6 C
设定floating IP
2 }) V% \& o( k, A' xnova-manage floating create --ip_range=10.42.0.32/273 \2 ^! Y$ p6 L3 h  A
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
5 Q; l5 f: j/ E8 Q设置权限
7 I2 {$ ]. ]% L8 V9 N$ a/ U- Bchown -R nova:nova /etc/nova' N/ m2 K8 J6 v. r; o. A
再重启相关服务
9 M( K" v  A  V9 ~6 H; Y2 _# h6 Zfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done- Q) c3 z& }& W% p! r% j

1 [2 Q9 V& s) c% x0 x6:检查nova服务
. p, u6 \9 q1 w" h* lnova list
" B3 k# b2 F+ X, s2 n. `6 z/ Cnova image-list. F6 d' Z! l* Z! b7 N! K
nova floating-ip-create: ]% Z5 U. B- ^' d2 ?
" W$ _" n! l$ u) P8 k3 t9 f8 B' V2 @
3f1e66899e510fb330aef02cd933c895d0430c2d.jpg 0 }9 F4 G: y6 l  K* s" g( R
六:创建第一个VM
& l7 G! S' f' S0 p这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。& u, Z" h+ s) W. V. W- e9 F/ r/ J+ c0 n
1: 创建密钥! t' c4 ]8 O0 p
# ssh-keygen+ P7 B+ B! J( S$ s
一路回车,就可以了。+ v) T# n: I0 b: G
9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg + ~1 R5 J( i$ [# t) x* J8 \9 g$ C
2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1
+ {0 Z% Y$ A0 r
这个时候,就可以查看到上传的key
8 k' j/ f% w7 y- n$ J; Froot@node6:~# nova keypair-list- A  t$ T3 [- e( B, B3 i9 f
+------+-------------------------------------------------+
1 Z1 D. e9 s" I9 Z. v  a| Name |                   Fingerprint                   |0 B8 ~5 ^6 `0 g! E' T% v- x, N8 d
+------+-------------------------------------------------+/ t1 Z: c( w; w# S. m( u' e! l% [
| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |
2 S' P, h' t& ^  t' w+------+-------------------------------------------------+* M9 g; w& V1 D  @
4:开始创建虚拟机
, b% A1 [$ E% E* k8 _ 查看image list9 ]. l8 H3 u+ I$ o0 q' l4 b7 _
nova image-list
8 ]  B4 Q& C# }1 B! E  k4 X- U, s5 U
查看flavor-list
" s( M% ], @6 H. V9 e* A: \+ A) K9 Y* x, C2 [1 H
nova flavor-list
; q1 l3 [5 g# s" z创建虚拟机* k: X, v0 h$ R! n9 r  w
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
, [5 ?7 l2 }% x/ l看图有真相
. e# V7 L! Z3 N; w( I5 X 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg
% M+ w- U2 S, w  q$ R7 E$ D3 w4 ?6 x! z 查看一下创建的虚拟机

: i/ P7 B7 `# M nova show superfrobnicator
1 \+ f2 O5 j# `2 W6 Y 61dd66ec54e736d1a27346b39b504fc2d4626979.jpg ; F+ ^! N9 x* H: J8 _# v
2 @9 o' u  J9 |8 W" a+ ]
ssh 访问VM9 ~! m4 A5 E& J

- `: C# j1 s; X2 L' q0 }& c3 a  K打开防火墙
6 C8 t4 a9 m. e7 T' r$ {nova secgroup-add-rule default tcp 22 22 0.0.0.0/06 W) e3 Y( n, a/ i4 j, ~
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
4 a8 Y1 A8 K/ V' @这个时候,就可以直接ssh到虚拟机上。
/ S  G% |, Q& W9 C& T. \9 vssh -i .ssh/id_rsa ubuntu@192.168.22.35
# Y7 y1 V& X) ?这样就可以登录服务器。; X2 ]- o4 h; |" A0 y$ r( {
Floating IP访问( a$ |- o2 |7 i7 d7 y7 p
如果希望访问floating IP
0 t3 W# C$ }+ v3 P% z申请floating IP9 K' Z# m% T' B0 _9 J
nova floating-ip-create9 q; ^! C8 r% G: o+ [- K
关联vm
# N& p8 q% b; y' N: ~# nova add-floating-ip superfrobnicator 10.42.0.36. o; ], d4 b6 H9 d: k

- R+ E+ y7 ]  G' p5 B# ` 查看虚拟机3 ]# i7 x8 R) u9 L. J* r
nova show superfrobnicator
3 X  a# A# A/ Y4 X5 e1 V7 c9 wssh访问虚拟机
0 i8 S' N, }! h  i$ Z" @ssh -i .ssh/id_rsa ubuntu@10.42.0.36# b2 x( f3 Y2 p- b0 b) c
查看安全组和规则. g0 E9 Y6 @( A) i
# nova secgroup-list$ n9 a7 u) X$ o) v& O' Q) u$ E* X
# nova secgroup-list-rules default8 c- f" D* X6 f  d
看图4 L6 a. J& f$ H# o4 s
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg 7 T4 Q% {( D* Y" A) d5 A

3 M, _8 p% I& f: K* n, I看看结果
5 g8 n! T9 M4 I0 }% o; h" T: D 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg
8 o9 g0 r5 r; p: R1 t" j0 {/ Lssh访问vm
7 ^6 F+ H5 K( d, \
' @2 D" @7 W0 A1 _+ B$ L
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
+ f( F1 N8 B0 W& R& t: Y* B. J# [% N# u  Q% j" I4 J/ j; h, O. v
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg
/ K( Z: Q* h$ H- J7 q6 `1 O2 k0 |" R
有用的命令+ [% E1 ^9 j1 T/ U, K  e1 x
查看keypair
( d* o& ?4 V( E9 X6 Z; Nnova keypair-list2 P  {  ?. {& m/ A
删除keypair
' E& K/ d3 A* e5 _0 Mnova keypair-delete
2 P0 t) f( x; e$ @% m  @, F/ k6 S查看vm. w- Y: v  f# w2 n/ w2 T: s
nova list) \" j9 H! u- E
删除vm,vm的ID3 e1 h0 _+ v1 {- o9 `$ d
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343
( ]: x$ }# N  y9 a' k- X4 c9 _5 T4 o9 [$ T( @7 Y5 F
. i! g5 k; p) k% S# b9 ~) q0 z, }9 A
七:安装和配置Dashbaord) |  L0 L; z* J: U7 S2 n
1:安装dashbaord5 K. _& Z; N0 @( e$ P
apt-get install libapache2-mod-wsgi openstack-dashboard
- f. H9 n" k0 ]
  ^0 k- u0 f: u6 G# \. t5 E. I. t+ v) {! z. b5 p! |
这个时候,你就可以登录dashboard
4 q% q; L0 s& Y/ u- d6 \http://10.42.0.6
( h1 a: M& H* \- B/ Suser:admin
/ V) |: F# ~6 L7 p6 i) zpass:hastexo
: k# d: c& t4 Y& w( j5 g# F* Q* _0 T, i! P
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg - k! n, ~2 z7 p& c9 d" ]" @/ U/ u- t
5 T, d" _$ R5 R
6982e5198618367ab223fa612e738bd4b21ce53c.jpg . a! }( z. h: b- Q# I

8 ?9 w4 Z2 G, U3 T! ]/ ?; s! P, m
) D# |6 Y2 V1 X) N2 R, S- a- F: J
5:理解project和user关系
! c) X% z5 k9 H; ~; v上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。8 |( q- ^  E: j8 D% g. _
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
$ R( _5 T4 U* W; e" k. f我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行. Y' F# ?  V2 Y- R
6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg 7 s$ f6 B6 ]. D$ }
$ |9 A4 j7 A; ?/ [5 C- c; U
八:euca2ools 工作0 }( C  V! x5 u  N
euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。
% q* s, X0 w1 `/ `/ B8 K1:安装euca2ools工具
9 J4 X9 T( ?7 {. U; c, j* X' [; bapt-get install -y euca2ools- S0 C. q" m) V/ B% Z8 P
2:设置环境变量
& k; M1 G1 v, Q7 Uexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
/ G8 Y7 O+ a% n% bexport CREDS=$(keystone ec2-credentials-create)6 P9 L0 b. N0 E+ Q$ K
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
3 e9 W0 p& [2 Z4 zexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
& Q# l% P  G9 H6 \7 \3:运行命令1 r$ ?& V) G" V
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list
9 C9 H/ ^0 i/ I$ p5 }' S现在Essex对Euca的工具支持应该比Diablo好很多。
) r% g# k- s( o, l 96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg
' {3 R9 m% }- _: t; L9 K列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances
5 y% \/ z; F( @2 a. W  e4 q: b
4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg
& a+ g$ T9 ^' u+ G- W" }
6 O. p. u/ G1 U* P" K% y& E- R4 o) z# s4 g
+ {/ ]4 h% p7 w) X) p
Appendix A:  使用nova-volume
3 N: K& T7 k& B7 M9 AEssex Dashboard可以管理nova-volume。有两种办法来实现4 ~7 J$ {$ ]. w8 M) V# P3 U
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。. k( T) Q5 }% @' i- F5 g$ W( x, U
4 Y2 s: R! W! S: k' s
1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,+ l% C$ m7 p: I' Z! m2 O9 m
新建一个文件来做 LVM:$ Q/ ?0 h# J( X% d3 a3 l
DD一个设备  }" T$ c) O4 Z
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0! A% L7 w. h* D' a: L# z
加载一个设备
) e0 Q; ]/ L9 X: H# losetup -f nova-volumes.img* s6 G) P, [3 K
查看加载情况
  }0 u9 Y+ [8 V. ^# i2 u# losetup -a
/ K6 s! `! b4 B( M7 S+ v/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)6 U' m* o/ x4 D) z  \
创建一个nova-volume的卷
# s: z+ E6 l# G: [' M# vgcreate nova-volumes /dev/loop0  e) @, i2 a% d  T4 _# ?, |8 q
  No physical volume label read from /dev/loop0
5 X4 u$ B) O& `4 g0 n% g  Physical volume "/dev/loop0" successfully created
$ r7 P9 N; e/ c) T6 ~7 A  Volume group "nova-volumes" successfully created0 m: m$ O5 X& P' k" E* }# E3 z
查看卷7 P% \1 V2 v, x% S
#vgdisplay
7 F8 y0 j' b; w: `6 Q, b* t就可以看到创建好的nova-volume。
" T; T8 y$ [5 I2 O  h7 Y! o创建一个5G的卷,名字为volume1
3 G7 r& @: ?* onova volume-create --display_name "volume1" 5- Y, }) u) }+ q  `5 f2 _* c
创建完后,可以
7 J7 m& q) K$ e& V2 V2 unova volume-list
  x% z3 Q% _6 | 08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
4 e3 j* a+ k7 L' \7 J

' E) S8 V! A+ m" w创建的过程非常慢,看status完成后,才能attach。( e8 a0 N, Q' N
如果希望删除创建的volume,目前我知道的就只能通过
% n5 q) ~  R& [- x2 Y' A8 i3 Z2 deuca-describe-volumes8 ?8 z) S( t- V% Q+ |+ @8 q
euca-delete-volume vol-000000014 D3 R! N0 O5 e1 y6 U
( ]' g- x. L. ]" l" w0 t7 g
把卷添加给虚拟机,1,表示ID号
* j% O1 J+ h8 Vnova volume-attach superfrobnicator 1 /dev/vdb
/ m7 q3 ?+ F+ l5 p  {& q% i# J' l- m; ~7 g7 B
2:单独一块盘
$ |* N) l* Y9 P9 p. B( [" Q( g5 k # pvcreate /dev/sdb1! B/ ?5 U" L5 n" O3 `) s3 D8 R, u' a
# pvdisplay
  D9 v- D$ K" N: }1 @#vgcreate nova-volumes /dev/sdb1+ d5 B& l' m0 w& K
# vgdisplay
, e# Y: `! {: Q5 T0 C+ H8 }这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。/ U( l5 ]8 p! z/ A

0 k8 u9 A" `( r2 d9 J9 ^: z) D9 k! d4 }3 q4 i& M5 l
参考下面文档/ W$ z1 Z0 V  }1 B0 d  I1 y
http://www.vpsee.com/2011/09/openstack-nova-storage-management/4 v- M! V8 ?, \+ F6 X! r
http://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html
) o- V# ]* j  y$ {5 z' w7 \. Alvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html
  X$ w- X( S; K1 p& D0 j- y0 z7 Y: y: ^, m& @
: x7 ]" R( R# Z5 q

% E5 S9 g- ^4 z; b
" K2 c5 m, H2 P2 l" s+ |
0 P. I) V7 ]! O1 ~8 e  w9 OAppendix C: Dashboard 创建vm,允许ping,ssh登录3 q, t9 `" u! w& j0 F3 T! e* W
对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
, h2 a3 w6 ~  W( Z) `  x' S" g/ M不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。/ y; C0 [6 y4 |1 f- v' T
从ubuntu下载的image,只能用密钥登录,不能用密码登录。/ n5 b: A# _$ e9 B. V1 x6 C# d
1:设置安全组 Security group
) z( w8 y# W  X安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
3 J/ j2 o# P) i6 `, n. O8 U# o2 q6 M为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。
" v, X$ w" ?: }3 H( d/ J默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
4 B& z6 ?  T- u% S6 `" |6 b 9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg
% }6 s6 R* e( o& i1 S
: Y% D: j6 j/ n$ [$ s6 X& G

# ~/ e' y& Y* O# I& e9 B/ A3 C  Y2 O+ |: r  [7 G4 B* z/ t; n4 h
2:创建密钥: b4 M$ H! p  Y
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。2 F- ]$ N8 I% c! M" F* P) a
这个时候,你如果有私钥,就可以直接登录。: }& ~8 ]1 a& q* ~3 b* w
8 Q! R9 j1 ~+ C0 o! d3 i7 \) \
1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
/ H( ^1 u/ I# w& ]5 T& ]( E下载私钥
0 ]( l2 }2 Y+ I- Z/ ?( E点击create keypair,就会提示你下载私钥。私钥是pem后缀。( W2 U. t# G7 O* z2 a' L
7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg
0 V7 m2 z; P  w% F; A3 F. s2 s' q5 X1 Y8 H& P; l9 P$ k/ X% T
4 r. K; B  b! ]4 G4 n! i! k
那么你就参考这个文档,就可以。
% k2 ]' t5 j4 m- ~5 E3:创建vm4 T: u1 ]8 g/ C
创建vm的时候,你会选择keypair,安全组。
0 K! y; Y5 r5 g 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg
+ T( z9 D% y  |3 z
& [6 N) T2 Z) j6 Q, S( T& @2 p

$ c* g1 P$ l% {) \, k4 x 46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
6 _3 b2 P" |3 {0 g9 i8 M
( ?. i# |; \4 E: l, x% g$ x创建完成后,得到其实是一个内网规定IP
4 X0 E+ m! F3 a9 V e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg
, S2 z/ R" ^# Y9 W4 l  r- t

& a5 v4 l; s1 ?: _3 Z6 J4:floating IP
; Y8 `) q# K- H0 e' l给虚拟机分配一个 floating IP,可以理解成是公网的IP
+ t" }' C+ ~! H( L$ X; L: V4 U 8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg / `5 G  V4 Z/ V+ I7 i4 f
分配完

6 i. S3 i( Q) I& S& Y 60d25790f603738df2568f99b31bb051f919ec45.jpg . Z5 j. G6 {! f& Z! ]
关联vm
3 F9 m7 t" ]* V/ m- R9 @. p, E
af15baefce1b9d161e8719daf3deb48f8d546419.jpg
0 h' h4 ]$ @+ n$ v  t

1 {4 t' i2 B6 H  Q
- w! @. T! `& ?4 G# k* q) b3 z  v$ F8 x% s
看看结果* H! k- B# m8 S4 J. _! I7 s
3c0efa1190ef76c647bf78909d16fdfaae516774.jpg
: s# L( Y8 ?6 R& [! g
  r# E% V2 g3 g
5:ssh 访问vm) ]9 t+ \7 r8 y
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。
& Q9 j7 Y: X" ?& W  h对于ubuntu提供的image,ssh的用户名是:ubuntu,/ m2 C' `& j$ p. o5 a% A+ u
SecureCRT 6.x版本
% @4 E6 O& Y' V对于6.x版本,已经可以直接使用pem后缀的密钥' l7 d2 X% b- t/ [, d
$ A& ]' T5 x% c8 ?
e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg
5 H% x; N* _5 P0 X3 m8 n# {
  U8 A3 u6 @9 {& d: z; F
putty登录4 w) o( t' a9 G! x3 ]2 l
对于putty,需要对密钥进行转换。
4 z8 e& {" B6 W( ohttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html+ e  B9 ~7 ^; R- d/ E! k* M: S
到官方网站下载:PuTTYgen这个工具6 i4 U& G9 A* P' {
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以3 z% l; c2 L* Y  n7 |
67da7663053a03280d33fa5f.jpg , ?' M4 B6 [; t' V9 F# J4 D

1 c$ t$ m' L( q存放到本地。' B. @8 v4 J1 ~8 n
设置putty使用密钥
+ A& m$ T3 o( K' f# Q9 C 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg
8 ?7 \5 W* B1 f; l8 u# C

5 T" D" ]; o" u8 h4 e( s1 W0 {( i4 I, ? d520caca7bcb0a4664b806826b63f6246960afc3.jpg
, R; w- {$ |% V6 ~' T0 X" A2 G
+ a9 A! Y5 ?% R4 C! R+ g% G+ ]  y$ C
7 H0 C4 W6 I( _/ |4 \; n3 G" y
linux客户端ssh登录vm
  l9 n# v5 l$ }, ~6 J! @, }" h如果你是linux服务器上,你可以上传密钥到服务器上& ~/ x% n- y7 d5 k
ssh -i key_for_openstack.pem ubuntu@192.168.22.34
: P/ l- o5 s- l3 {+ [就可以直接登录虚拟机。- M# }* [7 q! I2 M0 w
( s! O: t+ o4 A( }, |  W7 ?
) S' w- o$ D; \7 Y% ^6 `8 t4 _1 Q4 R
Appendix D:FAQ
; r3 c8 g+ u9 O# S2 y  C9 F3 W1:我登录服务器后,命令都无法运行
) j: q) ~1 g6 f9 |. p) s& e~# nova image-list
# N9 ?4 K6 g  D% {6 D' ?ERROR: You must provide a username via either --os_username or env[OS_USERNAME]$ D/ e+ V8 L3 I7 j5 ]! O
- O- _" {5 ]' n
如何解决。

1 k( W! _# Y, }. |3 M这个问题,其实还是你的环境变量导致的。6 q+ [6 D8 T# H: ?
export OS_TENANT_NAME=admin/ q) J- k+ p! L
export OS_USERNAME=admin: E) v7 ?# u+ P6 @" B$ h6 `
export OS_PASSWORD=hastexo! Z3 \* ?' p) V3 H; l
export OS_AUTH_URL="http://localhost:5000/v2.0/"# H' N( \5 T9 _  i  `* I: c
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')" h( l1 @+ t* }4 f
export CREDS=$(keystone ec2-credentials-create)6 i* k5 {9 V% E; l% `: z: [3 Q
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')' t' W3 }: `6 k3 Y
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。
7 h" n! Y7 }) @2 t/ h如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。
+ ?7 S2 q; a: y- k* p5 Ohttp://bbs.chinaunix.net/thread-1958386-1-1.html; r( W& R5 F: T+ g7 i2 k9 H8 u# ~

' o2 t1 F8 x0 j. Qroot@node6:~# nova image-list
& }$ q4 X- X$ @; s  j2 a9 t7 A0 ]+--------------------------------------+-----------------------------+--------+--------+
: y' B9 L# z: e" R|                  ID                  |             Name            | Status | Server |
0 T. L/ e0 ?8 ~8 W+--------------------------------------+-----------------------------+--------+--------+2 s9 R- [  r  _# f1 _: L
| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |
$ n4 {% S# a9 x+--------------------------------------+-----------------------------+--------+--------+/ H7 V( C  E5 Y$ A# A
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg # ~8 F& ]- E% f. @8 e. v

# q/ o. j& Q# S/ H  n) d" W& `) G9 B 2:如何用curl去测试keystone1 z" ~! r8 X6 @" f$ V: R
替换红色部分,就可以了0 P3 C7 U6 i8 m8 S5 M: y
# 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.tool0 d! M$ X) o: `8 ]

7 o1 g# E. [3 y# V6 h' d. A6 ~+ O  W/ K
5 g: L' ?9 b& g! w3 G4 e博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb
! B; u) ]' |- P
% g+ O. D4 ~+ i" T" H5 J
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:5 j8 u2 X  _- b3 F
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
/ w; A4 D1 p6 M: G1 t: I
  T- Q: T! X" p解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。
7 |7 Q5 b* i6 g, S: L9 w3 m           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
# u2 r& m7 M( Z) v6 H2 Q注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
$ L0 l: y# @; w0 Aexport OS_TENANT_NAME=admin8 `: J# E2 H& r3 Z0 D
export OS_USERNAME=admin: Y0 F# z6 o' `! X( i# S. ?
export OS_PASSWORD=hastexo
) x" e7 K$ d; b7 y# N7 uexport OS_AUTH_URL="http://localhost:5000/v2.0/"1 U5 i" t( K' R0 p
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')) U' w" b* y7 t+ |/ i8 ~
export CREDS=$(keystone ec2-credentials-create)
2 i3 n- \4 U1 k7 Z0 i( zexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }'): g, x, b( _4 @9 v1 j
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')6 ]5 J; n5 K+ Y4 L3 W
3 s* Q% V! E1 q6 N  G
现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑   o% T! N" f& ?' H5 f9 _

1 e4 x& }5 ~! a" y/ b( ~SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:5 o" Q6 S5 B# X- z5 ~% ~

6 k6 H  S; i0 @* R# fSSH Secure Shell Client工具密钥登录linux:& V* @5 z- z/ p9 b: U5 K
4 d' I8 }( d& {4 T* T' M
http://server.chinabyte.com/365/8835865.shtml
- J2 r- k9 S2 W8 a& h1 C, O  n4 B* W$ O  {

6 J% H4 n- ~9 }& L8 R; n  T2 V9 XSSH Secure Shell Client用public key认证登录
& U. O4 I3 `1 i' \) ?8 Phttp://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html9 @. o% j6 w! f2 y$ O

4 |) f6 x0 e: c$ X" c由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:( m8 q* Z* v' @9 X1 Y, Z

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

8 w% H9 I8 q: |" P8 O
& c5 z- Q) m7 @% s没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。
- Y' _* w$ X/ g% i) t, W1 y! R0 Evi /etc/ssh/sshd_config+ i; h2 t, {2 ~* `1 F
将PasswordAuthentication no改为yes" D7 ?' r5 X( t4 j  m
service ssh restart4 G$ m+ M# T: ?- ^
& D/ ~; v# a7 l% ~0 o- e5 f
这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。# i( v) c# O! V& S, H& r6 z
安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版1 |6 Y( g! R8 R$ l& Q4 J
( y+ X6 V; Y' K$ U# c
虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题- p) L$ X2 o$ T! {8 }8 l
+ [8 m5 U: r$ }# a8 ~6 G6 w4 a
1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
# ]' e0 l, Q7 a) I8 T0 f' {* evcpu.hotadd = "TRUE"" c' j  \$ Q' U5 A3 Q
变更为
' }7 X8 ~: n% f5 P' R  Evcpu.hotadd = "FALSE"2 C* D$ o  x3 O( W% E) c1 [. B
重新启动机器,如果执行命令:
: A$ c6 I* ^# j$ Pvirsh
! Q' O/ r) N4 q, I9 I2 Y: z% `进入控制台就没有问题了。
, c+ H; h  Y( r: Q2. 修改nova配置文件/etc/nova/nova.conf
" P! X* [' k; E+ m6 Y4 Z4 n( M#--libvirt_type=kvm
% S+ Y( _) _, i* ^: B5 Y" p/ z更改为qemu
. B$ y1 L. O. {  f1 d; j--libvirt_type=qemu
8 i- j2 p8 G) q# k& E% O# `- k7 C3. 修改/etc/nova/nova-compute.conf
3 f/ P$ D, ~9 G0 }8 l--libvirt_type=qemu
; y3 M, y  b+ v- n4. 重新启动nova-compute,如果libvirt报错  I5 p) N6 }) V2 n
/var/log/libvirt/libvirtd.log
  }5 [1 G" ?9 r6 G# V" [# _' |/ dCannot find 'pm-is-supported' in path: No such file or directory
& i5 ?9 ]/ f8 K( z报错后需要安装
7 g( B# a$ ^* capt-get install pm-utils7 ?/ i7 r0 A5 z7 ?$ E
5. 重启libvirt和nova-compute就可以了# I* o8 d0 c' B3 Y- y
service libvirt-bin restart
6 G6 |0 K' {& }; p' ]0 E+ ]- P# xservice nova-compute restart/ E" h  {2 O1 Y' C- q0 G
, a: e, `" P. g8 [, g7 R
6. 执行 nova-manage service list7 l' `6 j( q$ F4 n" K
state都是笑脸的话,恭喜你,搞定了:->
# e  F. h% X3 D1 n. E
0 p5 ?; c. R! W6 V( K感谢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人群已满)

返回顶部