锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑 2 D4 B. x* p1 g/ s
, p3 Z, S" w: ]# e" b+ e$ N
之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。
! k$ m4 G. h* t7 r8 N3 B5 d4 |1 {: S6 ]) `% d2 u% o
原文如下:
' |3 b" W+ W( h2 w8 w& p7 `: w* ?$ q4 B7 N. u+ E
Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex) v' }% k; }( n6 G
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。
- G- c* N8 u2 r( F5 ?原文9 u, c8 d  B5 P( _
我下面的步骤,也就全部参考原文。
% V8 `' d6 D7 g- V% s& m- d3月27日更新:基本完成文档内容" O! J2 f0 `. V5 F0 S2 R. r
4月5日更新:重新安装第三次,修改了文档一下小错误。
! T: Q: l5 ]& O9 P- k7 a# Q: h4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖
# V9 ~7 A7 ~+ R0 t5 }$ i4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
, y, I. @' j: v, z* _4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。8 p* a; \3 s0 m/ Q0 L8 e
4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。# ^# @6 u9 t6 t( i; H$ R
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。+ a- }5 t* S$ C
5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。
4 F1 z0 v  S- b8 `5 u" N4 Y5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。. K$ b2 [+ ~) t1 b

8 F0 F2 P5 e! W* r( w硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。- t9 g5 X" i* \
下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。7 S' l4 v0 c$ ]6 K1 k' E2 m
为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
$ g3 k% o8 h9 E9 s# F) p; K目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。
9 x7 j1 R4 d2 X9 S8 x: K) t
9 Q. Z+ D7 }4 R/ k# e- |% R一:准备系统
7 t  M* {" w7 f, @. L+ f1:下载ubuntu 12.04. 服务器版本) X# G, B( I, o+ ?
ubuntu12.04正式版本,需要4月26号发布,目前是beta24 r( Y; i" Y1 \  @
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso1 B# {; e5 L- T8 B% Z
5 ~/ O0 D+ Y( b+ j& ?/ E
2:安装OS7 r* ]5 y8 W- y# v0 s) o4 W: y2 C
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。) g' X* ]. P$ D8 h
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。
/ u+ X9 N% o! |& ?4 U/ M2 d1 f装完系统后。, e4 C: y) p$ S; k
apt-get update( s* {( s! l- e5 }7 K5 a
apt-get upgrade
( m) w' }; q# T8 @* P更新源里的包,更新系统。确保你装的是最新版本的包。/ K" g2 p# o  p6 L3 p) Z7 [/ F, n) P

$ m' W' Y$ [1 q) I$ A3 z. g* z; S6 g* K3:设置root权限
! B" e6 y8 K1 E% R0 J为了简单,全部都是用root来运行。2 f+ b1 T# x3 ^; m1 _
sudo passwd" J2 K6 n1 n* Z# t# h7 p& B/ Q  X7 T2 Z
就可以给root设置一个密码。直接用root运行。
6 d' e, u1 J# x  w0 A! ~' n4:设置网络
2 y! V/ f+ i3 v, p我的网络设置和文档是完全一样。这样也减少错误的几率。% T+ p( h- H9 H3 X* m
root@node6:~# cat /etc/network/interfaces $ `' ]/ S" N. ?! M; f
# This file describes the network interfaces available on your system6 p& @& Q. ]3 ~
# and how to activate them. For more information, see interfaces(5).6 r7 c3 }$ U2 \; K
% g3 i, @# g7 A
# The loopback network interface0 F/ c) |; O7 \7 Z4 B0 `" y9 b
auto lo
( n9 N; B' u8 ]  Iiface lo inet loopback
4 g  ~. L, Y  h% X* V* G9 z. g$ I; w- U: [
# The primary network interface4 v8 f  m# r; y3 }. H1 c
auto eth01 C. O& [7 l4 i, q
iface eth0 inet static8 M+ Y3 d$ L( |+ |- F* ]" d
        address 10.42.0.6
) H+ Y! ^. G3 K# k' O        netmask 255.255.255.0# h* V/ x# Y$ X' x. _; O& v, m$ O
        network 10.42.0.0) ?  ?: }2 b0 N
        broadcast 10.42.0.255
