锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

在Ubuntu 12.04上安装配置OpenStack Essex

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

' i9 [: o/ x- Z; @, Z原文如下:4 S5 ~$ k6 L* [& g$ x6 t$ Q& p
, M& t: C  [  G7 p& B
Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex
3 N- U% Y/ F9 O4 D; M这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。  G% f4 Z# s& s  ]1 p
原文% w* \0 |; D# x" i* K
我下面的步骤,也就全部参考原文。2 z% q+ D2 }$ j! S6 E7 R6 `$ |  ^, b
3月27日更新:基本完成文档内容7 ^! N; J! ?6 i' N: E+ a
4月5日更新:重新安装第三次,修改了文档一下小错误。) M* H1 E; K( E+ n" H
4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖
* B1 b' i7 g- F& j- y, N4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。6 a% H$ p" H7 G: P+ w
4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。5 ^# U0 R6 [5 M5 H
4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。
- W8 ?+ c; {2 p" i- n4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。. q$ H) e! e! ^
5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。
( _! D) V  r9 Y! c6 ]' X5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。* o% E1 W8 Q& a
( z3 {8 u, y  W. k% U
硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。
5 A1 k+ P& h* I! y6 H" X; K, L; G# W下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
  S) ^/ D7 G2 a0 I$ ^& ~为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。" G7 U+ Z* k+ Q  E- i+ e/ Y# c
目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。
4 ^4 B7 B2 ~% Q. x8 j
8 O9 Z# N- ~/ l5 v" h一:准备系统0 J( w- ~/ y  h9 T
1:下载ubuntu 12.04. 服务器版本
6 q4 ~* P7 }! C& S. iubuntu12.04正式版本,需要4月26号发布,目前是beta2+ ?$ Z7 c! y4 B& }& S6 e
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
9 E; s, g% }) c. W# J' E; Q; s1 o
, i! z; b6 }/ Y2:安装OS+ e: r! A& L+ Z6 U7 f. D7 B% \! P
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。
6 Z: M0 y9 Z& ~- iIP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。3 t8 ~* @& v! l* I
装完系统后。
# W) D2 g& w0 Y# R7 uapt-get update5 `2 M! b$ R$ G0 }( _& q( S3 r
apt-get upgrade+ ~( F  o5 Y/ U& o/ B9 x& m4 Z9 i
更新源里的包,更新系统。确保你装的是最新版本的包。
. A1 M  U& G  R+ W4 ^  I& z
& `( B5 f: o6 ^; p4 L3:设置root权限2 k( G1 G  l2 z/ h# M- ^
为了简单,全部都是用root来运行。
- |0 T2 Y, K/ `, B, Vsudo passwd
2 @. s! a* W; s2 i$ X就可以给root设置一个密码。直接用root运行。: A; e& |% X2 K4 w& k/ L
4:设置网络
: b* N* `2 m, }& ?/ u我的网络设置和文档是完全一样。这样也减少错误的几率。
. d$ O  |2 p# e: E% u) Groot@node6:~# cat /etc/network/interfaces
& Q4 F7 `; w+ J; ^9 a& B( _# This file describes the network interfaces available on your system
+ n! e4 X$ Z; n2 \& o# and how to activate them. For more information, see interfaces(5).
; }# @: Z4 S1 a, ^
. I, t2 B, p) K# D5 ?# The loopback network interface
- C  i7 W, S) yauto lo
, M5 T9 J* U& y. Ziface lo inet loopback' F" M8 p! o; V" [# h' m
- }4 D& `6 Z. g" _2 I  N, d
# The primary network interface" f; t0 @6 f: I4 s8 {8 |
auto eth0
" m  j, e7 ]5 H, S8 Giface eth0 inet static* H! a7 L- x& ]5 \) w1 h
        address 10.42.0.6
$ ?/ [* j$ Z0 x: S        netmask 255.255.255.0
7 s' a/ [6 Q3 Z9 N, n2 ?        network 10.42.0.0
2 I( `% y: K- D% l- y1 Q        broadcast 10.42.0.255; m" K! L1 L( Q
        gateway 10.42.0.1