* U$ }+ r( Q6 k. W" \        gateway 10.42.0.1
% `8 Q; O# G+ \. O9 C# `        # dns-* options are implemented by the resolvconf package, if installed
+ C& Z, s$ W, U1 h        dns-nameservers 114.114.114.114
- q+ C: o- @3 T# ]        dns-search test.com
$ ]$ Z' o8 }. I& H2 B/ j2 J8 G( F' b4 ]% A* [
auto eth1
0 T" {+ ?  ^" f. r9 n" ciface eth1 inet static' M6 p2 r6 ], ~; ^
address 192.168.22.1% j8 T" O' g! u& r! f/ J
network 192.168.22.0; y4 @+ Q& e6 |( b- |, b
netmask 255.255.255.0: P1 c3 X! \" {& D" s& g
broadcast 192.168.22.255
( v+ ]+ O9 E) I* n+ ?1 S* r( S# T! J( S6 F5 u! O/ e
重启网络,让修改生效1 b6 P/ l' @- z  j5 ]$ g
/etc/init.d/networking restart
; u2 D$ x- G. {& J# D0 e5:安装bridge
0 T' w- ]4 ?; R/ Q& _apt-get install bridge-utils) c; O% u8 u0 ]% i' U
重启网络或者重启一下机器都可以- y2 ?" I% o/ J5 A+ a3 ^
/etc/init.d/networking restart$ e+ Y9 {/ ^' O" J+ _5 t$ M
6:设置NTP: |5 }3 `- u  A) N
apt-get install ntp
6 h' l# n& R. L1 d. |: _9 C& H) C; ]  S* y- @
编辑 /etc/ntp.conf 在末尾添加下面3行
' p  L5 h( U3 U- v" B& b" B& @5 N4 Q' Q/ E7 k8 k% @
server ntp.ubuntu.com iburst
% ?* N: ~6 l' l8 jserver 127.127.1.0
- `7 u5 R; ?5 Q5 l* |  v  w2 Y+ i* tfudge 127.127.1.0 stratum 10) A9 V, X# a; Z4 A" V; |, d& j

( ?2 h3 c% Y; N5 w7 w重启服务- ~& _; \, f) E% K
service ntp restart
" v9 }5 o- _; C3 n& c, Q7:设置Iscsi+ _' ~  N  x" ~; q$ Y$ F
apt-get install tgt' e& ^. z1 |5 D; E
重启服务
; X# U2 M  q( F2 ~. A4 q* k: X  v' z( M9 Eservice tgt start1 r6 P) {/ t9 k' ^. _
安装iscsi客户端
$ T# a/ x0 o* `. Kapt-get install open-iscsi open-iscsi-utils( n" L$ F. {1 v
8:安装rabbitmq
. Y" ^- \  z% capt-get install rabbitmq-server memcached python-memcache
; a$ v5 {6 t+ H! K) z2 d( K& }apt-get install kvm libvirt-bin4 r( `' r. \- s! m* I7 w
1 s; Y1 G: k8 j1 W: W
二:安装mysql和创建相关数据库6 I/ I0 k2 x6 f& U  E
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。, q: i  T4 F, q7 l
1:安装mysql
$ ^0 Q' X+ W- U过程中,会提示你输入root密码。( y' M5 U  O$ Y6 D2 G, _
apt-get install -y mysql-server python-mysqldb
- y# {7 m' }3 v. V; X- d5 {让mysql支持外部访问" w' G) B$ K7 Z+ ]* l* c; p
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  1 h# Z& j: O# M9 S; q. v
重启服务% `% P3 I) S2 D/ F$ s" i) }9 d  Q
service mysql restart' ?) c2 ]4 e5 Y) c
2:安装phpmyadmin (可选). I& O. [5 l3 Q4 z! f
为了方便,可以把phpmyadmin装上,可以比较方便管理数据库
2 s# d( R7 ^9 D$ Sapt-get install phpmyadmin
+ O5 N& n- T2 s# l/ U安装的时候,第一个提示是让你输入root的密码。
( l4 M9 A5 P7 E7 F  Y3:创建数据库
7 U( ~1 p5 W+ {# C1 c& Rnova数据库,   管理员:novadbadmin,密码是:dieD9Mie& g' `' M3 R, x. p" O+ [
glance数据库,管理员:glancedbadmin,密码是:ohC3teiv: |8 f/ ?! C, g9 r9 `) c; C
如果你修改密码,后面很多配置都需要相应更改。+ e/ Z3 ^  S& o, [1 a. S
mysql -uroot -p' V! S6 y% f; J+ p5 ~; A
CREATE DATABASE nova;
1 t. H4 g* f" S6 m5 MGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';3 f1 M. J$ B9 X0 q3 F& P
CREATE DATABASE glance;" K; m7 s. x) u( ]% r
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
* Z, G0 N- z% b5 f6 W* ]quit
0 ?1 B# B9 E5 s5 f. F, d$ b# r/ E, f
" I) r8 [6 A" j4 x
三:安装和配置keystone
( @8 \: ?2 X! y) ~  \, }Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。
6 s0 H" ]& O7 l. `1 {" O7 @1:安装keystone* {: j6 X! Q4 D
apt-get install keystone python-keystone python-keystoneclient4 s0 J. N# k: K6 ^, t
2:配置keystone- n. T, M6 u6 D3 D
需要修改 /etc/keystone/keystone.conf 两个地方
4 s& G3 T, Y* {) m7 i; M默认定义的token就是ADMIN,我使用hastexo作为token
; a: f: x& o5 l% n* m5 J. X7 H) S# Y8 v! Z. Y( d: A
[DEFAULT]
# O8 j5 V4 b) c' n2 q" b+ @bind_host = 0.0.0.0
1 S% ?! H% {4 J$ |* ]5 m6 opublic_port = 5000
7 M" o3 P' s1 l# i& Q; ]. d1 t- Gadmin_port = 35357
$ g  E' c3 g' R; }& w6 W) g9 F6 Z#admin_token = ADMIN; a/ o  ]; t1 d; ~6 ]( `6 ?
admin_token =hastexo另外一个地方是
8 s' N# o8 m$ N[catalog]
: M/ [, f+ J: R/ N- g, N$ W6 ^8 I: i#driver = keystone.catalog.backends.sql.Catalog' }7 Z" D& b% S0 Z
driver = keystone.catalog.backends.templated.TemplatedCatalog0 n1 ]% Y4 w. v9 c( o; y
template_file = /etc/keystone/default_catalog.templates
( U! _) X  D/ l$ t$ Q( u, |
' R( f: v- k' C重启服务
+ l8 z9 b: V  j4 Q9 D! E  b8 V2 D# aservice keystone restart
3 K6 y/ A/ L# f% ?. E3: 导入数据
: A* ]+ n4 [1 V这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。& t/ o4 }/ H6 J1 D8 M" A1 A7 Z
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt( p$ t2 f2 u, A5 B; r! }% Q0 l
下载脚本( x# |' ]# A& e* Y
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt1 X& {  w$ n. l
mv keystone_data.sh_.txt keystone_data.sh
: H2 H) {/ h$ D( `/ P$ I
2 g5 ^0 F+ _- t  ]让脚本可运行
6 \( E. }, X6 jchmod +x keystone_data.sh
2 P0 K+ |5 p. f9 u7 Y& Z运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方2 l- B) z, g7 Y/ N& o: U
第一个是登录dashboard的admin的密码
/ f8 P, S% z3 {7 b0 \! b第二个就是keystone的token1 n" L+ r0 m3 l# n3 o% z+ u* \$ C
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
! W( b# J! }/ M% KADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}7 l' U( ^! I; i; I9 h6 c
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}+ _7 N* t& h  n# `, p- b5 }; L& L
#export SERVICE_TOKEN="hastexo"4 I* J' ~/ f0 R8 f
export SERVICE_TOKEN="Centrin"" N7 i. N- S& v5 S% `  q
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
1 O$ W. E" W, {+ E$ E: ISERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}4 H' B5 ^. F4 n
- o+ y6 q' p, d: B% |8 m
8 \& z, b: S2 Q+ I, O8 T
./keystone_data.sh9 A( Q7 R- {8 R  G7 Q4 h( s
顺利运行,会什么都没有输出
* t- s9 @/ a  N) V3 n' M
) u& N. A" L" W

keystone_data.sh 脚本

keystone_data.sh 脚本
% o+ b- ~- Z! }3 g4 M9 I
6 V0 @: t# ]- N; X: h

2 }- U) ?0 i, R* B# s" i" G/ k#echo $?* k( F7 |: O: Z, ]  H( {
下面会输出0 ,表示正常。你就别再运行脚本8 Y' d& J: [4 [( T
keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
% L7 j" _# ~6 T6 [$ z看到这些,就说明keystone安装正常。
1 Y/ D3 E% N* T  [- T
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin( U9 e9 G+ p/ @( I/ j
export OS_USERNAME=admin: `, f* F+ E9 n: \
export OS_PASSWORD=hastexo9 |# i/ K$ f) `" ^3 l% I1 W
export OS_AUTH_URL="http://localhost:5000/v2.0/"5 F3 [1 f* l; L. R. @
检查检查' n3 A' @1 ]. @& ]
# export | grep OS_% F( Q" I9 `8 n5 @% S9 C5 G
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
- l. A& a, W5 E, edeclare -x OS_PASSWORD="hastexo"# ~8 I5 K- b; K( I" r8 A
declare -x OS_TENANT_NAME="admin"2 L0 c' O. ~% g* j6 A9 H
declare -x OS_USERNAME="admin"
3 s, [: X0 g9 D6 z9 _' E这个时候,直接运行5 S( n% k& x+ B+ H& g# T% z7 z
root@node6:~# keystone user-list
4 A3 L" f. j0 s- ^  Y* x+----------------------------------+---------+--------------------+--------+
4 c' y) a& t  M5 V|                id                | enabled |       email        |  name  |: t( c6 B9 m, T
+----------------------------------+---------+--------------------+--------+
. w7 q7 _2 Y3 Y4 V+ q4 k| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |
: @% i# X9 K" i* T| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |; q1 l7 W: t$ X5 R2 I
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |
3 w) r' y( \% B. M% C" S| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |' M7 v. B# l6 |
+----------------------------------+---------+--------------------+--------+% a+ Y9 f8 S6 _! M+ n& G* o

( m) Y# O) Y  q. s3 q2 F1 N1 s: r$ s: q: }

0 F, y( \# W% L- o四:安装和配置glance" t6 Z  H* ~! x
1:安装软件; p) I3 j9 @& E5 z& Q& O
apt-get install glance glance-api glance-client glance-common glance-registry python-glance  a1 _' Y3 x% x. {( L5 m3 m/ Q
2:配置/etc/glance/glance-api-paste.ini
) j5 R" j  @- ^% H修改文件最后3行,这些设置都是keystone导入数据的时候设置的。, E9 `% l1 n* j& f3 W2 Z
admin_tenant_name = %SERVICE_TENANT_NAME%
" y. G1 |0 q( A" ~7 c/ g6 h1 @$ Nadmin_user = %SERVICE_USER%
+ W% P* v& t3 t% c( S+ u3 oadmin_password = %SERVICE_PASSWORD%改成$ Z7 N/ o/ q% c$ b$ W
admin_tenant_name = admin
0 U( k0 |0 [& U9 w. A) \! Radmin_user = admin
6 v$ ]3 }( C* _! \: g$ wadmin_password = hastexo
( W# M+ w( C9 M
! S" i' `2 T5 [1 X" b; G& \3:设置 /etc/glance/glance-registry-paste.ini7 a& N: [: q, d
也是修改文件最后3行,和上面是一样的。
1 f- A" K5 y1 v1 p9 ]admin_tenant_name = %SERVICE_TENANT_NAME%
+ X1 T; s0 ]) `& a- T2 v: Oadmin_user = %SERVICE_USER%
2 t# i0 o0 R* Aadmin_password = %SERVICE_PASSWORD%8 {9 `* v7 x- k7 G9 E# Z8 C
改成  t% K4 g( j$ I& a( C: n5 e
admin_tenant_name = admin8 F7 G8 v# i5 U
admin_user = admin
6 u5 d( O; i. d4 h! y0 r+ Nadmin_password = hastexo# }- Q7 s$ C! A+ ^' i
4:配置/etc/glance/glance-registry.conf
* V! N% v! P7 I修改$ R( N2 e' {& [& R1 ~1 L6 c& j
#sql_connection = sqlite:////var/lib/glance/glance.sqlite: ?& l& P. Q* I0 U4 |+ n, b
sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance
6 _+ a) c; ~) s7 [6 J: v# t, c
/ \5 `  e6 _" S5 Q3 ^; t$ t+ l$ ?: p9 q6 g- E" l5 @" r3 @7 R8 W$ k
在末尾添加两行3 {& k! a) Q% K8 `1 |; N' B
[paste_deploy]
2 U: h# v! z6 y+ R' @' l# Zflavor = keystone
% m$ f1 s1 |: Z, f; I# [/ ^

; B- _+ `9 d: B3 S# |$ }: q" a/ F5 a7 C5:配置/etc/glance/glance-api.conf
" F' f2 n+ k( ^: K1 t在末尾添加两行
( ?* J9 c6 y! N3 ^9 N; ~[paste_deploy]9 d% @+ m. ^9 q0 g% c4 ^3 X
flavor = keystone

! [8 e$ s* R2 k& g& ^% R' V( }
& Z, O" }; g7 f$ e6:同步数据库
( E! O* N# J6 B% n9 O6 A目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。0 e  P& }' v  I' p% H
# glance-manage version_control 0
. R& ?& d% U$ M0 H3 E/ d# glance-manage db_sync         
, L! a* M& k) _4 E+ p6 X/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., P, k8 z/ }# G
  useexisting=True)+ t9 G/ {9 h1 k: @
重启服务
9 V( r& u* I1 L# service glance-api restart && service glance-registry restart
$ D+ W# ]* I# X* @$ A8 J% wglance-api stop/waiting
' p9 `* F9 d% t: ^glance-api start/running, process 13321
. ^8 T8 V* U- V7 c/ astop: Unknown instance:
$ F1 ?8 p9 _* e1 V' fglance-registry start/running, process 13327, @8 Y7 B; V0 Z2 E" ~6 b8 Z/ n

- ]7 v- E( ]- O- u% D6 I7 K- B4 X) h: o8 v/ e' Y
7:验证glance服务是否正常
8 d" _& s8 K' C! l下面的步骤照做就可以,具体原理可以看英文
6 b6 V* j& M" R, U. [$ K$ Kexport OS_TENANT_NAME=admin7 u; E0 @8 w/ P; K  W0 D0 L6 |
export OS_USERNAME=admin, ?* t* b- ~* `. \/ w
export OS_PASSWORD=hastexo& n) q+ \4 |' w, q. J8 _7 H+ g
export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查5 ~( j# ]1 Q6 E7 D& ], X3 B* q8 Q
# export | grep OS_
8 R0 v8 C7 C* w3 Jdeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"- v2 v( b' U' Y( n- t3 J
declare -x OS_PASSWORD="hastexo"
( Z; }8 h& s" fdeclare -x OS_TENANT_NAME="admin"
" ?5 F% V3 w3 _1 D, Q2 S; I: ?declare -x OS_USERNAME="admin", q9 w, E8 r4 t# s4 |6 d7 o
运行) T+ D  r5 X: ~
glance index
; O3 y& l2 F5 O7 l: ~5 ~" B没有任何的输出。表示正常。) l) ]# I8 ]( o9 I  {1 f0 H" Z
#echo $?7 Q8 H! K5 h& o6 e" {
下面会输出0 ,表示正常。
% q4 d3 b& A* v, c: A& ]3 ]# glance --version
9 h7 L4 A9 u4 W6 t4 x( hglance 2012.1
; {% g! x; ~9 F3 t% E8:下载镜像并上传
' A+ h/ S- w6 E# j3 ?4 E3 oubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意2 y. g6 o0 U$ N
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。
: l, x: ]. X& N, k下载镜像+ m; F: x1 g6 w  t& H5 _7 M: S3 I8 ^
http://cloud-images.ubuntu.com/precise/current/
# [0 E  u! _3 s2 n' W* w4 U* d这应该是ubuntu提供的最新的稳定的镜像。
' I2 @$ c& P) pwget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img
; W! i) `4 X1 R$ p上传镜像, y# |# U# o4 l* p
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img
6 r$ K* T$ J# U, `3 k$ `这里还有一种方法上传,如果你没用环境变量。
. ~' F/ w2 Z. L6 m3 ?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.img2 I" w/ J! b' j9 v3 n$ Z- N
上传完镜像后。在运行
0 R; L$ {8 t1 m! ^4 Qglance index
2 W8 _5 M' ]$ x# W或者' p* H4 P8 J$ ^3 F  e5 w5 O
glance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index+ z# s' s+ ~/ S$ y* z8 c9 d  ~
就可以看到上传的image。( t3 b$ C2 G/ {
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg
$ }" j! l2 g$ C0 F6 s# i- i& B五:安装配置nova
1 B+ g* N1 D+ M/ Q( h$ y' e1:安装nova相关组件
- D4 h$ ]( W; a4 J4 _! M- ?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+ D3 b5 h) V4 }; b7 u5 d
2:配置 /etc/nova/nova.conf
" h5 f' x9 W+ R/ y2 Z把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,
( I0 t, Q8 o: E: U* w+ \如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。
/ i$ m, G  q- P2 p- t2 R- kroot@node6:~# cat /etc/nova/nova.conf$ I$ x7 w2 s2 e% ?' Z' ?
--dhcpbridge_flagfile=/etc/nova/nova.conf$ D9 M1 m8 R" @% u. `, h
--dhcpbridge=/usr/bin/nova-dhcpbridge1 @! C' b# h: S2 @
--logdir=/var/log/nova
$ `5 V$ [: r5 `: [* O$ }$ ~# J--state_path=/var/lib/nova* u! _3 y4 K; U) L: o8 z
--lock_path=/var/lock/nova% Z0 o; K5 ]' d0 R7 L3 N+ q* `- y% r
--allow_admin_api=true9 h) ~& y- x' e9 Y9 ~% K( n5 F1 r
--use_deprecated_auth=false* k  C# b# q/ u0 W0 m! }4 l* K4 d$ s
--auth_strategy=keystone
/ K, M( `0 F4 i$ M--scheduler_driver=nova.scheduler.simple.SimpleScheduler
1 v$ P% I% c  o' `2 z2 ?--s3_host=10.42.0.6
/ H( t9 v1 r8 G$ v--ec2_host=10.42.0.6( `7 [8 J/ ?# O% z% }; x
--rabbit_host=10.42.0.6( y5 o2 j6 [8 W% _7 R! s! W  y6 a/ I
--cc_host=10.42.0.68 n  |: M/ w  u2 F% `* E$ T4 d% H
--nova_url=http://10.42.0.6:8774/v1.1/1 i2 @- b8 G9 J
--routing_source_ip=10.42.0.6' ?+ ^9 p. ~$ r" {, [; t
--glance_api_servers=10.42.0.6:9292# q# S- ^8 w3 Z, p+ n: l4 s
--image_service=nova.image.glance.GlanceImageService) ~9 Q3 T7 P) Z; r0 v* [& s" `
--iscsi_ip_prefix=192.168.22! f( j$ e4 R. ?' O& J
--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova2 g3 T7 q4 V; V5 F  e" n
--ec2_url=http://10.42.0.6:8773/services/Cloud
1 e8 P7 u9 _! |--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens
5 A2 i# x# _- ~) z6 [--api_paste_config=/etc/nova/api-paste.ini) K7 f( |; T  x/ ^* u/ B3 `3 c
--libvirt_type=kvm/ O& b+ |" G& z- V
#--libvirt_type=qemu
' G" p% y, X& o: Q" A* A--libvirt_use_virtio_for_bridges=true# E6 T% W$ y! h" c( k: l
--start_guests_on_host_boot=true3 E. I6 M. b9 b  |$ l2 e% a
--resume_guests_state_on_host_boot=true7 Y- j, X4 E. u/ ~

( K/ G+ ^/ a7 D" i0 Z3 e/ Y8 E#novnc
! P# M3 j5 d" e  T--novnc_enabled=true2 k  F  A6 h# F/ H
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
; C! c7 }; G7 T: V' a) E, g--vncserver_proxyclient_address=127.0.0.1& e3 U' S  v+ D- D7 \
--vncserver_listen=127.0.0.1
( p3 @# n! g/ p1 S0 o4 Q0 @3 p4 `  F' O( v
# network specific settings7 C  @6 `; K0 m) ~) M

5 I" h2 h! c- L+ F) u--network_manager=nova.network.manager.FlatDHCPManager' u* |) K9 O/ U& {7 F2 H
--public_interface=eth0
+ ?) c2 H  R0 \: X) o* c--flat_interface=eth1
/ \% ?! v' o. O0 }--flat_network_bridge=br1000 Z" ]1 S* t; S+ v
--fixed_range=192.168.22.32/270 ^+ N8 z1 K$ \4 r- [, j! ^
--floating_range=10.42.0.32/27 1 C# Z% ]* m. A2 ~0 \/ j
--network_size=32
4 ]) F5 F8 Y0 o9 I! O; ]5 y--flat_network_dhcp_start=192.168.22.33
6 {; n% ~9 R3 k$ l1 H--flat_injected=False. }, Z6 z" l2 z. b- ?) U
--force_dhcp_release
6 ^1 I6 I% K9 r" w9 n+ c--iscsi_helper=tgtadm
$ a) X7 X* [8 ^$ O% V: A--connection_type=libvirt
7 t% W+ e. A" n  b--root_helper=sudo nova-rootwrap
2 D7 s1 y4 @4 P$ j- F* `6 m$ ?#--verbose
9 P( b$ o3 \  u  ~1 ?4 }--verbose=False
2 s" Q3 y: ]# v5 r- r

0 c2 Y( S1 u  l) S* C; g" x, R3:配置/etc/nova/api-paste.ini0 L9 m3 {4 R3 V/ p6 Z( D% n
也是修改文件最后3行,
7 L/ P* \, R( k2 u7 f" {admin_tenant_name = %SERVICE_TENANT_NAME%6 c" m/ }% V. D* G! s9 X/ F6 ]$ \* p
admin_user = %SERVICE_USER%
, P: p8 O, J  Dadmin_password = %SERVICE_PASSWORD%
0 Z5 R3 ^* j4 ~改成
4 n! t1 D# B0 f% Yadmin_tenant_name = admin
" t+ B* _& C7 B- K7 S7 [admin_user = admin
: `& R8 i& Z* P! D2 r" Dadmin_password = hastexo. s* t; Z8 `6 r0 A% I4 [! D
4:停止和重启nova相关服务( ?* U" e" I" e8 k: B0 E
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
! W1 R' S9 a: ~& _  S' r2 \" c" R+ [8 M4 @8 C; g5 \" J; [
5:同步数据库, w0 K1 B6 g+ Q/ Q5 a7 t
以前我运行同步数据库,如果正确, 当nova.conf* D* b$ Y" N4 l
--verbose=False, K  ?0 }" w7 S5 X7 T9 Z' ^1 c* T
是没有任何的输出,否则有一堆是输出。
; }" H! ]6 K4 I2 ^/ ]# j9 Y$ lnova-manage db sync' \# B0 n  v8 ]
' f" d5 g7 J0 |
d386ae19ebc4b74515d430adcffc1e178b821518.jpg
3 Y5 p' a- }' u3 O. G: A5 z9 E2 q6 |. I, N1 l6 E: v% N
创建网络$ N! w; t9 D3 B  o- 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
2 ]6 |7 h: E6 v* U
d3a81f087bf40ad11f734058572c11dfabeccece.jpg ) _4 I7 j8 W' v2 [2 v# Z3 b
设定floating IP
7 u/ m* z% S# hnova-manage floating create --ip_range=10.42.0.32/27
- @) c, J5 S5 Z5 I+ Z
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
! h, p2 S7 m& J* p  p8 L设置权限2 p1 O2 y- H3 A! q- w+ X
chown -R nova:nova /etc/nova0 F7 V. T; B4 F- v) K( L
再重启相关服务
$ U0 X+ }; j3 D8 t. Y) Dfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
' z4 L6 A; A( T
$ }/ A& G  B9 T+ J$ |' ?4 L6:检查nova服务
, t4 k# ~/ d# {$ ^) hnova list
. L# P+ b( L: \1 e: |nova image-list
& Q$ b7 Z" h0 J! h5 onova floating-ip-create
4 g0 S8 @! f* e7 s: w( f1 a( t! U1 V7 f( q- @
3f1e66899e510fb330aef02cd933c895d0430c2d.jpg
8 v7 C# R8 u, U六:创建第一个VM+ v+ A9 f5 P  V0 a2 z) r" }
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。0 {4 @+ B) U# u6 s+ {
1: 创建密钥
& z! o8 \) w* E) \# ssh-keygen
- B6 V' q5 l0 G6 p. |+ m( [  [一路回车,就可以了。
' a$ C" }! D2 _# Y# Z8 C% P 9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg
( |) k2 u! G9 ~/ F& M2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1

% f. {: |: {' \6 k6 F这个时候,就可以查看到上传的key
& u; J8 }8 e: }' S; v! D) D+ i. croot@node6:~# nova keypair-list
0 y6 V) w) N4 Y. E7 S+------+-------------------------------------------------+, U9 ?$ F! B, v: N+ A7 Z/ q
| Name |                   Fingerprint                   |
' O, V6 k& C7 x, ?0 P+ c5 ]+------+-------------------------------------------------+
9 f. I5 p6 G- D. C| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |0 i. V" o0 ]; n5 W: M1 `, Z
+------+-------------------------------------------------+
/ W5 p. N7 ?' i6 r# D4:开始创建虚拟机
3 v( r2 F9 M) [5 t 查看image list
; u3 ]4 J6 V, ^/ cnova image-list1 V; p+ [2 ]$ q& t
0 ?# \$ x* K& |% F/ q6 a
查看flavor-list
6 M; f+ O) E' z4 r; C4 o$ p. }/ V7 n. @* ~9 X6 a0 T7 l, g4 t
nova flavor-list6 x" |- E6 y6 j5 _: w. C
创建虚拟机3 ]/ s3 t, o6 q% _2 [
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
# h# ]3 u: n% B0 E4 h$ k# O- ]  a看图有真相5 Z: H5 K' [$ h3 w
6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg
/ L3 {* @3 c; t 查看一下创建的虚拟机
& [3 b: C- F6 c/ s
nova show superfrobnicator
) a+ w8 z  Q% W% t* H2 K 61dd66ec54e736d1a27346b39b504fc2d4626979.jpg 5 O, C7 n" A+ v- U2 G$ V
* t7 q; d& @/ ]  x  E
ssh 访问VM) `- e) @% M% K- j( M  }  [- n7 B! T) Y

: B# E" U9 V: k) ]5 H打开防火墙" l& R- y3 G) L& \$ S) V) v
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
( b- [  q$ k+ R# X$ ?nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0# w9 \/ ~: l( O
这个时候,就可以直接ssh到虚拟机上。
. v% |0 M' E3 Essh -i .ssh/id_rsa ubuntu@192.168.22.35- K3 \+ h* I) B' d4 O5 g$ F) l
这样就可以登录服务器。# M3 R( y  ^0 B& E! T- Z
Floating IP访问- Q$ s7 [6 J0 H$ n8 s$ N
如果希望访问floating IP
" z, p: C4 D  @+ j% E申请floating IP
. s) ], L9 I, R' |nova floating-ip-create
+ [3 X  P" U7 [4 @& Q/ y5 _关联vm
9 [7 [7 _( w0 m  c# nova add-floating-ip superfrobnicator 10.42.0.36
; `9 u  }. }: W6 V/ q3 _, g$ I1 n  B! F
查看虚拟机+ S7 H8 K# i2 J6 r2 S" O( n
nova show superfrobnicator
0 s# `# M+ _- Y" O9 @ssh访问虚拟机  p. I/ Y/ h$ B2 _1 x
ssh -i .ssh/id_rsa ubuntu@10.42.0.36' E$ J! N  {3 ^  z, M' Y4 C
查看安全组和规则$ q2 h" ~" J( ?; P- `
# nova secgroup-list; v  w* N- h4 ^3 B, {6 A& E
# nova secgroup-list-rules default
/ u1 ^6 w* R$ Y$ n8 p  z; t看图
4 o% W9 R1 P9 k- ?+ d+ P# j! \/ } ef00c839b6003af371e5f5dc352ac65c1138b606.jpg
) u: P2 ?- R7 j, z
& p& Q" l4 G. r! V: Y) }
看看结果
/ z: ]% H! c# d5 R 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg
5 W- T" c4 M+ D9 j! f$ ~) Jssh访问vm) F3 P2 k9 \; G$ w' P4 `. O
4 n* Q3 D$ E( W
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
, a$ X. e' a+ A! ^- T
! d% K% e3 E/ x5 I6 p
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg
: g- t' K5 l$ ~1 V4 K, O# X! X, n' a( _* z) q: N5 I: |& P) A
有用的命令
1 E9 w% l" w" k* A4 l4 }& m2 J查看keypair
6 y' }# {7 C/ L) v  Cnova keypair-list
7 G( Y& t8 u; Y3 }, U删除keypair- C* J. n% \4 a- i* ?
nova keypair-delete! D5 F9 q! o: }, M
查看vm' w! Q& [8 D( Z( O' s
nova list% Y% i" J/ X; m: o. D$ B
删除vm,vm的ID
. k+ e2 A0 H  E& d+ k# Y; g# ?  b5 tnova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343. c" j  |3 |  k" p; _7 ?

0 {, u% s  K( `) t1 q: `! {2 ?6 R8 @6 m. p" X# C
七:安装和配置Dashbaord
7 B- S: Q, ?4 v3 q, B% a 1:安装dashbaord
. \% v0 D( b: t) Napt-get install libapache2-mod-wsgi openstack-dashboard
; s" J$ M. E% g, S8 [6 v- ^9 R2 B8 `7 J3 g6 x! i% ?) P

5 M+ j, `) T8 N8 \这个时候,你就可以登录dashboard
( q9 E' @$ z3 q, V5 w- `http://10.42.0.6! X  T" u; P$ i) b% Q3 M8 T
user:admin- Q; F) Z) B& b5 j' f3 v
pass:hastexo2 q1 t3 A" M- S  m1 t
* H2 e8 }  \0 `! t2 `7 g; t% s# c
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg : n) I9 u: a4 c( Q9 i: i( p, p# n4 v
4 ^" G$ c3 J+ b
6982e5198618367ab223fa612e738bd4b21ce53c.jpg
- U( ?8 C+ C1 w$ h
% ~. Z& t: x. T! P% M

: x; q3 D1 M/ y& W
4 U- s0 E6 J8 k2 I4 p5:理解project和user关系
2 M7 @/ e( J7 w上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。0 U" P0 e8 C7 v5 q) U
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
9 u9 y. Z1 y8 M# j6 n2 K- U7 f我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行
# x0 F4 c8 G  j 6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg 7 f- \+ s4 y* m2 ]( o& {8 X
% _- e6 |9 P2 ~- M, J% G
八:euca2ools 工作8 F0 u& x0 J4 ~8 z& N
euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。
' ]8 l9 n% `9 ]; g* Y1 B7 F1:安装euca2ools工具
* ~1 T& ^  v# Mapt-get install -y euca2ools1 {. B5 I1 [' m! d; r
2:设置环境变量
+ C8 h4 ^4 ^! c4 R& Q+ U7 f5 W5 [export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')& c+ l$ R& d9 [! U) x
export CREDS=$(keystone ec2-credentials-create)5 k% O9 [4 E! v' S# m
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
$ [5 n/ ]1 _# s7 oexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')$ R! k& u0 U) W( k6 v
3:运行命令3 N1 K: _/ W' Z) B9 {9 b
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list1 x) a6 _& E) q6 A3 A# w4 T  \! u6 p2 m
现在Essex对Euca的工具支持应该比Diablo好很多。
$ h1 o- j8 H' A$ A! \ 96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg
8 F3 V$ r: p8 H! h列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances

3 O1 ^2 B- v  ~, e$ f1 Z! w% O! ` 4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg # I8 s$ I9 c3 c: g

! ?' c) d% r- V* _; W& B% R  P4 V: I6 ^9 q! o2 ^
Appendix A:  使用nova-volume 1 X7 U' a' L0 ^+ i! l/ I9 l9 X( s3 x
Essex Dashboard可以管理nova-volume。有两种办法来实现- h/ n4 v' D- D
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。" m# R* I2 B5 \# e: E( d* B

$ ]* K& f/ ]$ x" W  c, K. Q1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,
; ?3 b0 f7 f1 Y3 \8 U新建一个文件来做 LVM:6 V" m& g4 d. s  q
DD一个设备% q+ H7 ~" x3 j7 A2 ~& v9 V5 C
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0+ ?  c$ R6 h& w+ V6 C
加载一个设备
( H3 [) k  z7 j3 h' ~* O# losetup -f nova-volumes.img
8 \- ^1 c9 \4 Q  G: q查看加载情况4 y, Y) R; m# G1 u/ R8 l4 d% o
# losetup -a
* R* K9 N; Z% d: p8 \+ u5 f/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)0 u7 e$ H' T3 Q5 K
创建一个nova-volume的卷
. a) T( X. d2 `, w% G# vgcreate nova-volumes /dev/loop0
' j8 L( R7 G5 f. l- _0 e  No physical volume label read from /dev/loop04 b, B2 V+ f& H  P7 r; ^3 ]
  Physical volume "/dev/loop0" successfully created
+ S+ T1 V: ?: R, W  Volume group "nova-volumes" successfully created; j" w( N+ S0 Q; R; K) v
查看卷
2 t% H) T. h# u/ f9 t* p) D#vgdisplay* Q# f6 f* C, k, c0 N% f
就可以看到创建好的nova-volume。) p1 O+ N+ B7 c2 J
创建一个5G的卷,名字为volume1
2 ]$ ^* `* o4 H# G- pnova volume-create --display_name "volume1" 5: }3 `& F$ b% M1 O' J( _' m0 q
创建完后,可以* j$ |0 k. c+ Q: s- [% S* v
nova volume-list  T, u1 y$ I- `/ ^2 R( [5 ^, E
08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
# C; s) [- n. Y8 N  q# g
+ F4 r* h& e( E" J
创建的过程非常慢,看status完成后,才能attach。$ ]: i# E; \. K. h* h
如果希望删除创建的volume,目前我知道的就只能通过
7 ~( n2 c, A5 J  k1 [euca-describe-volumes. O# j) r: B( t6 y7 k( q/ W4 ]
euca-delete-volume vol-00000001. J, |" g3 T$ c1 B2 e. J5 |& ?
) `- q8 w) ?" C8 w& K" a& n
把卷添加给虚拟机,1,表示ID号* u' c  Y( H; E, I( V4 r9 F" K
nova volume-attach superfrobnicator 1 /dev/vdb
1 k9 L/ X+ j: e/ f7 Q
& n) W6 m) X( m8 a0 n1 `4 u5 k7 g 2:单独一块盘
8 h5 b) o% G: t2 m7 T: ] # pvcreate /dev/sdb1
% t; H: U* O3 b# pvdisplay& z. Z/ q) x0 \, O4 c! Q
#vgcreate nova-volumes /dev/sdb10 W4 |, c8 T* F
# vgdisplay' s6 a: u8 ^' i
这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。
% |( b2 p/ d- H9 U6 ~* L. j8 [8 U
  l: H0 l& N4 Q. r3 n/ a. q
参考下面文档
' R8 Z) Y& u* w2 e2 @) ohttp://www.vpsee.com/2011/09/openstack-nova-storage-management/+ b5 O) P7 \# w. r$ K2 B. X" g4 c
http://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html
7 v1 }2 R$ {( r7 l2 o9 Ilvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html
3 _; K- S! ^( b, }9 r5 w0 {2 G. L. a0 A3 ^* k/ j, p
/ V* p: ]+ f1 Q5 Z2 B
" n, f; k8 d4 t( O0 g
9 R4 ?. M, ~6 _! S, O, b% b8 B
! G+ ^6 W8 E1 ?# d
Appendix C: Dashboard 创建vm,允许ping,ssh登录
' [0 @) \$ N* G! e/ _对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
4 O9 f2 \0 i8 b0 _! l8 W不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。
9 D% j! S- D9 K: d从ubuntu下载的image,只能用密钥登录,不能用密码登录。+ E+ T- q+ p" V  k  W1 C* q
1:设置安全组 Security group9 b  w- K! d2 B$ e1 v5 L7 h
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
& o+ I+ ^: S2 Z0 b为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。4 Z7 f3 J4 f5 l) a
默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。4 p" x; c! r2 G2 @# c! @6 @3 O: u
9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg
. I. W. M% |3 k' K

; C: z6 D% h  b. r# y0 N9 m
5 ~- w0 E6 ^  g' X, [! Q* v- g0 d! r2 v5 P. G* \4 Y
2:创建密钥4 _2 I4 `+ i( C
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。) ]- `$ O/ U3 f5 M7 V' V
这个时候,你如果有私钥,就可以直接登录。* _9 O/ G( ]8 Y9 s
9 i7 g( G: d2 V2 N: L
1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
' L4 d: l. p* i) ]. a/ r下载私钥
8 O5 p8 J2 e* b+ @" K, y点击create keypair,就会提示你下载私钥。私钥是pem后缀。" ~$ S1 n$ @  W
7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg
2 Q, H; ^; @( E. k& t
" i% _- x! j0 P. a7 M- Z% d$ |' |7 G* o- T
那么你就参考这个文档,就可以。
4 H- {8 @. p3 s1 y, T) X3:创建vm
4 ?# [/ J8 M1 \/ M0 c2 m$ c  F! N/ d创建vm的时候,你会选择keypair,安全组。
, ^" k+ v& l1 E0 \+ V9 z) |( } 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg ( N0 J4 X# ?) O

2 @0 j& O5 A8 j) z" @9 E1 f+ F5 W5 G5 R! A& P! q# Q" K
46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg 0 @7 R5 i& Z8 f

2 d) t: q2 F2 k创建完成后,得到其实是一个内网规定IP8 y% C' e' j" ^0 A
e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg
# i: F! G0 B( l: ?5 g- i
3 h4 R3 _5 l* u7 T/ J
4:floating IP! o  d0 o; L6 K" F1 Y$ x9 I
给虚拟机分配一个 floating IP,可以理解成是公网的IP9 S" \! y) T5 U- a0 m" Z4 ^
8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg 5 ~( J7 J* F% q& y# s- F
分配完
+ ]. y: ~: I# [; \' g
60d25790f603738df2568f99b31bb051f919ec45.jpg + j& G5 L. ~/ u; R# y7 R& S; `
关联vm