/ {' t2 ^) F, e9 D8 z; t/ G1 `: D        # dns-* options are implemented by the resolvconf package, if installed
. @4 k* Q' K0 g) W        dns-nameservers 114.114.114.114
8 l) b. j, X7 A4 F/ a        dns-search test.com
/ J  V% y: C5 Z$ `- a  U2 J! K5 ^5 b; D0 f" S
auto eth1
% ^7 R  K$ f% b# }" `' Jiface eth1 inet static
( H, j1 ?$ j0 U$ U0 \. q* q1 Taddress 192.168.22.1
' l7 F; ]1 G. f. X& R0 }& dnetwork 192.168.22.0
' M! _) x/ f5 z# o- t* E5 n" pnetmask 255.255.255.0; x6 g- k/ R* P; f' j
broadcast 192.168.22.255
! _  }; ]* q, Z- j3 \& X7 @# `4 D- A- O; j
重启网络,让修改生效
( M* y! y2 N! N0 F/etc/init.d/networking restart& s/ a, B) t* \
5:安装bridge  e" t( D. A" R3 a; P
apt-get install bridge-utils4 R5 B# c0 G; S
重启网络或者重启一下机器都可以
6 _0 v- c  {* u; j: Q# e/etc/init.d/networking restart
0 G: J1 {) I, o/ m% S) |6:设置NTP" K& ?2 M& v8 Q! k" ~- c: b; e
apt-get install ntp* }& {) b2 r( ~: Y

$ H. n* D9 y2 A+ Q* h: ?/ O% `3 L编辑 /etc/ntp.conf 在末尾添加下面3行
- s% M1 t6 y  M8 r) C1 j. D
: h# Z! b: u' D9 V$ v( B. k, Aserver ntp.ubuntu.com iburst5 A  Y$ e" G: x" a1 T$ {
server 127.127.1.0
  `/ D& \: ?3 k8 Ofudge 127.127.1.0 stratum 10; B' Z; E4 S7 c! h/ R9 b5 _
! }" I* t+ ~+ u3 {) L
重启服务9 Y5 U3 T, a0 s' z
service ntp restart5 k2 a$ ^+ r7 L4 p- s: s& Q
7:设置Iscsi
; I3 W; k4 [/ wapt-get install tgt
' r! @3 M! N& g( k重启服务* A# B+ |$ X. m9 e) C5 ]- ^
service tgt start
8 {) z- R2 h2 k! {: B安装iscsi客户端5 Y  Z* m8 K' B. R& m9 }
apt-get install open-iscsi open-iscsi-utils/ ]# B7 t- ~. b/ M- W" G3 H
8:安装rabbitmq
# M% w, o. P+ I" \6 ~& j8 B7 Kapt-get install rabbitmq-server memcached python-memcache  {% c: V4 G2 r
apt-get install kvm libvirt-bin* I" W0 K* m# k. Q
% ^+ ~5 m# ]  D' U+ v
二:安装mysql和创建相关数据库7 C1 b* y9 G) p8 d4 s$ M( d
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。" B$ t: F/ v3 e/ z
1:安装mysql7 N( U  Y& @' S2 ^) B' [1 k( k
过程中,会提示你输入root密码。
0 j7 ]* l7 T+ K" k6 R2 uapt-get install -y mysql-server python-mysqldb
4 I6 v" g7 x1 ]7 ]2 U: b8 v2 G让mysql支持外部访问
& `: s8 i8 ?8 a/ s* a2 Esed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  
# R" b% |( s$ Q8 `9 P! W3 d重启服务8 _1 n. |. G8 ~; n
service mysql restart
+ c; P( [$ G8 e9 ]$ G1 B1 K& p2:安装phpmyadmin (可选)
5 l, l. g4 M! l/ ?2 m为了方便,可以把phpmyadmin装上,可以比较方便管理数据库
, v* ^0 y' d! s" a# L' Wapt-get install phpmyadmin; A9 h8 e# v$ r" T$ [# p# F
安装的时候,第一个提示是让你输入root的密码。: \8 l0 q+ n( p- K  k- l" ]% @
3:创建数据库4 s( x% b9 g! j
nova数据库,   管理员:novadbadmin,密码是:dieD9Mie$ o: J9 s# W4 |1 @7 l& P; T3 l
glance数据库,管理员:glancedbadmin,密码是:ohC3teiv% ?  a0 ~! m% u7 ]
如果你修改密码,后面很多配置都需要相应更改。& |+ E8 ]* _8 c  R& M
mysql -uroot -p
5 H/ U# O- @! c  n- fCREATE DATABASE nova;
1 T* m/ p" c. J$ _2 u8 j# h! dGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';2 [. k0 A# L( b; X$ z. ^
CREATE DATABASE glance;
( R$ m# w  D& P6 W( W  B/ uGRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
9 Z- [5 X" q" e$ A2 dquit, i" f; M; F1 d/ H, N+ |

. ], |% j6 M6 v" {8 B  A
+ t8 @3 t2 C9 p# \" v2 C$ p- I+ A 三:安装和配置keystone& G3 g0 ?* d5 x/ C) }- n- ~
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。- [+ u2 Z& z# ?3 m
1:安装keystone
. P" {% x3 t  ~# ~apt-get install keystone python-keystone python-keystoneclient
' e$ @( [2 |2 \7 r9 t! ~2:配置keystone. \8 Q% w# r* i6 h8 {. y
需要修改 /etc/keystone/keystone.conf 两个地方; H* Q4 w# G* }' [) t  \
默认定义的token就是ADMIN,我使用hastexo作为token( @7 @# \; H. ]7 j' N8 W

: p' N# ^" a5 `8 w. J[DEFAULT]: f* y- I& @. ^: k
bind_host = 0.0.0.0
6 z) i; M: F' _/ ~1 w9 q+ Q% `public_port = 5000  V6 O( I) y$ h
admin_port = 35357
/ Y) s. `3 J6 q4 \# L8 w#admin_token = ADMIN
9 b' t4 |$ }4 w# r2 u! F9 fadmin_token =hastexo另外一个地方是7 y% t0 g3 [  ~" X+ C
[catalog]" m3 R5 P" ~3 Q3 O  e
#driver = keystone.catalog.backends.sql.Catalog" c- ^9 f4 B  h, W/ M
driver = keystone.catalog.backends.templated.TemplatedCatalog9 v, G) t, N, T* X
template_file = /etc/keystone/default_catalog.templates( I0 j0 u# t0 J2 g

2 r) I% m9 T, v* p重启服务
1 }' g: \+ ?4 F7 Sservice keystone restart
$ q$ h( ^6 t: E* K2 u" g3: 导入数据
# d! T' t! F  }/ j9 p/ ]这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。5 O* `* B% O" N: l3 m# x
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt+ {& o# u+ |# n+ `& [8 @
下载脚本( Y! g" k3 U* J6 Z
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
3 t3 |# K! h# {/ Hmv keystone_data.sh_.txt keystone_data.sh
. v1 A0 j8 u2 W2 ?) ~; v
3 k& [& v, w! }让脚本可运行' J# e9 S* L2 y- {/ }( R
chmod +x keystone_data.sh( v' x% K- a/ J7 A
运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
" r" O( |/ n* B7 p0 D. d) C第一个是登录dashboard的admin的密码
7 w1 O) {; u5 q7 X6 T第二个就是keystone的token$ A/ V$ Z( o! a6 b, F. h
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
+ u/ d% a0 ~/ d3 t& iADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}: M) L% L4 h9 J  W# F' C# ^& B
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}, z6 [7 ]* S4 n
#export SERVICE_TOKEN="hastexo"  ~! K% |, J2 o) C3 O6 o& c
export SERVICE_TOKEN="Centrin": e) O5 f3 b- f1 K+ l( r/ D9 Y
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"& v/ v9 p; x! k6 V
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
) ~3 t8 V# v2 h: v9 O8 ^; L; U! ?% M" |/ L
1 ~  _; O" ~/ O* e- j' `9 ?1 R
./keystone_data.sh! q* L7 H1 F, a+ C, N- }) z' N+ j
顺利运行,会什么都没有输出

0 N% |9 p: T& \1 A! t1 ^
2 v- {5 s" e: N0 W% d  i

keystone_data.sh 脚本

keystone_data.sh 脚本
; @3 z! Q/ g2 K" X, _) _

( M) |$ Y, p) j. a; n) R$ A6 x/ N5 {! h& o) U# t
#echo $?
( W5 s$ r. @4 V1 d. J. O% M: l下面会输出0 ,表示正常。你就别再运行脚本
) X2 y: R3 R3 _. ukeystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list/ \' Z0 N0 C& J: ]: g; S6 W
看到这些,就说明keystone安装正常。
" A3 u. j) Z% Q9 }6 h
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin! V& N+ p0 b% d0 ~
export OS_USERNAME=admin
/ N& Z' W+ ~4 p. Z" v0 o  Sexport OS_PASSWORD=hastexo" v+ h' W7 z9 r* w( v! `: Z
export OS_AUTH_URL="http://localhost:5000/v2.0/"% i7 Q3 E% a4 O- \
检查检查
9 u0 ?  I& u2 d  Z6 m# export | grep OS_7 f) |" X: f0 S5 z0 J# {9 v
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/", p9 u+ G6 y( w
declare -x OS_PASSWORD="hastexo"
7 F9 [6 k8 b( W! g' h0 Z0 M; @, ndeclare -x OS_TENANT_NAME="admin"
1 z1 _' o* z4 _# V5 Z+ _declare -x OS_USERNAME="admin"
  I8 ]9 d2 L0 g' P4 Y这个时候,直接运行
' i% n( L- ?( ^, Zroot@node6:~# keystone user-list' }, K. d( u8 x
+----------------------------------+---------+--------------------+--------+
* M0 Y9 u3 N  X4 k+ N: q  V|                id                | enabled |       email        |  name  |5 L4 J  Z9 Y9 p; e. j/ o3 I
+----------------------------------+---------+--------------------+--------+; U. M. b7 u0 H
| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |: O; B( a* A$ y* N# I
| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |( B3 S  L% d7 P% ]6 }. y! q! Y
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |2 E! P& W9 [; A- i# R$ P) H3 L
| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
: z& M6 u3 V& |1 ?- q0 Q' o+----------------------------------+---------+--------------------+--------+& @' t, I! p' B$ h7 C

- \0 J4 D4 y- L- U& d3 p
% O9 }' P2 _" k  K
5 j  X/ }6 f- I4 V) ?四:安装和配置glance- B4 Q5 g+ s& C+ ]1 Y+ N- v; j
1:安装软件" y2 B( X5 B$ ~. @" V
apt-get install glance glance-api glance-client glance-common glance-registry python-glance
; k; _. `+ p" ~0 a2:配置/etc/glance/glance-api-paste.ini
0 f6 Y3 R. C& @' Q# L+ {" l" O3 r修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
9 ~/ u8 r- k2 Z/ j! G3 @6 n' badmin_tenant_name = %SERVICE_TENANT_NAME%
% R4 ^# R8 K9 D/ }; f2 c7 D$ radmin_user = %SERVICE_USER%$ C% t" }: y+ \( a
admin_password = %SERVICE_PASSWORD%改成- n! r4 I# P: F6 K7 T* W+ N
admin_tenant_name = admin5 {0 [8 n* |8 u3 @
admin_user = admin
; ?# J& ?, J5 i$ uadmin_password = hastexo
/ d  F1 U( D; c  W6 N0 ]6 u  w/ ]: j  ]$ g! h
3:设置 /etc/glance/glance-registry-paste.ini
& @4 P7 c% B9 {也是修改文件最后3行,和上面是一样的。
4 g3 D/ P6 e9 ~admin_tenant_name = %SERVICE_TENANT_NAME%
8 ^% y! C8 `' `$ l% a( x1 wadmin_user = %SERVICE_USER%% s3 n# `7 T1 Y0 }; K$ z# |
admin_password = %SERVICE_PASSWORD%, N: e- y( i; y6 d
改成
8 K! d( P, @* V# y7 H0 radmin_tenant_name = admin
3 {9 P+ q4 c, f. y5 [5 L# kadmin_user = admin; P. r6 P1 O7 _  z4 v: |/ H
admin_password = hastexo
8 Z% r" j+ T7 k- g  t' O4:配置/etc/glance/glance-registry.conf
$ T  X1 n) p" a修改
* q  t+ m' H0 x7 M* G. Y#sql_connection = sqlite:////var/lib/glance/glance.sqlite0 V* A( K- Y# K: Y
sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance! Y3 ?5 R+ m! c' E" j
1 v2 D9 E* q- m  E; {
8 i, j) A3 X4 @/ C/ h# w
在末尾添加两行
% x, Y9 `( K5 K0 `1 O7 o& h, \[paste_deploy]" \$ L. K# C6 q! @
flavor = keystone

8 X: \, `+ R, |8 v; @7 e
7 X* b7 P. ^/ r. d' ^% W8 U3 d) [5:配置/etc/glance/glance-api.conf
# _" X; C3 |- G$ v& ^3 J6 [- g在末尾添加两行8 y0 @+ D- N. I0 P$ ]
[paste_deploy], i" x  i7 F7 j! I  H5 U* I
flavor = keystone

/ v4 S# @% I2 H: {, ^4 q* U, Q3 ^" P5 _  A+ N
6:同步数据库2 k# d/ ]  X. |& Y/ {
目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
* k6 n/ c  x1 G6 Z, a# glance-manage version_control 0
) R4 P; m& ^9 ~# w, [# glance-manage db_sync         
! z5 {8 z$ [: c% g/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_format.py:47: SADeprecationWarning: useexisting is deprecated.  Use extend_existing.
. s; e5 H% E: f' G/ R  useexisting=True)
1 E6 q, R, R! m0 f重启服务3 C4 g) e/ o/ z  g  e: r" [
# service glance-api restart && service glance-registry restart
" A* b0 D5 Q! S- C, `0 t& Xglance-api stop/waiting
7 K9 P/ t+ w' S3 J% gglance-api start/running, process 13321
/ t# a) _7 E. W+ }: }stop: Unknown instance:
7 c: h8 H6 w4 L4 }8 j! T& zglance-registry start/running, process 13327
9 c* P2 v0 r* {' I& n9 ?; @
8 z3 D, c/ [$ G. E+ t! L* P0 {6 y' _5 K& C2 y$ J- Z
7:验证glance服务是否正常4 G, w7 P) I* f& n4 Y" \- F
下面的步骤照做就可以,具体原理可以看英文
, E: ~- Y. i1 x9 ^6 fexport OS_TENANT_NAME=admin
1 U1 L" [' _' g6 y5 uexport OS_USERNAME=admin5 g8 V% e& V) N- k, v+ c8 A( V/ I
export OS_PASSWORD=hastexo
% }9 E4 k! [3 Y! p7 c  P7 y- Cexport OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查
6 ~6 r5 c& O4 P0 r: u5 I( F: E5 z+ A# export | grep OS_5 |* P) J- \4 d: J1 @- k  W
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
) z  d; P$ d1 G2 i; jdeclare -x OS_PASSWORD="hastexo"
+ s5 T& T2 K- c0 a9 U# Sdeclare -x OS_TENANT_NAME="admin"
2 S1 j+ r! X( M& u6 y$ wdeclare -x OS_USERNAME="admin"
' E- C% X' a$ C运行8 A/ `2 O1 ?& D9 n+ I
glance index
) ], `3 w  x, x* S没有任何的输出。表示正常。7 k9 U2 c1 y; {3 V, b
#echo $?. p7 y4 ^$ u# Q5 B0 t2 C
下面会输出0 ,表示正常。
, c: m, N* w" T% f" ?# glance --version
- ^: z+ K4 M6 I% \' Y9 qglance 2012.1
6 @* H  j9 w$ R* k8 H8:下载镜像并上传
3 E. z: i+ V5 hubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意' x8 R2 B* ^* }! a5 f
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。! O* }4 B1 a% g/ v4 F
下载镜像
1 a# K% m8 B2 e- E% y. w  v* M# Ihttp://cloud-images.ubuntu.com/precise/current/+ E/ T" O. C& v, b) M& X; p
这应该是ubuntu提供的最新的稳定的镜像。
0 y; z: `5 @) y; I- p) w' Cwget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img: ^* @* V& o2 h% z
上传镜像
. e/ H3 a* [9 n( t6 X$ lglance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img6 w  M3 {  l, G& H7 h' j
这里还有一种方法上传,如果你没用环境变量。
3 J" I1 T" ~! }' `* M$ Y% B( Dglance --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
3 N/ x6 i: Y$ H2 A上传完镜像后。在运行, n. G0 C. u/ }, {) w5 n' g& v
glance index- A6 J8 ?5 _: p1 @
或者
  j  w8 x: ]- m/ T2 {5 G1 K4 p/ ?glance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index7 @3 q, T6 k) U. P# `3 h! e2 h0 R
就可以看到上传的image。$ c- d  {+ L8 h
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg 0 E. K1 H8 F' Y; {( B: k- H; g
五:安装配置nova
! H: [9 {. d2 K" L& l# w1:安装nova相关组件
7 u& Z2 ^. d5 F9 Qapt-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. Q1 i# U6 d, |
2:配置 /etc/nova/nova.conf
, K  D3 z+ y4 ~7 z把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,2 S% H; S3 {, D6 [$ g
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。3 n! u& L$ U0 G& e4 P7 ~  D5 O
root@node6:~# cat /etc/nova/nova.conf
$ {% w; N+ h! M5 e) s# k--dhcpbridge_flagfile=/etc/nova/nova.conf) i8 r4 \% s% Q1 h) C, S# c
--dhcpbridge=/usr/bin/nova-dhcpbridge
+ x1 G0 M8 v/ j) M( Z--logdir=/var/log/nova
! |7 O3 t$ y* o--state_path=/var/lib/nova
8 h) w1 c$ T! j% i! F2 M2 e8 C' U--lock_path=/var/lock/nova3 A$ B. T5 |( ?( [4 b9 d
--allow_admin_api=true" ?" o1 P5 P3 l7 b3 I
--use_deprecated_auth=false% S, P, n0 h: r4 S% z
--auth_strategy=keystone
; R. J8 |; K2 I% E, f--scheduler_driver=nova.scheduler.simple.SimpleScheduler5 T: M5 M5 w! p. @) @; {9 m+ P
--s3_host=10.42.0.6$ u- J; }) Z2 I( {' S8 D
--ec2_host=10.42.0.6
, R6 }) }- r% P  G; o--rabbit_host=10.42.0.6
! g7 R! H0 d7 H& X6 ]0 u/ k--cc_host=10.42.0.6
6 I. _- X, u. J6 z  e7 ]5 s: l. A$ F' G--nova_url=http://10.42.0.6:8774/v1.1/
5 J6 o" D+ R2 i--routing_source_ip=10.42.0.6
* K- Y+ V# d6 k9 Z, d--glance_api_servers=10.42.0.6:9292) B) n. d% J5 Q
--image_service=nova.image.glance.GlanceImageService
. y0 b  c! m( x7 O--iscsi_ip_prefix=192.168.22
3 V$ D! ~9 r. e( C( h--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
  A+ H. V7 @6 ?8 I. w  m--ec2_url=http://10.42.0.6:8773/services/Cloud
# Y6 f5 s# M' e7 V* e--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens3 C+ G! z  n) h: z5 H) {2 }+ R
--api_paste_config=/etc/nova/api-paste.ini
1 O' R$ ^' `1 A! \2 o7 ?4 y1 ?--libvirt_type=kvm
8 L1 _! l! C% j; I; ^8 ?0 |#--libvirt_type=qemu2 r0 S0 h$ C7 K# j/ B
--libvirt_use_virtio_for_bridges=true
3 e# S/ t* ]+ W" T8 d- u3 K--start_guests_on_host_boot=true" Q9 G! _" Q5 N3 C$ E
--resume_guests_state_on_host_boot=true: y# v: e1 L+ `# M! `

4 }  W7 h2 w6 Z9 j; r#novnc
+ n$ C9 s' T+ F* l! [, z--novnc_enabled=true& _6 y0 ]5 {* J
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
4 _$ A5 ~. h! V& R+ a" M--vncserver_proxyclient_address=127.0.0.1
% G9 B. b* t1 Q! n--vncserver_listen=127.0.0.14 f& D+ g+ \( ?- h) r- s* H8 J
( L. ]1 c$ J  |& v0 z
# network specific settings
) M% A# J4 Q5 v7 _2 s3 X2 A
3 u7 g1 l) ^1 x+ P# T8 i9 Q/ C+ n--network_manager=nova.network.manager.FlatDHCPManager" Y& R1 G0 X3 y0 X5 D( I# H3 W7 p
--public_interface=eth0
. b& m2 A5 Q7 `3 q) o( c--flat_interface=eth1
) L( E0 E# C! W7 T2 s. ~/ ~! u--flat_network_bridge=br100' O6 q' M1 X8 x2 C; m
--fixed_range=192.168.22.32/27; F% Z# ]  T. s
--floating_range=10.42.0.32/27 : h1 X6 o4 L' j% o+ v: ]
--network_size=32
( b6 `' E$ |. V--flat_network_dhcp_start=192.168.22.33% |! ]; L' |' R& ]% D6 |$ ^0 K
--flat_injected=False1 L% l& `$ N( \% T4 B, t
--force_dhcp_release: ~/ j1 Q, b5 i, B
--iscsi_helper=tgtadm
& d4 W* s; r) E1 u- K+ t$ Y* n) h--connection_type=libvirt
% n6 x0 y2 Y  t( \4 J$ r; z( h--root_helper=sudo nova-rootwrap
* g/ K+ I& m- w. b( S& d#--verbose
6 ?& H6 s: x! ?" F# N--verbose=False
& J" ]% T, a9 K) l
) W' e: _5 \& c: e- |5 N' B
3:配置/etc/nova/api-paste.ini1 g$ s; x9 M) z  L/ ?
也是修改文件最后3行,8 s; y7 W+ d- x+ A7 h
admin_tenant_name = %SERVICE_TENANT_NAME%
' I# B: [* R8 k: T6 Z$ x8 hadmin_user = %SERVICE_USER%
% u$ a2 h+ E- @admin_password = %SERVICE_PASSWORD%
% ]6 G& d- b2 k) @% L改成
  Z* ^* `  s1 B& t7 Y! Badmin_tenant_name = admin- S1 ?; b% v# [) ~
admin_user = admin
3 Q0 k. m6 }) [- W& Ladmin_password = hastexo
3 h8 W8 d& @# w( F# O' [  k6 \4:停止和重启nova相关服务8 i, A" g( x+ u2 V
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
9 @- @' F7 R( U( k; U3 q' e; q% R! l2 h
5:同步数据库
& o0 w& P3 {, ]0 k2 m以前我运行同步数据库,如果正确, 当nova.conf- ?. W) j* v! K
--verbose=False3 v$ ^0 j# O9 c2 M% G
是没有任何的输出,否则有一堆是输出。2 X2 a7 v+ m7 \  p/ E
nova-manage db sync
1 X- m4 C7 y- |) ?0 I- q

& J0 N: H! X2 q% F& h d386ae19ebc4b74515d430adcffc1e178b821518.jpg % T; f1 Q( W3 E4 R5 C

: m9 t# f, x' u2 y; [创建网络. w$ T* Y3 x) \; `
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 u+ F, g0 u" ^
d3a81f087bf40ad11f734058572c11dfabeccece.jpg
6 H; k: g( a) ?' U* {设定floating IP
8 o; U$ m8 o: o! g0 F* |nova-manage floating create --ip_range=10.42.0.32/27
) }  b) N4 |; F
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
' R: ?, F' G/ }* W设置权限2 O9 O, v* s- N8 \6 ~# e- a
chown -R nova:nova /etc/nova5 x# K' @6 {9 `) w) z4 |  K, {
再重启相关服务
' U9 C6 L2 ~7 A& Q, Y* W8 `) ofor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
, C, ]9 v  T: K: ]' x" p6 r0 J: g- f+ O; |* \5 W8 ]
6:检查nova服务' |8 @; S: p: H; j  M# h+ r
nova list5 x1 W+ G6 O$ K: L% V0 p3 G
nova image-list
- y! `0 |1 p3 x6 p& J1 unova floating-ip-create
" _7 Z( b# H. @; P; ?
7 T9 H( g" M3 x& Q& e6 L: s 3f1e66899e510fb330aef02cd933c895d0430c2d.jpg ' }0 K# E% k0 V1 I. t, C2 F" D
六:创建第一个VM6 F3 ^" u' T3 [& v  L
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。7 n4 X  c  Y; R* e. s
1: 创建密钥- M% `8 o& I+ }$ [% C! j
# ssh-keygen
1 G: L# d) {) A* [1 q* [一路回车,就可以了。3 @& z3 b9 e3 J' Y. v  t! p
9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg $ C: G% |8 U/ q: W* T# c
2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1
4 f% R0 |0 B& H2 N  u% ?! }
这个时候,就可以查看到上传的key
3 \+ n) G  e2 G6 I# m. ]root@node6:~# nova keypair-list
; o! v* f1 \6 }+------+-------------------------------------------------+( E* m' u& T7 ^2 E& J  C* c
| Name |                   Fingerprint                   |
; d: E; T- v3 B& a1 u+------+-------------------------------------------------+
6 R* x8 |/ _* `( f" Y& l" z: g5 Y| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |+ b- C5 Y2 ?: B9 I! G7 W
+------+-------------------------------------------------+
$ n  w4 w) M( |; W( n) f" T4:开始创建虚拟机
) X  @5 H2 b- b" H1 m 查看image list7 m8 {6 z! K( ]
nova image-list7 f. O1 b+ ^  B) P! |4 E; K) _
, s# M( ]" ^$ R$ L+ z3 t
查看flavor-list
& B6 W# a4 w6 f% D7 X* u. Z$ n% F, {) ]' U% d9 T, j4 _
nova flavor-list* A) r3 ]& q. ~
创建虚拟机0 T7 n4 R9 Z! b* E" a
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
/ R2 i6 M8 y5 U! ^看图有真相7 y$ V9 v0 t( F! t8 T  t9 ^3 ?
6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg
* \( G" n1 X$ m* ^ 查看一下创建的虚拟机

( Y6 H! H" I! j" q9 O% A nova show superfrobnicator
7 B) I: ^) Z0 y- ] 61dd66ec54e736d1a27346b39b504fc2d4626979.jpg * a. W+ w5 B* M3 T! u% }7 s0 n/ r

) x$ O+ ]. Y: \4 U% Q6 A; ussh 访问VM0 y! u1 P: R% ^! E! R

' H6 v* [; |0 R3 s打开防火墙* C# A( N- d, s/ d8 d, M! H4 |
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
( B* e; w; E) a3 p; W! T( |+ t4 snova secgroup-add-rule default icmp -1 -1 0.0.0.0/0, R! s6 d4 [/ A4 {; [
这个时候,就可以直接ssh到虚拟机上。
( Y& e: [  e( G7 B- }: hssh -i .ssh/id_rsa ubuntu@192.168.22.35" D/ X# v# B8 |4 a# X
这样就可以登录服务器。( O4 `" W1 S, T8 O; T
Floating IP访问" {* L+ j, ^! I6 P! T9 F, Z
如果希望访问floating IP
/ K; q# _* H: ?3 j7 Z& l! l8 ]7 P申请floating IP
  l3 Z% j$ ~- R/ x4 Dnova floating-ip-create; @) l3 Z4 h  y' c. l; _4 c+ K