8 |4 _4 q& e; ~5 b) | af15baefce1b9d161e8719daf3deb48f8d546419.jpg 0 k) }% q! D  V3 J( n% p  h8 n

/ ?2 H) V3 C- W5 g+ {1 P7 ?
/ h+ r' ~& k1 N3 j
) R5 r, q( m' W# m. m 看看结果: z' o. k8 b0 K4 F0 A
3c0efa1190ef76c647bf78909d16fdfaae516774.jpg
* z% \" c$ J  e1 l
* P/ c1 D+ \3 a
5:ssh 访问vm2 m4 ~" \/ t% d) v% _  y
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。  R5 N4 O2 }! V# N  w6 A* L
对于ubuntu提供的image,ssh的用户名是:ubuntu,( h. k& ]2 I" @! x0 k
SecureCRT 6.x版本
+ s5 c( S! d, l3 I  _' H对于6.x版本,已经可以直接使用pem后缀的密钥
% z5 Q7 _; p* P" T
/ s; k9 [! d1 f" c" L3 G, A$ |; u. N- s e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg
. B& r5 l8 b3 b+ q

0 \2 M" G- g: E! {: yputty登录# a. O$ y6 \6 X& N. f
对于putty,需要对密钥进行转换。
' M6 S0 l! E9 Ohttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
) |% D) F* N$ e( k1 h到官方网站下载:PuTTYgen这个工具/ |2 i& A7 m8 J; k
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以
, R/ L" u/ C# w3 Z* y; a  i 67da7663053a03280d33fa5f.jpg " d, e. M, V3 M' A- b' a/ Y9 w

0 G2 h; a1 I) W存放到本地。
  @+ [! S6 O* J0 {. P设置putty使用密钥
# W% d' z% X, b; |( p 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg 3 t: q. M5 E1 f) L9 Z3 i

: v7 l) x  a* V6 @9 T+ \! w d520caca7bcb0a4664b806826b63f6246960afc3.jpg
4 l  J6 G+ G' _! a! w/ Y
# ]2 T& _) b! S9 s/ {" [
" l1 ^" X7 _$ z1 f% Y
linux客户端ssh登录vm
  ]" Z, ]4 _* X1 E如果你是linux服务器上,你可以上传密钥到服务器上
. ~+ L& s7 n8 ?  G: d, c8 F2 {ssh -i key_for_openstack.pem ubuntu@192.168.22.34
0 Q, \. D$ C. l& @) k7 \7 `就可以直接登录虚拟机。
0 k- q% i& e& O% r$ t( x, X% V, M
- B9 V# {! \7 Q  F1 _5 V" e, u! z8 [5 \: x/ Z3 V  b" [# V  N: _6 m
Appendix D:FAQ
& t& k9 C; a* ^! `1:我登录服务器后,命令都无法运行
8 Y3 o  r! Q7 a, _~# nova image-list
2 J( T- x- M. x& G# @- nERROR: You must provide a username via either --os_username or env[OS_USERNAME]: t  o- F/ C* O* R8 o

9 m0 u2 O. r: h' h; J9 u如何解决。

) ^" |4 e% }7 ^! ?- N* r& I8 w这个问题,其实还是你的环境变量导致的。+ c- `# z. ]1 w
export OS_TENANT_NAME=admin
* U, t" o3 A# f, n$ v: F& h' jexport OS_USERNAME=admin; Y2 c/ U1 }6 D2 K
export OS_PASSWORD=hastexo
' f8 m8 }8 x3 a( B$ @" iexport OS_AUTH_URL="http://localhost:5000/v2.0/"
$ L( G& K0 O6 M3 {0 v* {export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
) V  }! c& y4 s  O$ @& c1 w( dexport CREDS=$(keystone ec2-credentials-create)
. y1 T# p% ?! G. l6 ~export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
" d; l/ \: W/ g, s5 |% d. texport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。
4 F6 |7 N8 I9 W# y# ?6 m% ]如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。+ e7 r) ?  H5 X
http://bbs.chinaunix.net/thread-1958386-1-1.html
) |2 g4 [; q. W0 _! l2 _
) E3 X  {, x, ]1 ]7 f1 Y' S$ proot@node6:~# nova image-list
* L* r5 V1 L2 _: ?2 l+ e: R+--------------------------------------+-----------------------------+--------+--------+5 H8 r! D8 X5 D. t' N: `" a
|                  ID                  |             Name            | Status | Server |
6 l& D- z5 E0 n! w+--------------------------------------+-----------------------------+--------+--------+
2 L4 q4 f" p3 ]* p" a3 Z| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |) r/ O& p( p% c1 P8 k
+--------------------------------------+-----------------------------+--------+--------+
9 [/ ^7 i; g; ~& [0 _
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg 8 {' b3 K& m3 u9 ]( r

  ^  t4 P; F/ l$ @7 i6 v3 B 2:如何用curl去测试keystone
& h5 B4 o) N( I替换红色部分,就可以了
0 f0 D! k5 a4 s8 C  j# i# 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( Y% \8 n* s" d9 l

  p7 F1 G* I1 c1 C, W/ {) V8 e+ f6 s5 R* o* A2 `) z
博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb
: ]: o: J1 p" j* w5 f/ t9 t( h
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:% e/ @/ {0 Q5 G, [
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
9 s4 H8 D* N/ w6 I
2 G! P  l) q/ p( g6 _解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。# \, ^* j8 ~7 ?/ F8 I
           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
0 h3 v0 o2 F" p. y3 _2 P0 T. a1 `注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:! j' y' X9 C, }2 W+ h4 C& g
export OS_TENANT_NAME=admin
( d: z! R! e# z3 S5 g( v4 bexport OS_USERNAME=admin8 s. E# e( i3 I- @
export OS_PASSWORD=hastexo
) p/ x$ ]1 e7 @  U' }export OS_AUTH_URL="http://localhost:5000/v2.0/") S) s, u1 X# H2 P1 H5 s; d
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
! F) b; _/ }0 J3 _- f! R- G) Lexport CREDS=$(keystone ec2-credentials-create)
# e1 {& M" O# x' K: mexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')% |& r( C3 ~# X+ t6 G2 U8 N
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')3 s- l7 h0 ~' [7 I
1 b# e% Y# R/ S4 B( W
现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑
3 p4 i7 T" e7 [& P  N  i2 D8 L7 b7 q$ V5 O3 f! e, G, _' d# q
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:9 i, u$ }2 w6 I& a) P$ k