关联vm* a. x: |: |1 Y1 p5 g
# nova add-floating-ip superfrobnicator 10.42.0.36; ^+ {' [- K1 r8 `% m- P  d8 @2 @* P
" l" [, _) k# X& d2 n
查看虚拟机6 |3 k5 m" M9 l- v) [
nova show superfrobnicator1 d$ F$ ^8 o7 u* R
ssh访问虚拟机; [% D! e6 v& \. I' {" L
ssh -i .ssh/id_rsa ubuntu@10.42.0.361 Q& m# r4 J, r% U4 v/ K4 D
查看安全组和规则. q- {, i& k( V5 A4 v% n
# nova secgroup-list
0 }1 t/ {( i+ _, V( L" s  g% a# nova secgroup-list-rules default' D( `  n1 W# r8 A0 q
看图$ b+ P! Z* T! d
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg
. i2 u, Q1 W1 m- U0 j

7 v! k( W, m6 t  S看看结果8 [% p. m( Q, m
485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg 9 Z. y; \* x6 H3 r% }( s
ssh访问vm/ t: H0 U3 J& e2 |" P+ H, \
8 t. \  r7 }6 w2 E: D: x  @. h
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg 8 {3 o0 S% H! O  s

9 f2 U$ F6 H& h! ^: Y
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg
3 z0 E, `0 h% {' T8 V' u
& v' g+ N9 v# w. s有用的命令1 u% a( _& t% R/ Y) j  G# M
查看keypair
; j' W5 c/ O% U$ K) fnova keypair-list
# T- h- E$ E( a$ f- {* C) G% |删除keypair+ b7 O0 _5 b2 L6 t8 c4 e- P! [8 M7 _
nova keypair-delete
9 P! P3 O8 m. I$ K" _% z查看vm% y* f7 _1 S/ \; V$ b( E, L
nova list% {% Q; F6 R& H0 V4 F
删除vm,vm的ID
1 h/ M* }6 Q7 lnova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f3432 ]+ y6 W0 q" s* h& J' O- v5 E9 h

/ c2 P7 {3 |0 v: I. ?5 z1 b1 j6 V% z/ H% w' W, q
七:安装和配置Dashbaord* v& k3 s  Z$ P! ^
1:安装dashbaord
4 X, x, Z2 `. y& Gapt-get install libapache2-mod-wsgi openstack-dashboard
# @0 W+ T* W& f7 f9 z
! f% v! e& f# [- T# i3 t+ s. a9 h, Q5 o
这个时候,你就可以登录dashboard
7 M8 s* M' Q; G5 M* Hhttp://10.42.0.6
9 ~% v0 I: g* v8 i0 f% Duser:admin
9 @4 K5 ]  q4 O& B3 G% K; Lpass:hastexo
; G1 f% f) W2 i" `! E2 L6 H
% g, |/ i0 S* t. c7 d! o 29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg + y! K/ T' N0 n* h

8 P5 c/ f& c* D' E( q' ~ 6982e5198618367ab223fa612e738bd4b21ce53c.jpg $ j& I% B# A% h1 X. G

5 {4 _8 y0 Z! i2 _% `3 k4 `
5 k9 {, t1 K/ p7 ?, U
. q' A+ r# t5 d: B$ C: z5:理解project和user关系* E, C5 X* r" e8 I* C
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。
- |: h; y+ P8 q$ ^/ d% a# ~你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
3 F( v% P: w" a我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行
8 q. N' K# Z0 I 6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg
: B6 _+ ]# j6 R  Y( U3 y( o

: B5 c0 W* H' J$ x2 X4 A1 J6 O9 F八:euca2ools 工作
8 L- [+ t3 T, J% R9 z) Leuca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。
( Y% X8 Y5 C+ i1 I; m9 X3 h( u1:安装euca2ools工具
& P4 Z" I9 X; G3 o& c/ B- oapt-get install -y euca2ools) r; ?# ^# m3 S) m
2:设置环境变量
6 k% X6 z0 y& k) N' lexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
# a% v* P9 l; L2 i1 M: ?export CREDS=$(keystone ec2-credentials-create)
" }- m; M- S# m! ]0 b" G, Aexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')+ S, u( {" X7 B5 H
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')! B8 o$ ?8 l9 R% o7 D1 Z
3:运行命令8 i9 r9 J0 w- d6 [+ }) `  q5 k
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list4 [+ R1 z& J/ J. ~8 ^
现在Essex对Euca的工具支持应该比Diablo好很多。
. I. Z2 j0 z. Q" \+ A* ~ 96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg ) l7 g! X. h% }& Z
列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances
& p# M! ?5 K( K* j7 ^# U. L( @2 Z% Z
4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg
1 N. Q( q' l" ]) k0 i

( [3 U9 g" u+ O' P  b  {% X! {0 C6 L5 m/ N
Appendix A:  使用nova-volume 9 W# l+ B# B0 u' q* a, A6 z3 f
Essex Dashboard可以管理nova-volume。有两种办法来实现$ [- b; Y3 N2 T+ ~
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。* n. x/ c: R& N
( Q, Y( t! B8 O2 F& Z! C7 i2 I
1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,! c# W  H" g% c! {8 w
新建一个文件来做 LVM:
! B; \! n9 f7 gDD一个设备  m, W8 [$ |) T% q+ _
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=03 V: r' E0 f" _& u+ [& t" y1 b
加载一个设备7 _# Q/ p+ X  X% u+ t" W
# losetup -f nova-volumes.img$ F9 u' V* ^8 Q( B, B) u
查看加载情况
1 b7 o3 Y; t* ]# ]8 y# losetup -a2 _+ ~6 a( c% O
/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)
4 \7 m+ E8 k$ \/ B创建一个nova-volume的卷
+ _5 g; ]% z9 O# vgcreate nova-volumes /dev/loop0! }4 E, w& G$ g. V& _
  No physical volume label read from /dev/loop0
& Z9 |3 [* [: g7 S& e) E  Physical volume "/dev/loop0" successfully created
8 E. l$ S3 z0 Q- E5 {' \0 ~" H" J" D  Volume group "nova-volumes" successfully created  N/ ?1 m1 o" q9 h- ~) w
查看卷
. C8 \6 y$ B) e9 C% Q) Q#vgdisplay- f6 [0 Y) l2 F0 k* W
就可以看到创建好的nova-volume。
8 O" A# C9 W0 u( S4 e创建一个5G的卷,名字为volume1% J% r) {  s- j. G4 s+ {, _
nova volume-create --display_name "volume1" 54 x1 Z( T0 c- u4 G  E4 M
创建完后,可以5 h! P( I0 j; b6 P
nova volume-list
+ F! B& w! R* I: f; M 08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
& @0 I; f" ?7 [7 S. l% Q& G

8 W6 t: P' U, T  S7 J" a创建的过程非常慢,看status完成后,才能attach。8 t5 Y. [6 e) J0 [; z  ^
如果希望删除创建的volume,目前我知道的就只能通过* Y6 h& }7 }% c. ~2 G
euca-describe-volumes
+ n% |7 l! R  ^/ x# E3 P4 \euca-delete-volume vol-00000001
8 H# f) b. L7 ^( M0 l& n
4 r  D7 y6 [: o& [: m2 A把卷添加给虚拟机,1,表示ID号
  s: h% y  b. xnova volume-attach superfrobnicator 1 /dev/vdb
- |; u8 U! W- T1 [* Z! t6 Z) V3 `* C; |* g. j7 q3 N
2:单独一块盘
  Q, k7 ^$ _+ z5 z8 z& j # pvcreate /dev/sdb1  z; u) _) w3 k7 n
# pvdisplay8 x3 j* u1 M0 M6 P- v
#vgcreate nova-volumes /dev/sdb1
! ]! d3 A6 P  @# O- H4 I, C# vgdisplay
7 C/ B: H7 }4 P. g2 D, Y这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。
$ n2 Z# _" z" m9 q2 l) A9 {% d: }% P
9 m4 S& T- u5 x( |2 g( _* i' b, e
参考下面文档
- E# U1 N. A) t/ P4 ~http://www.vpsee.com/2011/09/openstack-nova-storage-management/
0 \8 Y# I, y. }* xhttp://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html, k" s' C/ x1 @5 d- i; y2 `8 T' [
lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html
' k) U6 ?% X4 Z- i+ Q/ o5 P
4 q0 a/ p. i6 f
) A' m' k: b" G+ X- _# l% |# r3 A& o3 n& N5 G

+ I6 z# D1 F" W" |$ w0 x+ Q
7 F& y/ l) D& H3 O1 |( kAppendix C: Dashboard 创建vm,允许ping,ssh登录
7 U% B8 w( I$ T$ N; _对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
& _: K8 S: H; u% d1 `6 I+ h% d* c( C不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。
7 O8 g& r, d2 I从ubuntu下载的image,只能用密钥登录,不能用密码登录。
) ^; z5 x8 r7 L. O& A+ |. I) [1:设置安全组 Security group* W3 s9 O$ g$ I$ K4 y, U- c8 x
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
: f, N0 W2 K, }% E$ }! B1 _为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。. Q4 t" n! k( i* [3 b- u" ~
默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。$ Y$ ?- h+ l: Z) d
9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg 1 w' J* I9 i& K5 V4 b/ r

% d# `, I/ G( Y" Q
3 n- p" A. T  Y: y: d- g) G  ~; V* J/ V! u7 t
2:创建密钥( {1 u/ @, h1 R' e3 W5 ~
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。
7 \* Z( ~2 j' ^这个时候,你如果有私钥,就可以直接登录。
1 \) z: _+ n, w" w. U% }/ B4 k: M. q1 {" _
1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg ! D- k" K9 ]; H) F1 K$ @; @
下载私钥
5 q0 k. j* ?* W9 C9 S, F7 S点击create keypair,就会提示你下载私钥。私钥是pem后缀。' Q! |$ s8 p# z* L
7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg
7 I" C& L7 K1 j8 }6 A
' B3 y" u+ \4 E: W" ~2 h" k0 B0 e2 b) c
那么你就参考这个文档,就可以。
& d1 D% @$ s7 [1 `3:创建vm' l6 e2 a0 M7 j7 x* u. E
创建vm的时候,你会选择keypair,安全组。
% ?" K1 E# n7 @1 Z 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg 3 e* a" b4 V3 v6 p" o7 S4 }
0 t' j* W  p& U0 H! G
, ~! ~! ]) z# X7 s  B; M8 L3 g
46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
/ p  H  \5 u; T( g7 l8 T. b- s6 x9 J- ^1 w3 C
创建完成后,得到其实是一个内网规定IP: G8 d+ ?0 Y, {/ m7 Y# d2 n0 w  ]% e
e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg / f+ V, S. f( p! b. D3 z1 H3 a% `

# e: O  c. B7 `  |% q- @+ L4:floating IP
( \" z6 X, F& d% O) c9 O3 C给虚拟机分配一个 floating IP,可以理解成是公网的IP" M+ T3 g6 a& l* y  _7 T% {+ n
8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
( g" C- w! h( n7 X% |$ R分配完
) a: f- R+ k" z( q+ l
60d25790f603738df2568f99b31bb051f919ec45.jpg 9 O( P6 R1 {5 `' Q
关联vm
; m- V5 L1 l, K# W7 v; Z1 I6 ]
af15baefce1b9d161e8719daf3deb48f8d546419.jpg 0 J1 @( y& E4 V) n/ B, T, a
1 C. Q, Q' K3 \, |) R  y7 d/ I- C. [

, j( \# v& a. h9 P; J- D3 [3 [; U' f3 `  A3 s
看看结果
8 \/ T4 c" g2 N' @ 3c0efa1190ef76c647bf78909d16fdfaae516774.jpg
5 y, {0 f; y2 t

" ]1 q5 p# M, ?! g7 k5 i5:ssh 访问vm* o1 z( S4 l! X' E! h
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。, ?- j! s8 ~9 ~# U2 m4 v  Y
对于ubuntu提供的image,ssh的用户名是:ubuntu,
4 y: Y! b' q3 i+ h" R3 S& tSecureCRT 6.x版本
; _; ?, \! r0 B5 b8 O/ z3 z4 V对于6.x版本,已经可以直接使用pem后缀的密钥4 ^8 T7 E, I; r* ?4 m0 u
" @! _# e- U% Z# v) X8 _
e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg
5 \" z, I& {2 \+ q( J! U

3 l4 Y; r1 p) h% dputty登录) N# D. M: Q- b0 R/ N, d3 @. _
对于putty,需要对密钥进行转换。
( [7 y0 l1 p) [& z  e$ |http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
9 I8 j# a& ^  ?& @$ P( g到官方网站下载:PuTTYgen这个工具
1 p4 @" R. l2 D0 APUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以- _; W0 ~" l$ C7 I
67da7663053a03280d33fa5f.jpg , _$ a1 B$ E. U( Z' Y* r
4 n  I: }) a. t4 |
存放到本地。1 ]2 t. ^$ v5 b3 Y
设置putty使用密钥
# x# l2 }9 Y! Y# R# D) m 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg , b$ V/ N4 y  J& g) `! h
4 X, b, d3 j% u; {& K4 W5 N: n
d520caca7bcb0a4664b806826b63f6246960afc3.jpg
( u2 o* d( U7 v3 ?

. t- b& a  [+ L/ `) ?# X" t; T( s' F( N: b2 _9 j
linux客户端ssh登录vm3 c/ Q4 n7 U5 J. F. T
如果你是linux服务器上,你可以上传密钥到服务器上  k/ R% ^/ u  b, W
ssh -i key_for_openstack.pem ubuntu@192.168.22.34
7 a/ D5 ~1 C, V0 c) E$ u就可以直接登录虚拟机。
2 i+ z* b8 v6 x, A: t# i  x; d: T6 L" ~4 Y. S

* J) b% I) S8 TAppendix D:FAQ) P3 ]& [. i; ^: ^& Q% j( j2 w3 T
1:我登录服务器后,命令都无法运行
! T  n& W& G, E3 k~# nova image-list
5 |! V1 Y3 |7 c  ~- fERROR: You must provide a username via either --os_username or env[OS_USERNAME]" ]& w2 Z9 A3 ?6 g
- F+ e3 L: B; w' k
如何解决。

& Z7 U2 v/ j8 V' ]" O6 E) P这个问题,其实还是你的环境变量导致的。& W5 S8 C2 _/ v; Q' i- ]
export OS_TENANT_NAME=admin
9 h- c8 m4 f$ G: ^export OS_USERNAME=admin
) N( S. u! l. y' `9 a0 @export OS_PASSWORD=hastexo* u; V# F' p, e1 D; u% L- [; m) D4 j
export OS_AUTH_URL="http://localhost:5000/v2.0/"# E" ?2 g  T$ C% \) i$ n7 h9 _
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
6 z' v6 c& z1 x; V* `export CREDS=$(keystone ec2-credentials-create)( `8 g' C# M- W9 x
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
& I( L, Y4 E$ u- e8 I6 _, x3 H4 ^3 \+ Vexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。
' ~- L& Y8 G; _. A, ?- F如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。( N; J+ W/ D$ }
http://bbs.chinaunix.net/thread-1958386-1-1.html
. h; o1 Q+ s7 `/ p  a! Z5 @3 R/ I4 F# @1 m4 t# G+ Q
root@node6:~# nova image-list; B6 U4 w6 e9 a- T
+--------------------------------------+-----------------------------+--------+--------+8 ^; q0 N8 R' [( ^) V
|                  ID                  |             Name            | Status | Server |
3 }3 x) \3 B( p+ B) p8 H+--------------------------------------+-----------------------------+--------+--------+* ^: A9 B/ r" H( u; s$ }7 ]2 b
| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |, d# t8 M" z' x3 O3 ]6 `9 q9 S* J8 D
+--------------------------------------+-----------------------------+--------+--------+
- l: @% b) L! C; i- c' O- y/ q
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg ! g; L8 F9 `3 I: e( t

- b4 W- g4 S  W" {' L0 E 2:如何用curl去测试keystone3 J. k8 j( p$ T2 ~& P0 p9 v( T
替换红色部分,就可以了; Y1 h& ]8 V- c7 q/ v; l) z) `: a  P
# 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.tool8 A. G: B* y: b( o% c7 H

# S* |6 ~+ V* E5 _, a
5 h+ ]" t0 s, ~, G博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb8 A9 Z; \3 G, W4 W# W% y

: w. {3 E, g4 I2 E! \
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:
) m, @" V1 G5 ]! ^& W6 h1 t/ XTraceback (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- l! ]  t: A8 p4 ]

+ v( o( a8 X2 s9 ?! d; B2 v解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。
2 O8 \$ E) g, n  Y& ^. i' Z           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'/ r/ \4 q7 y& @# c6 K) `
注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:8 @! ~* ~$ s3 F8 Z  ]" p* P. W9 k( u
export OS_TENANT_NAME=admin
6 d+ d6 Q; Y" j  B7 C+ h. s& J" Pexport OS_USERNAME=admin$ g' i( H+ ?& r$ {: x  b* e
export OS_PASSWORD=hastexo
9 T+ A) M0 [) \$ qexport OS_AUTH_URL="http://localhost:5000/v2.0/"4 Q5 |; X  g2 P* X; Q. d& s
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')2 x) k/ ?  {5 Q- A$ X0 F, t
export CREDS=$(keystone ec2-credentials-create)& R& B" X$ H3 L
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')5 g4 M; l' D0 I* b9 T
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
$ ^% i( {  q3 V+ k1 @: ^$ O8 I; j- R& e( g
现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑
* A4 q" m1 p- [0 O5 }3 Y; G* c. c4 _5 x" h; j- z
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:
7 t" c" ]- |' f7 Q; e$ h
$ h$ F4 @8 ]1 z, KSSH Secure Shell Client工具密钥登录linux:' s& v$ Z: A* y% _* ]: U9 Q( h4 L
) r- O# m. i+ u# G  V+ w6 \
http://server.chinabyte.com/365/8835865.shtml
1 u( M" O# s! U$ X- W9 T" h8 d% P9 s' U
, T# a" m6 ~) w/ `+ E; H
SSH Secure Shell Client用public key认证登录
0 H9 R9 e1 B- A" H+ s- |http://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html* ^; |( Q, R1 a6 W, m) L

6 n* ?. ]& m7 @! V1 I6 X由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:" s8 m- c( c4 e( A2 W; |2 S

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux
  a7 C. \; J5 m
6 S' n& W0 ]& Q
没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。
8 G9 N& ]3 }- t6 i6 b$ J( b8 L' kvi /etc/ssh/sshd_config1 {6 `5 ^) z1 U9 @
将PasswordAuthentication no改为yes
; p' c* N+ I' O0 j$ v( Z: bservice ssh restart% n$ k: t; ]2 Z+ c

" `% A9 B$ [! a2 h5 ?2 H这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。. D& x1 Y2 Q" W0 U- Q9 J4 S# u- Q
安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版8 c1 a% V; m8 Q# ?' i

' b+ d5 g5 I" a4 J, Z$ b3 s0 @虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题2 K' }/ l+ M6 t
$ g' D  U: i: a# p3 `
1. 在vmware workstation上的虚拟机需要修改 *.vmx文件. j/ C7 p2 N% I8 E6 ]7 T9 [
vcpu.hotadd = "TRUE"
' E* i( F- C$ j% o0 H6 I3 Z! D3 |变更为) f8 E$ M0 N$ d( H. Q
vcpu.hotadd = "FALSE"' C. I) H0 Z: C1 g) H5 y, C
重新启动机器,如果执行命令:
. M  E* |( V5 S6 S# q* a% o& dvirsh$ M, t/ e. l- b& K* Z9 T* r6 O
进入控制台就没有问题了。( m0 ?/ f, j9 O' d
2. 修改nova配置文件/etc/nova/nova.conf% S/ C  d6 O- T6 w& q8 f( [+ m
#--libvirt_type=kvm
6 U; @& C2 ?; o6 i; |更改为qemu
2 T9 Z1 C8 e( q--libvirt_type=qemu6 e; `6 K8 A# _7 M. N
3. 修改/etc/nova/nova-compute.conf2 C, O: r2 W0 ?
--libvirt_type=qemu5 C& c. ]0 l8 W7 Z7 ~
4. 重新启动nova-compute,如果libvirt报错
/ ~/ u( Z6 V1 S# @/var/log/libvirt/libvirtd.log. V" a1 [4 J$ X
Cannot find 'pm-is-supported' in path: No such file or directory
1 ~3 C; Z8 ?3 k) u' `# z1 b! p7 ~报错后需要安装0 j' n2 W7 T. Y8 h2 H6 k
apt-get install pm-utils
/ k( ^, ]& f9 ]5. 重启libvirt和nova-compute就可以了1 C& Y) _+ E* K; [1 Q
service libvirt-bin restart  z4 E9 t& ^, x0 t% l- M8 Q' t8 K
service nova-compute restart) a3 A" s) V/ F
5 e7 l. n% ?4 H! J3 }* v3 [
6. 执行 nova-manage service list  L  k6 b4 k' \: x3 F) |. [
state都是笑脸的话,恭喜你,搞定了:->. O. Q9 `/ ?7 j, {* ~2 b" I# F
2 v, d) Q) @  v, m  G8 Z0 k: N
感谢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人群已满)

返回顶部