, k  H! e0 v( W5 u1 tSSH Secure Shell Client工具密钥登录linux:
# O' A/ u0 o/ N# r' g" F2 z& q
5 e/ G& y  ~4 O  T5 ahttp://server.chinabyte.com/365/8835865.shtml
& |. ~/ B! L4 p: ~; k/ p' u
  ~& I3 c0 R) l, S- L& b0 Y- m, m+ V; c3 J
SSH Secure Shell Client用public key认证登录
* G, N! i, V; b0 l, O! I2 Yhttp://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html
+ X- N  q7 k# n( p0 `) V0 K$ i' k2 B4 i) }* y! @
由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:. ]7 Q8 z0 d- Z

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

# Q+ E9 |. P) T3 D  e+ z% P" i
5 P. h/ \7 t( O. s3 [没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。* p+ U5 f1 T' {" [3 G, e& B
vi /etc/ssh/sshd_config" m; s5 q7 _" U( F1 j6 n1 _
将PasswordAuthentication no改为yes
! z. l3 q  b& P0 v0 B, i- Qservice ssh restart
* j% h' H" s. x7 W0 L+ j, C& l- X5 m: g" C( ?, x, ]
这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。  N  l6 |- h0 u, R# }
安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版; Y2 k) A/ g- w6 y
- U5 b5 n  H% T
虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题1 r5 L& ^0 R5 h
; C4 x. u. Z2 _% i
1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
: q  X1 H$ ]. T/ G- ]vcpu.hotadd = "TRUE"7 N$ H% J1 b3 s$ K) p
变更为! M3 M, M9 J7 D3 |7 F9 |
vcpu.hotadd = "FALSE"
" r) P  b3 o7 X重新启动机器,如果执行命令: / h4 H/ S' m+ w' f* Q9 w
virsh
2 k2 O* y) G% E; e* y进入控制台就没有问题了。& ~& t  b4 u2 h0 i
2. 修改nova配置文件/etc/nova/nova.conf7 ^9 [4 G; a$ p' A( d
#--libvirt_type=kvm
- N4 ^$ R9 h5 i; }, P# h; ~4 q, V更改为qemu" _, x: d  G2 A( V. r, }$ I- l. Q$ i
--libvirt_type=qemu
5 B$ A, h; @  L0 c3. 修改/etc/nova/nova-compute.conf
1 X& B' m! l1 ~, Q--libvirt_type=qemu( d: ^0 S/ z2 g- \9 [; e
4. 重新启动nova-compute,如果libvirt报错
+ ?: N% C+ U; q0 d/var/log/libvirt/libvirtd.log
2 k2 ?9 {3 N: x# OCannot find 'pm-is-supported' in path: No such file or directory
5 G2 F. U: W+ t" i+ G报错后需要安装: b1 z0 a9 |  s1 O
apt-get install pm-utils3 X4 u. _. F* @9 b. [; I1 D; D
5. 重启libvirt和nova-compute就可以了
2 u. N+ ?% q  P9 U0 T  O/ c/ G5 pservice libvirt-bin restart
* D8 Q$ O* J4 v% i2 p# rservice nova-compute restart
& `/ O5 l& C0 b' S' F4 B( z( R' {5 {$ R& C6 L+ x2 J% X
6. 执行 nova-manage service list4 A6 u9 t+ M5 |3 D6 j
state都是笑脸的话,恭喜你,搞定了:->1 j; ?* p. b0 }9 v5 Q
* U/ _+ H2 U/ i
感谢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人群已满)

返回顶部