锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑
% V- N/ F0 L) i  O
# H; X( L7 u1 z" u. s9 X7 B- x1 E之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。
* n# h" F; c# h, j% M1 Y; T, h  B2 R
原文如下:
* t# \/ |" B6 z0 u  M4 {. @+ |3 n* X, X% _  E
Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex( H) B" S! j9 z: p4 D; W
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。- h4 f) g4 L% z7 d: [5 k5 {
原文" w; m% ~1 h  j" s
我下面的步骤,也就全部参考原文。
5 o* d$ }: f/ d( X9 @3月27日更新:基本完成文档内容1 f" E. l- Y# D1 Y& r
4月5日更新:重新安装第三次,修改了文档一下小错误。' X( ^, x7 b+ z1 Y7 \$ M2 r  U
4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖6 c: C6 B0 m8 E/ d- ^
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
3 V8 n4 X8 c0 R( N4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。; Z/ c0 i7 k1 D8 N; _$ D/ m+ p
4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。, ]  D, [* `1 C- t8 ~
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
2 M2 n$ D4 h+ L  ]3 f 5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。' g; K/ ?% T) P
5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。
( z' t8 @. ^5 o
4 O2 ^6 h& y, H: d4 d8 a7 `硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。
9 M& M3 i  @8 \2 u- Z0 P下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
) z8 j" Y$ T/ q  A1 H+ Y为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。/ j6 D4 Z1 @/ C9 G6 Q- [1 F
目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。5 x5 `2 Z: Q# F$ v! W* X. A

1 W; f9 Z( u$ X5 C; e! W; Y) C一:准备系统
7 A1 E6 X; N) ~& o- _8 w1:下载ubuntu 12.04. 服务器版本% V. U+ f$ J- W3 t0 Q/ E, E) f
ubuntu12.04正式版本,需要4月26号发布,目前是beta2
; L+ T  {3 \* Y1 c; Xhttp://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
% a1 x# {. T* C8 _4 Z+ F
5 y& }8 c8 M: k2:安装OS
" q6 f7 |: S" \) @安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。$ Z6 ]4 {' O$ v* F, n6 p% C
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。7 B& Q. t# L8 Z2 D
装完系统后。
/ d! h/ H0 z6 T! Q2 g5 }apt-get update
# J5 V1 `$ j+ \apt-get upgrade, D: l" k* l* K, p, t7 L  B6 d( D# e
更新源里的包,更新系统。确保你装的是最新版本的包。
7 z4 {& L9 S% [. X, k- \/ S3 I  {; P- S0 B
3:设置root权限8 B0 j0 y# W7 ^$ H
为了简单,全部都是用root来运行。
, o4 I; w# e3 Gsudo passwd
3 S) y2 N6 b6 r. O2 N6 [: {就可以给root设置一个密码。直接用root运行。" v" h2 D# _; `! V
4:设置网络$ \! V" V1 k* w6 \2 S
我的网络设置和文档是完全一样。这样也减少错误的几率。
; d+ L! k/ A$ U) b9 D) }4 G( \root@node6:~# cat /etc/network/interfaces   M; A7 \6 h. u! f( B& G% K, O; k
# This file describes the network interfaces available on your system
0 W  B; E& q7 l/ g' ?# and how to activate them. For more information, see interfaces(5).7 l3 c. d5 d2 R( W2 \
7 ?6 }/ `" a! |  A
# The loopback network interface4 k7 w; F; v+ g! A- y1 t$ l
auto lo; P* H# O+ p8 d! W, I. b
iface lo inet loopback' u% B( O$ `2 Y5 N

$ g7 L, L3 a9 V# y5 z* I) c6 D# The primary network interface0 F6 g; o3 G, {; h* e  q$ b) v
auto eth0
7 r6 q2 q3 _% H3 @% ?) ]iface eth0 inet static2 W: H6 Q. A" P$ H' U
        address 10.42.0.6; w' }1 ?2 q, Z8 H9 t! f
        netmask 255.255.255.0( ^( d) W9 F# y% l
        network 10.42.0.0
" X, S: h( Q8 Q* M: }0 k; E        broadcast 10.42.0.255
6 U- _% b$ v9 |1 c6 g+ l: u. a4 t        gateway 10.42.0.1
3 U; V! P" k8 V  a# b        # dns-* options are implemented by the resolvconf package, if installed
+ c% f' x$ a/ ?        dns-nameservers 114.114.114.114  V# H0 c+ M- p/ v" E
        dns-search test.com
- Z- T0 s( J" P1 K' G9 ^' g& b, |. z& ?" [  n2 @0 R
auto eth1
; A3 y8 U5 N0 A! q9 S2 ciface eth1 inet static9 R+ w/ s% w- y) ~. J* d& d" y
address 192.168.22.1% F0 c, q+ r& |: r  d+ o
network 192.168.22.0- w6 `: {; X& Y3 ~% {6 y5 v, R
netmask 255.255.255.0
& A4 I$ q; Z) n8 }/ M0 tbroadcast 192.168.22.255* [1 }. [# X9 z0 o9 Y( }

- L4 g7 ]+ L1 {0 H 重启网络,让修改生效# O% K5 x8 ]6 h  X5 b8 S2 R
/etc/init.d/networking restart
! K( K9 P9 X+ j2 ~2 p5:安装bridge! E0 H$ A+ x& X0 f- {  u7 E/ f
apt-get install bridge-utils8 ~7 m; ^& ?4 R0 K! Y
重启网络或者重启一下机器都可以
* m/ v, L: j7 L$ j/etc/init.d/networking restart8 {  E8 m, L1 p- s9 B2 s
6:设置NTP
7 u! M! e) P- D7 n6 aapt-get install ntp9 P3 y. c- x; m2 T0 c

5 X. b5 t9 ~$ O4 B1 d编辑 /etc/ntp.conf 在末尾添加下面3行4 G: F! N$ V, M: R# s3 l& I

! b3 @# r/ [! T) j- b! userver ntp.ubuntu.com iburst7 c1 D1 {" V" Z- p3 Z' a/ Y( ?5 ~
server 127.127.1.0
7 u0 j% w% ?7 P. i! t' }# S! E( ~fudge 127.127.1.0 stratum 10  {. _3 t5 N: [
/ t0 ~7 i9 N  X' }
重启服务
1 A% R/ [0 G! pservice ntp restart7 X* j: [; ?/ l; A( x
7:设置Iscsi  v# S; |! L  a- p# A4 ]# l
apt-get install tgt$ }) l( d5 c& p. u1 v" @4 }3 u; m& I
重启服务7 m5 c) n( c! ~' I
service tgt start# d0 W5 V+ {$ L/ N1 `
安装iscsi客户端
) P- `0 c9 t' v: }3 y6 |! b0 Y; y+ Dapt-get install open-iscsi open-iscsi-utils
$ |0 x8 j9 s. q3 j3 B9 i- F" Z8:安装rabbitmq; p  \" r2 y# ~5 z
apt-get install rabbitmq-server memcached python-memcache
: D0 w0 c" x) J/ A2 N% H4 N1 tapt-get install kvm libvirt-bin& t+ t" r; O) P
$ [. y( Y$ `8 }- |' s5 F
二:安装mysql和创建相关数据库7 s1 x" e/ A. {+ G+ H' b
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。8 y* ?! y8 [' m1 e1 P1 ]
1:安装mysql
- t# }3 {( n* {过程中,会提示你输入root密码。
; h8 K) c  r9 uapt-get install -y mysql-server python-mysqldb
. N! K* {4 u+ j+ i# ]让mysql支持外部访问
3 |% I/ d0 @6 x- p2 I' Psed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  
0 G# S9 r& C  k  y$ P9 Y重启服务/ e  b# L" l$ M- |5 j
service mysql restart
+ c9 G6 D- t4 H2:安装phpmyadmin (可选)
9 \9 u9 N* U3 O) Y5 E1 Z; r为了方便,可以把phpmyadmin装上,可以比较方便管理数据库
) s8 t3 e* b7 r! I, K, Eapt-get install phpmyadmin
! E: t+ ?3 Z) r6 W; u- E安装的时候,第一个提示是让你输入root的密码。
' ^7 m5 A2 s" V& a0 `8 C  ~* O  V# n3:创建数据库$ f( g( i) s* w8 D0 ?
nova数据库,   管理员:novadbadmin,密码是:dieD9Mie' b: a+ U& P  @- u
glance数据库,管理员:glancedbadmin,密码是:ohC3teiv! l+ N8 z% m3 U9 A7 {& p
如果你修改密码,后面很多配置都需要相应更改。2 d  y2 W5 d- Q5 ^
mysql -uroot -p
4 h: @$ N9 Z, u: H9 M( v$ r' V" |CREATE DATABASE nova;0 p/ |; N% d3 y
GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
! s. ~6 A  I- CCREATE DATABASE glance;
( U% `! M$ f, o# EGRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';4 f" c1 K  I% ]$ `3 R
quit
( g3 K' [  f; _9 @; G2 H8 B7 M# D4 @1 I: x, j( e8 h6 ]% X7 F5 Y

! _* |0 z' u$ Z  r 三:安装和配置keystone$ L1 I# u: R. V- o$ ^$ C
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。* @" f* r% n7 H' {4 o* H5 e
1:安装keystone
3 J; w+ z: K9 _  ^) {" Uapt-get install keystone python-keystone python-keystoneclient
% F9 U* S6 s; f: u2:配置keystone6 A) G, T! x8 b4 y0 h2 l
需要修改 /etc/keystone/keystone.conf 两个地方, {9 ]! v! a. u! z, R/ P
默认定义的token就是ADMIN,我使用hastexo作为token
8 _: m: K" ^- g( ]' |8 {5 u
+ G. Q; G. `! q' z$ T[DEFAULT]+ `+ n* T4 G9 c) }) a
bind_host = 0.0.0.0
' `1 h9 x! a+ r2 ~1 J6 {  [public_port = 5000: `8 ?6 m) z* m/ C2 ^, Z, n2 ~
admin_port = 35357- b) L% y9 X1 w+ Y/ g+ F) u+ }
#admin_token = ADMIN! Z  w0 O& T( x7 w8 i
admin_token =hastexo另外一个地方是$ N3 J9 u! ~9 b/ ?! T
[catalog]
) S; D2 d7 z* g" ?" w- G5 J#driver = keystone.catalog.backends.sql.Catalog
6 c$ i7 y" l' `- _1 E0 {driver = keystone.catalog.backends.templated.TemplatedCatalog
  ]+ L' z4 r2 x) ?template_file = /etc/keystone/default_catalog.templates
$ V* M- g3 y( }7 ^% |$ E* l. C! C4 E& e* U) y
重启服务- {  i7 s7 F1 A! j) @
service keystone restart! j0 e% K  s1 p8 B
3: 导入数据5 B6 n; i% e0 Y8 q2 Z
这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。+ e9 v  N. B" D: z# ?' U/ Z
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
3 y. X/ |  ]) u! U" C& ~下载脚本* V. c  i8 [2 H  ]6 D, h, i- T
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt; i& v* h7 J: r% x
mv keystone_data.sh_.txt keystone_data.sh& z. K  z$ M% U  ?8 a: c: B
' t& g7 U, e  a4 Q1 v5 @' |/ u
让脚本可运行/ Q7 \2 r4 o& o
chmod +x keystone_data.sh
2 y& O( n4 N8 x. L! y( R4 K运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方$ q+ O0 b  F. u/ \
第一个是登录dashboard的admin的密码) c2 a- V9 C* l4 t8 t9 b
第二个就是keystone的token& G  q" k9 q" O% N, d* Q
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}5 w8 \) e5 V& \' V* R
ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
; G8 c8 {6 F2 X# J" W4 N8 GSERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}; |, e5 j5 w+ U( r
#export SERVICE_TOKEN="hastexo"- S* o  L5 \% |7 n5 v7 X& G) @
export SERVICE_TOKEN="Centrin"
. Z/ D. ~0 Z& T/ H$ gexport SERVICE_ENDPOINT="http://localhost:35357/v2.0"' r5 K8 m9 O; {# _8 n7 h
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}0 H: f  {. B! r$ v1 x$ }
( t$ G  h5 b. E5 E  y" ]( k+ u
% I8 i" `) S8 s' E) X
./keystone_data.sh
" l3 T) i0 H. U, r, y) T8 J, Q2 J" t顺利运行,会什么都没有输出

7 v% w  Q0 s, b& {+ A
) g- X' z4 B! R

keystone_data.sh 脚本

keystone_data.sh 脚本

8 V0 g$ W( C7 z4 D! h8 k7 Z$ [4 {, g! I, p* K

, [  ]+ o& z7 K/ a6 L( F. V4 j#echo $?$ Y3 V0 G. ?3 G6 j2 e) a* c
下面会输出0 ,表示正常。你就别再运行脚本% \0 F  G+ R9 ]8 d9 O
keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
% _* O2 D+ ^( T# p看到这些,就说明keystone安装正常。
5 z5 U4 z7 H" k
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin
# }# z) U% J3 N/ V0 Texport OS_USERNAME=admin
7 D" C0 B% y! l4 h0 o4 Pexport OS_PASSWORD=hastexo
( V: C( d& \3 N, Dexport OS_AUTH_URL="http://localhost:5000/v2.0/"
+ @# w! i  _3 Z9 _检查检查
4 }7 o/ x7 ^" C" R8 i0 \* h# export | grep OS_1 A5 D1 S% \, f/ d
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
  W4 E- Z0 N+ I. [$ gdeclare -x OS_PASSWORD="hastexo"
4 ~& V) I$ Y; E- f& g$ mdeclare -x OS_TENANT_NAME="admin"
: h" X) a3 x+ }, O! r7 ddeclare -x OS_USERNAME="admin"' r# V3 L# w# J( h* `1 b3 @
这个时候,直接运行
, X% e; T! Y7 F/ A# t# j0 `root@node6:~# keystone user-list
: c; }  a% E4 o  `' f5 [4 e2 u+----------------------------------+---------+--------------------+--------+
6 k2 `+ ?6 Y( [* z8 K  l|                id                | enabled |       email        |  name  |
. s5 P. t- U' f. r+----------------------------------+---------+--------------------+--------+- h! B7 F% Y$ K3 c
| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |; C. Y" ]6 a7 b7 b6 E
| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |" j( ~' y- g6 N  M" K
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |
$ {2 I  V/ f" U( _| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
, l! P- m: U3 S+----------------------------------+---------+--------------------+--------+! c0 e. [; L; A. `& J* q) V, t

* c& q: Y6 U, y8 @0 i; s2 I! t$ g) n1 l6 A& n% ~, T- A! b5 d
/ y# b+ x* Z6 {" E
四:安装和配置glance
+ y6 J2 o2 a2 r* a1:安装软件
& x% }0 B& F$ l! ~) c- Napt-get install glance glance-api glance-client glance-common glance-registry python-glance; `+ Q0 w4 B  ]/ J1 j- G9 P
2:配置/etc/glance/glance-api-paste.ini % y- c& J: v- U9 N# k9 R
修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
1 ?4 |1 m7 C) f2 A7 U/ Ladmin_tenant_name = %SERVICE_TENANT_NAME%
. C+ j" o0 O0 |" W& N% y$ uadmin_user = %SERVICE_USER%
. A( v  ^  n1 Madmin_password = %SERVICE_PASSWORD%改成$ _% b9 H. u, j0 N/ F4 q% E
admin_tenant_name = admin3 M9 h6 m0 s! J
admin_user = admin; s4 E: T% }+ q1 F/ h9 h9 t0 v+ V
admin_password = hastexo
! i1 @, L1 s# n6 v5 m# j: V, G4 m' M1 b9 [* b3 N4 ]
3:设置 /etc/glance/glance-registry-paste.ini
( E* x2 X, w8 Y$ I也是修改文件最后3行,和上面是一样的。
& G% t( e2 f$ S  ~0 {& i/ U* i6 A& Dadmin_tenant_name = %SERVICE_TENANT_NAME%, J/ X* Y4 n0 H6 `, {
admin_user = %SERVICE_USER%- A1 ]2 p8 J$ ^6 d
admin_password = %SERVICE_PASSWORD%( c/ [7 u8 i. h
改成
3 c/ X" [! N* ^# H& E; w% @admin_tenant_name = admin
. I8 ~5 X1 D* w  padmin_user = admin! }8 n. L9 {2 \! ?- n! B# i) @
admin_password = hastexo
0 e0 p- u7 P# I! Q. @4:配置/etc/glance/glance-registry.conf
) l; c& a2 s2 z* H: N& {修改" h4 F( a8 z; t3 J. V% q
#sql_connection = sqlite:////var/lib/glance/glance.sqlite
7 r4 U: K" \. z* ]8 g  s  r" [: Zsql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance/ p' M/ C  V+ I7 c$ ?+ r& P
4 e' {! b" j* I/ |1 x% B. T

& O9 H+ ]8 i# c0 Z; c9 I; d在末尾添加两行
4 M$ `, t6 U* l* T[paste_deploy]9 S5 b& s+ |0 d2 L9 j2 R
flavor = keystone

7 [2 G" a5 ~# N5 P+ x  ]. `6 S* d! V( m0 d5 e2 f' R
5:配置/etc/glance/glance-api.conf
6 V% c( ^5 [: r在末尾添加两行& \9 P& Z/ V; Q/ t) p
[paste_deploy]
! \1 D& u! k% [3 j8 {/ Tflavor = keystone

" ]2 Y7 {2 j+ O! O1 M% e# N2 ^/ }8 z+ B9 `* ?# Q* a
6:同步数据库
+ @9 I. b6 Z: \( ?1 @目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。% K9 q! ~, i' s3 c
# glance-manage version_control 0
/ l5 A1 E9 P8 y( I7 O8 M# glance-manage db_sync         
' u/ z0 A0 Y" D% c/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.
- X. e" T- W- g0 P  useexisting=True)4 G' A7 d( P  y- l, X; y' g
重启服务2 q$ k) U& e; _( ~9 s) o8 ^) G$ D6 W
# service glance-api restart && service glance-registry restart- W6 S' _# X( T: H6 P
glance-api stop/waiting+ G8 i* g" ~+ k5 z2 a" r
glance-api start/running, process 133219 s+ ]4 H! b# M8 o
stop: Unknown instance:
5 T, d/ Z/ y- u; g" |7 E5 Dglance-registry start/running, process 13327% i/ e0 V% B! K3 U
: q2 S- p9 |1 c! I- ^) j2 Z# w+ V
0 @, }9 \* j; W; T9 P# I
7:验证glance服务是否正常) ~  v/ G8 z! }" z& J8 a$ B. r( X
下面的步骤照做就可以,具体原理可以看英文
8 Z1 Z/ O1 G7 `7 e6 U- R+ @export OS_TENANT_NAME=admin
4 L7 T* f8 y& u4 u- Zexport OS_USERNAME=admin
! ?! ?" K% z( n: M; rexport OS_PASSWORD=hastexo
) z3 M, _  N, U0 C4 yexport OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查4 P0 ^8 A) p- w5 O% i7 L) L( I  ?5 d
# export | grep OS_4 M" H$ M  {* k' |3 G4 J
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
% z/ J1 @5 d  Tdeclare -x OS_PASSWORD="hastexo"% Q9 h8 l" L/ A. n* \% L$ {
declare -x OS_TENANT_NAME="admin"- L( {$ \0 N' B. B0 S
declare -x OS_USERNAME="admin"
: I! E' x. N$ G' S- L运行
  q$ d. p4 l8 T0 Kglance index1 v% w  Q0 i/ I; D
没有任何的输出。表示正常。( g# u) u1 I: [' ~/ k
#echo $?
9 S# [2 p5 k9 n$ ^  J下面会输出0 ,表示正常。7 m% U2 t+ n& l5 V9 @. `$ j
# glance --version
4 \$ ^: ]/ c3 I. u: t' C# Z6 dglance 2012.1" T% }/ [  A. }3 J( B) R( ~- j
8:下载镜像并上传
( z, c5 f; o0 R, B; Uubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意, Q9 A% s# i% T
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。+ F/ P! v8 b) u" ~
下载镜像! A! Z4 v( }, `; T5 H
http://cloud-images.ubuntu.com/precise/current/
2 I) n5 [' z" `+ g0 o& }$ C这应该是ubuntu提供的最新的稳定的镜像。$ _$ T' Z. M4 ^; s, @8 N
wget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img7 F5 z% n( J$ L
上传镜像
0 X6 f1 h8 s. Yglance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img  m2 H2 J; M8 I8 {% x) v7 }' C" Z6 T
这里还有一种方法上传,如果你没用环境变量。" a+ U/ p2 i4 z
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.img0 Y) q8 {+ u) |8 [+ ~2 q' w
上传完镜像后。在运行
3 @1 C& K2 c3 ]+ ~1 tglance index
* E! n2 B  @! R: v( b' F% ]/ a9 m或者
  |* H5 S! P& D) j; B) e8 A- Vglance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
5 _! ^) `, O/ I/ C2 k3 I就可以看到上传的image。
4 R. ~: N2 n' n# ]; Z; R% |
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg / r2 [6 ~* H; |. A$ G  H* ]7 f
五:安装配置nova/ n3 E* b- t% k3 Q! X/ c6 q2 O
1:安装nova相关组件7 ~  J6 e) r$ w* q7 |
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 novnc8 }1 K% j& `& u/ n" `8 v% q. V% Y
2:配置 /etc/nova/nova.conf9 P- I7 L9 H: I. \( x' [3 o
把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,  P$ u' i& W7 d# p
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。1 Z! }' i, H- m+ j; y: W
root@node6:~# cat /etc/nova/nova.conf
" Z4 m) O) _( L6 v--dhcpbridge_flagfile=/etc/nova/nova.conf" l% ?$ G4 b4 t" o2 A. E# \: U' U
--dhcpbridge=/usr/bin/nova-dhcpbridge
, F: M5 C$ G/ l7 i! V--logdir=/var/log/nova
; ?( K- p- L" V* c7 J+ w7 S- r--state_path=/var/lib/nova
, Z. `& V& S1 E9 a--lock_path=/var/lock/nova& ^3 W. K; c1 Y" _5 d
--allow_admin_api=true
8 L) a' A6 n& e( _+ T  n--use_deprecated_auth=false
  k. z2 F( t  D3 a% N9 l--auth_strategy=keystone
- B7 X7 k  A2 ]4 W--scheduler_driver=nova.scheduler.simple.SimpleScheduler
  L, S9 j! D& Q. p& S; P--s3_host=10.42.0.6  [: p/ x# ]* G1 ]8 X  O; y0 L
--ec2_host=10.42.0.69 A: A0 q6 }/ q/ P. v) `
--rabbit_host=10.42.0.6
4 `/ q: u, }3 l8 G--cc_host=10.42.0.6
) e* H' `, |2 c5 _/ b- e, o--nova_url=http://10.42.0.6:8774/v1.1/1 D) o0 j% _1 W" Y9 j. H- P! u  X3 j
--routing_source_ip=10.42.0.6
! F& t1 R) W( B9 D--glance_api_servers=10.42.0.6:9292$ [1 M1 r4 s7 h
--image_service=nova.image.glance.GlanceImageService* l- V  v; B& p1 Z! x" ?4 l# Z
--iscsi_ip_prefix=192.168.22
2 ^' s9 h& n' i" y9 Q7 J--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
8 v4 h; d6 M9 V; I3 W+ H--ec2_url=http://10.42.0.6:8773/services/Cloud
8 |; l% F& w" E, d# ^--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens
( \( ?& c1 a0 {' V# W--api_paste_config=/etc/nova/api-paste.ini& u  n6 t8 D" d! S3 g  s) v
--libvirt_type=kvm
1 g6 p9 @8 b9 E. E) x#--libvirt_type=qemu
3 U+ ~! g0 C% p4 H/ J--libvirt_use_virtio_for_bridges=true4 K2 I" y  X3 U& s% n" P$ x) b2 \
--start_guests_on_host_boot=true
7 I2 E( h5 v& }--resume_guests_state_on_host_boot=true$ ]) P2 e( l# j
# U' l; r1 J$ q: P) @
#novnc
# G- A3 p; a4 O6 r+ U% ^--novnc_enabled=true; E6 G$ W$ R  ^4 j
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html5 ?! i' t0 B8 N$ l
--vncserver_proxyclient_address=127.0.0.1
; G9 i1 A6 b7 C, L5 Z--vncserver_listen=127.0.0.11 u" E+ V; O0 x. R( {. p7 \) n9 ^
) R. l0 Q5 D0 j. k- B
# network specific settings
4 Y0 d+ I: J: `$ d3 e" R' {" i4 W! W6 b
--network_manager=nova.network.manager.FlatDHCPManager
" e* Y' H* _# U/ S. V" Z--public_interface=eth0+ v/ N. z2 A( q
--flat_interface=eth1
% j% ?7 B1 ^% U" f) X--flat_network_bridge=br100
  D* D. b+ g5 _' t( N--fixed_range=192.168.22.32/27
6 @  y; W" b8 B4 M& t" u--floating_range=10.42.0.32/27 ! g2 _4 U, S$ \; [- w# c
--network_size=32
4 K1 }) l3 R' k--flat_network_dhcp_start=192.168.22.339 P9 U$ _; @' Q- D8 e/ ~. u. h
--flat_injected=False! H& e. }, q. w' V' E( s# W
--force_dhcp_release8 h1 `" K, I8 _6 Z: S
--iscsi_helper=tgtadm; l+ m# s" m, U! T5 H6 c, E
--connection_type=libvirt
; `! b( Q# q* R8 a0 m3 T" C--root_helper=sudo nova-rootwrap
9 s  ^2 r7 `% b/ B+ P" E( U8 S#--verbose3 {7 T, m% x+ ~* t" ?2 ]
--verbose=False

- M9 {3 c; m8 o. ]9 X& [9 [* s# E# U+ F) @
3:配置/etc/nova/api-paste.ini
. \1 ?" ^& E, c5 v6 ?9 `* n1 y) M也是修改文件最后3行,
& p9 F7 ^& }4 x+ a% Ladmin_tenant_name = %SERVICE_TENANT_NAME%
' o$ s  q3 c8 D$ L3 \6 i. |admin_user = %SERVICE_USER%
/ L$ j/ z& Q% N3 R9 s( Yadmin_password = %SERVICE_PASSWORD%$ l' e( Y- w" }- D/ c
改成- J; ]! Q6 R& l) ~
admin_tenant_name = admin
2 R! z8 g/ m; M0 q$ tadmin_user = admin
6 x  Z8 Q( b5 v6 W- Padmin_password = hastexo' a* @* l6 M9 ~: _
4:停止和重启nova相关服务
6 u2 U! w: C& vfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
5 i. Z9 r& a, K: A8 Y
# H4 A0 J1 K! y/ u4 z- W) I: V2 Y: f5:同步数据库8 ?4 a! I; J# Z( c4 l3 R  g8 W
以前我运行同步数据库,如果正确, 当nova.conf. [0 w7 n: b- p9 ]  H2 n0 {! _
--verbose=False+ L, C& f# z* m+ O. J& j
是没有任何的输出,否则有一堆是输出。! h6 P# y% d: T+ q; d
nova-manage db sync3 S; Z6 g% V9 T' O( @% d
0 q( }; i6 N8 T  h) ?3 L  L* i, o+ S
d386ae19ebc4b74515d430adcffc1e178b821518.jpg / P. j7 M8 D6 s
. E9 H% F9 h8 R4 g
创建网络9 r8 s( m3 Z! M2 v  x- L
nova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32
; a( t2 [/ O& N3 n' n/ Y2 e+ n6 }' I
d3a81f087bf40ad11f734058572c11dfabeccece.jpg ! S* w( U$ N' V+ K( {
设定floating IP
" E( m7 W. N/ p" |nova-manage floating create --ip_range=10.42.0.32/27
* l6 O- g3 d( a. T6 T. j3 u# _
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
) s0 e$ Y1 \2 |8 J* c设置权限
/ e4 K0 i3 w6 j: C+ b0 qchown -R nova:nova /etc/nova
4 f* a5 L; J* q& Z# S3 W2 n再重启相关服务
9 n! S+ x2 d# S+ R# Afor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done$ h& k! a! r. L: V0 o' _% x

0 D9 Y* B1 i1 S, k9 l6:检查nova服务
) {. R" X3 \7 I( a! H: znova list
  T. G$ {2 ~) X6 {( S: wnova image-list  G0 `6 K; [( P& W5 l) ?
nova floating-ip-create9 B0 k: ]1 ~, c, T6 A' q
" z* u( f6 I" s
3f1e66899e510fb330aef02cd933c895d0430c2d.jpg 2 U& V2 K" S& D- `2 \
六:创建第一个VM
1 `3 A1 [; U( p2 K这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
' Z5 T$ @* [$ U; K1 M' l/ `; [1: 创建密钥
3 x* M3 J" M/ ^# ssh-keygen3 i& i, a: q$ Q. I5 _0 m$ ~7 c& }- [% L
一路回车,就可以了。2 C# t' @  e' [4 S3 I4 e! T
9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg 6 B5 {. m1 j0 W
2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1

! m+ x4 C% k' w" A4 m这个时候,就可以查看到上传的key
) q2 Q7 i% {& U3 P' k' E7 hroot@node6:~# nova keypair-list
) y% e: J. o0 A! d+------+-------------------------------------------------+# E) N5 o/ d3 |$ g6 K" Z
| Name |                   Fingerprint                   |) I+ {1 j! v( o/ o) A
+------+-------------------------------------------------+
" d: x* }  P! Q+ J1 x! V# I! b/ e| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |
+ ?8 p: ], @& _8 y, o& L; [+------+-------------------------------------------------+# l' \  p. U! z# Q# A9 L5 \& p& \
4:开始创建虚拟机, v) q. |$ x. @# B
查看image list
# A1 W9 y, K& m; u( N" Ynova image-list
5 y! V. q  s% k" |1 C7 H% }- x. Y/ G+ b/ I# a  h: C$ ^! i$ @: X$ c: Y
查看flavor-list' M* i$ g& x; u1 j. F5 q9 J% L

2 p: z# y. v, D/ u" m0 f3 D% p nova flavor-list3 B, ]5 M: `$ B& B, w
创建虚拟机0 q& s( j/ z. c, X3 i( p$ P
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
7 S  e; K' @1 N7 _- |8 H% z2 l看图有真相
' ]8 C' f& d8 a# m 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg . l* d/ N0 K1 F: e. |
查看一下创建的虚拟机

* X; E$ Z5 U6 B- R+ i5 E nova show superfrobnicator
, B( @4 h, D% X  n) w) e 61dd66ec54e736d1a27346b39b504fc2d4626979.jpg
4 ~% _# }) E* S1 g# O

# K! x! x3 S6 H" U* vssh 访问VM
7 K. u- G" |/ `) ^3 w; g$ M' s" C5 ?% `
打开防火墙
+ O+ n- I3 w7 }1 C6 Unova secgroup-add-rule default tcp 22 22 0.0.0.0/0
$ a. `- x+ j, y+ _. u0 x" Bnova secgroup-add-rule default icmp -1 -1 0.0.0.0/0- f; Y1 j# g$ S2 T
这个时候,就可以直接ssh到虚拟机上。
% m& X. W4 p( z0 J$ `ssh -i .ssh/id_rsa ubuntu@192.168.22.35
. A0 G# e% t. s  w3 n: k! D这样就可以登录服务器。9 G: M2 f# {- @. e  Q. o3 y. A3 ^9 ]
Floating IP访问
+ [" k9 ?3 b' ^& O2 t% x如果希望访问floating IP
% S* i7 \8 _8 N# I+ g申请floating IP' o6 P# E5 L8 J, z& z/ q& Q
nova floating-ip-create
. b9 a# {& q$ _关联vm  M5 w( B% l& X% r1 |$ h' X2 p; r
# nova add-floating-ip superfrobnicator 10.42.0.36; b7 X  ~+ d0 z4 I! D6 g# b

5 @) L' N8 o' U  C& ~ 查看虚拟机( `1 Z- i9 O- @8 m. h( ~' {# ^6 K
nova show superfrobnicator+ q9 H* ?. v% V4 ^
ssh访问虚拟机
# N# I3 }* D, q: m( Nssh -i .ssh/id_rsa ubuntu@10.42.0.36
  C5 v6 t- p% p$ q查看安全组和规则. m% N- a6 g: c
# nova secgroup-list0 t, [/ v, R- u- H# Z
# nova secgroup-list-rules default
+ F' f- w2 y" }) r' ?# Z看图3 ~  K$ l5 w) z: ~* P7 @( W4 A2 Y
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg : ]6 s  t: o  ^' R9 E
: ?( F) Z+ h3 A: h- K
看看结果
5 j- Z  m# H' X) @ 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg 5 f5 M) \5 y( @
ssh访问vm
5 l2 c: m0 W( G% b# \6 }4 _9 Y+ w9 k9 d# }  V
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
' B6 ]( L0 V' V* P) _# C) R0 O# `6 m7 Z: i" ]( ^
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg
% f  z0 C  z/ L  U3 ]/ \( U( Y" b  U8 f; K
有用的命令( S6 ^! P4 r% b3 b2 w# \
查看keypair
, ]5 i/ l' u2 @% Y  Xnova keypair-list
  m" Q) u. g- A4 \* s删除keypair2 a- L# I1 k& D( @7 t( R
nova keypair-delete9 L  L' @3 O% z4 u1 B" I0 j8 \
查看vm. i; d& z' Z3 @8 O
nova list
/ i& v! ]# e. \8 |& ^" |$ {删除vm,vm的ID) R" v( x% v1 I# {5 p
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343$ e0 h! ~# F% F3 ?( s9 Q- @9 \* R& _1 i

3 @- l4 t% U* v# u
+ I) w$ H3 c, L9 X- k5 _七:安装和配置Dashbaord/ P9 Y( d! }; V) F2 h7 W5 M
1:安装dashbaord" d+ e: u& v: i! v
apt-get install libapache2-mod-wsgi openstack-dashboard
- L# S; o, U1 _+ _) P! @1 h) q3 z
6 W3 Q( F: i; _6 g: l: }3 s
, i8 Y5 r* z; |这个时候,你就可以登录dashboard
# ^- F6 |- J! j) B3 g0 Chttp://10.42.0.6
% e) I' m! D7 xuser:admin2 x* K% K0 N& l; q, }* J, V, C- T) z
pass:hastexo+ }- [. Z4 A' v5 \+ W) b7 Q: ?
7 l" y. m. g4 F: C8 r8 f# [
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg + M% I2 v0 i! a3 H; F
3 r. A( Z9 q% ]  F7 v
6982e5198618367ab223fa612e738bd4b21ce53c.jpg
+ ]# g+ H' c( R3 y/ T

! X2 t% D. ]2 H7 c6 l, b, S( a4 N0 @- G* }! P
0 T" A2 X2 @* ^, q8 s1 k: o+ D
5:理解project和user关系
+ |- z& C2 ]  N上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。
$ |% o. U: l, C! h# V你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。- Q: A% H. a4 @9 J; U, S/ p. G1 i5 u
我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行
* R3 O' b5 q: [( d: x( e 6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg
% o4 n; ?( ]8 N) |7 Z, z! b; W% k
3 c# L% d2 x  ^' R  I0 j% E5 M" Z
八:euca2ools 工作
' ^7 o0 i: Y$ a# \( Z: Geuca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。1 M( R3 U8 z9 ]8 K
1:安装euca2ools工具. k+ Z3 l( R4 H( ?$ N
apt-get install -y euca2ools
+ b! P: `8 G2 ?' C  G& |2:设置环境变量
" s" s! i: B$ Mexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')7 {+ u$ |0 ~, F7 d( s
export CREDS=$(keystone ec2-credentials-create)
9 e9 }" N; Z- O- e8 k( [3 Jexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }'), z+ Z0 z: A3 O3 Z) ?/ h# G& @* Q
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')  p  P/ e. y+ G) P$ T- }! @4 ]
3:运行命令) K; z" A# e" A! P
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list
+ p2 i* X0 L. K( F/ C/ Y现在Essex对Euca的工具支持应该比Diablo好很多。
3 U/ L) A: [7 d' n1 g( U 96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg 6 S# S1 J( X4 c3 \) @: W+ J
列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances
6 h% j. D" ]; U* B* A
4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg . k- O; y. o# E, r  E: w- r5 @. |

4 h& ?1 s9 ~6 t2 [6 k8 X
1 P9 k. n9 `! h4 Q! K' tAppendix A:  使用nova-volume
( [( X; J* h) W0 FEssex Dashboard可以管理nova-volume。有两种办法来实现
9 J% O8 E. W3 U/ M+ P% Q默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。) F/ D: e4 Z  V% b1 @3 D

$ C6 D/ o; @; L0 M4 I, g. n9 r1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,1 c" {! t6 {# u/ M. y9 c0 n
新建一个文件来做 LVM:
1 m+ H3 o% B$ r$ m: d% [DD一个设备
/ J( }! t+ h  }7 B# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0; j5 Q0 z* x/ C% k# U
加载一个设备3 @8 h) L! S2 E4 A: n5 M3 V
# losetup -f nova-volumes.img3 F2 m% n: q* f0 {+ K' m+ X
查看加载情况
% ^% ]3 S: I+ x% K  k# losetup -a5 ?5 ?  q# r" E  O* V7 x( P' a
/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)# e6 N0 U- T# b  L
创建一个nova-volume的卷( ?9 E5 w8 r% g* G: [7 y
# vgcreate nova-volumes /dev/loop0
2 I/ P  u& e. K, a. l  No physical volume label read from /dev/loop0- y* N9 I  x% [4 m1 c
  Physical volume "/dev/loop0" successfully created8 s/ E7 E$ v3 [) {; n) `
  Volume group "nova-volumes" successfully created
2 ~, G, Y. I* P- l查看卷
: _$ `( U( a+ N; s1 L- p#vgdisplay& B5 t2 m/ {0 M. p% }& g
就可以看到创建好的nova-volume。
, \& q9 m, k1 f创建一个5G的卷,名字为volume1
3 W0 U+ H, D5 l: e! @4 P! N. K4 enova volume-create --display_name "volume1" 5
- K* z1 d5 i/ J! g创建完后,可以
$ {0 l- u4 D% F" U/ W  Xnova volume-list" T: |* Q5 a+ e; f
08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
& H9 e2 k. @3 k

$ w! P' l( s1 Z; L5 R* u* d) |创建的过程非常慢,看status完成后,才能attach。
( c5 D6 l: ]; r5 L/ T+ M5 H如果希望删除创建的volume,目前我知道的就只能通过
$ |+ n/ h5 g7 Q( b' eeuca-describe-volumes9 m( M8 F5 d8 _& @4 n! [
euca-delete-volume vol-00000001, `1 i9 i7 F  e- D2 V1 m1 n7 l
" G2 G$ L! j0 L2 A9 C, n
把卷添加给虚拟机,1,表示ID号
/ K0 T( T: ]  i) x5 c5 f- {nova volume-attach superfrobnicator 1 /dev/vdb6 R0 s7 e& ]) C5 y1 w1 ?7 G

$ I+ \  @/ Q4 y4 O0 ] 2:单独一块盘; g1 v; [& g% ^( r+ ]
# pvcreate /dev/sdb1
/ V' H8 B3 Y" ^4 \8 X  V# pvdisplay5 }8 K( r# {# d; m9 J# g  J
#vgcreate nova-volumes /dev/sdb1
) m  u" B' _/ U! E0 i4 n# vgdisplay+ S9 X2 X. V# j  K6 h5 k+ p
这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。' C8 J) z& `8 J9 N) Y3 X9 E

" a2 G: }# T* g) E- E4 D! r  @
0 C" ~5 d. t, }/ g& C参考下面文档
; B; L" ^$ `7 t/ e' Nhttp://www.vpsee.com/2011/09/openstack-nova-storage-management/7 n! h% [& p$ n1 X. i8 s1 K
http://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html
( Q* P) I% I6 w7 d9 i4 g4 T1 ~lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html( B$ p8 C: v5 N' ^
6 _/ @( \* F$ V2 R" V" V
3 A& e7 M4 D7 l# Y& z! L

% f  y; H* M* N6 d! B
; z, s) y8 L1 }  t$ K; Z: r0 }% z, C2 S; I2 Z
Appendix C: Dashboard 创建vm,允许ping,ssh登录4 N- O7 Z* l: P' x
对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。& J1 E' T$ T$ i# P
不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。4 Y! h% f8 E/ d1 w. T6 t
从ubuntu下载的image,只能用密钥登录,不能用密码登录。
& H6 S$ w5 f" e% H$ I4 F# X0 ]1:设置安全组 Security group2 r! R- r& P% B, @7 T, {( s
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。, m% Z2 o: n# @( F9 D3 G
为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。  d- n# q. f1 }% l4 m
默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
- V8 z- f, ?  H* Q 9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg   F5 h+ o, u  ~/ [4 s
- c0 t5 i5 E$ e% \
& E0 I' y5 }( d

% P/ I* a, ^, ?9 a8 |% g4 G2:创建密钥6 T: W7 C( J% S
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。9 f- ~; }7 e+ K# |
这个时候,你如果有私钥,就可以直接登录。* X( I+ Z- v) N: c5 z. U

# E+ J9 ~5 j4 E3 u, u! i 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
% F. q( F- j3 K  _. e. T下载私钥) W2 L) {; h: D. {
点击create keypair,就会提示你下载私钥。私钥是pem后缀。
0 C, a! e9 G4 J 7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg - m, Y# C* V. h4 R. r" E

, B! }! _. L* q1 P% {# w" V7 E, D# F7 b: E/ H7 B6 b* n& l. Y
那么你就参考这个文档,就可以。/ ]* y/ W% L; _$ w' t3 U( K
3:创建vm
; w# |7 S: L) s创建vm的时候,你会选择keypair,安全组。
0 B! T: M2 [+ C. ~ 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg 3 i+ a$ k4 h, N  T6 k9 [$ k
- c1 h3 @7 M5 g+ l7 L

' M4 ?( n) I& g" `: H0 B 46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
# U- d; M% \" q4 U2 C6 h9 I8 d4 A8 ]. g/ v
创建完成后,得到其实是一个内网规定IP
3 d% l' l$ S$ w+ ~: ? e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg
$ N- U+ @* W. S8 g* G( q' @
3 Y2 s3 ~9 ]* _6 ?
4:floating IP: |% s  f! W( J% @" Q
给虚拟机分配一个 floating IP,可以理解成是公网的IP/ U( K* [! @% S
8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
4 k8 m) g" @4 U) S1 k分配完

2 l( o, ^5 z# t+ Z& [! i 60d25790f603738df2568f99b31bb051f919ec45.jpg . L, C7 k1 p7 g" {
关联vm
+ S/ d/ @- W4 c0 o& D
af15baefce1b9d161e8719daf3deb48f8d546419.jpg
& E( v( F3 H$ ]
0 H8 k* H2 {% ]9 E
0 Z; }( t% t3 g4 [) ?% s2 Z) e5 s

, B% R: f: f6 a. j 看看结果
. A0 e* Z* w9 [1 e; ~. k: N0 Z. \ 3c0efa1190ef76c647bf78909d16fdfaae516774.jpg
) Y# q: c4 @+ @4 u4 O. J
  l* k$ K  M$ U5 p2 E
5:ssh 访问vm
& _8 ?) F& [# w0 x4 m5 y这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。
$ d3 k( j0 N3 K对于ubuntu提供的image,ssh的用户名是:ubuntu,& ~, M1 M; a4 q$ c7 W  j1 H; D
SecureCRT 6.x版本
% [: `& Y6 E+ {9 [4 l7 l& H- }对于6.x版本,已经可以直接使用pem后缀的密钥, Y" E4 Q' a2 i5 ]% b& n- [: {# h. L2 r

: n2 O6 W. G" l e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg ) z/ |/ `& w% C3 _# Y
0 T4 T0 j" E- E* M. G8 Z
putty登录
5 p' F, e- O" |% B对于putty,需要对密钥进行转换。4 X. P+ z5 G) g! X6 O4 p
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html& W4 V: ?: x1 Z: W% e* x; v
到官方网站下载:PuTTYgen这个工具
) R1 ]: Y0 e8 g; sPUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以/ P8 Z# ?* ?( \! {7 J, ?! {
67da7663053a03280d33fa5f.jpg
/ i  C" t1 y- y) h+ e
0 p! X7 d8 M7 E. h% A3 ]/ _  p7 m
存放到本地。
) N: ^! ^( J) ?9 U8 ~6 |设置putty使用密钥
+ C4 w. S" q1 p- H' y- k 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg ) z  b- ?1 g2 R" M

0 A" O7 u- B, j% a d520caca7bcb0a4664b806826b63f6246960afc3.jpg
8 C8 n! \) P$ `$ B

& E: H$ G1 i* x: P; z. q+ w
* t! h# W* F9 v' C0 U* N, L+ Wlinux客户端ssh登录vm
5 j7 u) _1 ~# Q如果你是linux服务器上,你可以上传密钥到服务器上
1 z( a2 ?9 [1 nssh -i key_for_openstack.pem ubuntu@192.168.22.341 u7 `) ^1 h+ S/ B/ J
就可以直接登录虚拟机。
- ?* L! I3 e7 Z3 J) U& G' U) p. N( b5 N$ ~
0 ~2 A5 t( s5 t9 S: d
Appendix D:FAQ* H! S# w$ `2 [- @2 k% r1 j
1:我登录服务器后,命令都无法运行. M$ }; _5 c/ F) \, l$ v( r
~# nova image-list
% p. e2 j/ A! u% A6 A# d8 ~% HERROR: You must provide a username via either --os_username or env[OS_USERNAME]+ W* S1 `" o8 n+ e
4 F6 }1 h& u% c. x# k5 S
如何解决。
7 a+ d7 \9 Z. G
这个问题,其实还是你的环境变量导致的。
7 o9 ^$ m3 r. m; L. Z" p9 P/ Oexport OS_TENANT_NAME=admin
9 u! N, ^0 M0 d& J1 g% t' Cexport OS_USERNAME=admin
; l( X* R  }& bexport OS_PASSWORD=hastexo* d: O: o8 x1 y+ Q  e6 w
export OS_AUTH_URL="http://localhost:5000/v2.0/"% s& W4 M, u9 u1 _' D
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
6 V& y* l2 e- w& ~7 D7 |export CREDS=$(keystone ec2-credentials-create)
# L# \' ]7 T) j6 Lexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')3 O2 P$ O# u! \0 |
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。
; Y  ]. Q. B  y: m0 Y' V如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。2 ]7 h- V2 |6 l6 E
http://bbs.chinaunix.net/thread-1958386-1-1.html
% v. ]" f& f- C: m; i( I' A% M1 Z3 u) N. a
root@node6:~# nova image-list
6 H; k+ R7 b& B; n6 M* p+--------------------------------------+-----------------------------+--------+--------+
" P8 c. v' B& S|                  ID                  |             Name            | Status | Server |2 l3 A% d2 `- B$ n5 x. P8 G
+--------------------------------------+-----------------------------+--------+--------+* _( U$ t0 ?+ J
| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |4 R- F' a6 G6 u4 [
+--------------------------------------+-----------------------------+--------+--------+
6 x3 K( `. p2 M) ?+ e8 L6 w4 t8 G( l" [
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg 6 @3 R( K, U5 d% v

8 R) U# Y. Q# B1 k8 C6 K 2:如何用curl去测试keystone& _" q* ?, L4 [3 N' n; \0 W9 z1 `
替换红色部分,就可以了
/ X: j% k$ I$ J% a! [& Y# G% T# 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
: t& \& X- R- p: H7 |
6 F3 S( C4 V+ ~( B7 q; n  j$ F
$ W% p4 @& |: j博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb
; ]* }1 N3 x8 @9 i
0 g8 c* z7 t  l8 W* _4 h
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:
$ O6 E# a6 ]3 ^0 l" |Traceback (most recent call last):  File "/usr/bin/glance-manage", line 122, in <module>    main()............................  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__    super(Connection, self).__init__(*args, **kwargs2)sqlalchemy.exc.OperationalError: (OperationalError) (1045, "Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)") None None/ S* g9 v# D$ A( R# k9 _. K6 t
6 a7 N6 ]! w3 D' F) v& P1 H; r
解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。
  I( w( r/ _4 N7 x8 T           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'' w: w' Q: k/ a2 R
注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
: i9 u& U3 [' r4 mexport OS_TENANT_NAME=admin, ^5 d4 O3 B$ x- {3 @9 G& Y  _
export OS_USERNAME=admin2 O1 d4 }; Z. w
export OS_PASSWORD=hastexo
2 `7 A2 M. v( C' y/ e* t1 m+ Dexport OS_AUTH_URL="http://localhost:5000/v2.0/". ], g# ^; Y% q- l1 J
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')8 s& Q. ^: H' n
export CREDS=$(keystone ec2-credentials-create)$ m2 s2 e1 @) o8 v
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
5 ?  Z; t! B: ?' U) ]3 vexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }'); _) {0 p- z' q! \6 l7 C" n3 J3 Y  b

4 u+ B5 d5 T$ |3 o4 S4 W) @现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑 $ \. T% y) ~! o/ k3 p
, d" k' D* b. R9 `7 Q6 C2 i
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:
/ O: x0 Y! G: N+ I# K3 h* v$ V4 ~- G  Z8 h& o' v0 ~6 X
SSH Secure Shell Client工具密钥登录linux:9 l/ D+ D% A# o/ z) I
- O( n3 a" L; D  i1 _0 p
http://server.chinabyte.com/365/8835865.shtml
5 h2 \/ ^) l3 Q7 r( |( m% l* D; A( \! d
1 V2 o; D4 w! Q5 p% _7 n6 @
SSH Secure Shell Client用public key认证登录6 E7 G0 ?( P) Z! K2 k. E0 D
http://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html4 j1 N/ `6 C) o! o1 \
; E2 x8 o& \4 ^" n" G: u
由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:
3 R8 m* U0 A/ m, d# Q2 p

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

2 u( ~5 M: G* }+ X3 A) T9 a- g5 t4 p  B# j8 V6 |  ~
没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。
; [0 e1 `, b) m& t1 Bvi /etc/ssh/sshd_config
' x+ C) Y0 w0 g5 B将PasswordAuthentication no改为yes0 `( P% m4 A0 `
service ssh restart% L; ?$ C# M# K3 e. K* |
% e) \1 j; g" V% q
这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。
7 q2 m" k6 J8 Z2 l+ X8 w' p1 x$ g安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版
% R2 V8 S1 k0 k/ k, k
3 E4 X8 @2 m+ I* p虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题$ |7 X2 Q2 i, {3 |8 d* l
6 ?1 ]8 p$ l! w/ m, f  v
1. 在vmware workstation上的虚拟机需要修改 *.vmx文件9 m5 o3 g) c6 l1 Y
vcpu.hotadd = "TRUE"
, x6 s  d8 E6 P9 u: L) k( S. o变更为
8 ]/ c7 @# N5 }  _- Wvcpu.hotadd = "FALSE", v0 D( [  E' c5 z7 |( \& d! e
重新启动机器,如果执行命令:
  B- \$ a* c7 M5 [virsh
) _+ Z& w5 w* m& c8 j进入控制台就没有问题了。. o0 w9 z+ t( ~  {1 r) x& I* V9 H
2. 修改nova配置文件/etc/nova/nova.conf$ ?; z1 O' d) X9 F0 ?2 [, u8 l  V
#--libvirt_type=kvm
; b( x" [$ V, L+ u/ @更改为qemu
( D8 u% W% s! |& s- g--libvirt_type=qemu
  K1 J7 K/ X# p% R3. 修改/etc/nova/nova-compute.conf$ \, c" M3 U5 z7 I
--libvirt_type=qemu
. o5 B% W' p+ ]' W+ ]& t4. 重新启动nova-compute,如果libvirt报错9 N& j+ [. T$ Z+ t
/var/log/libvirt/libvirtd.log
! H- G, V" b. GCannot find 'pm-is-supported' in path: No such file or directory6 o4 F- W/ P, Q3 _  |6 Y( g6 o2 h
报错后需要安装) ^1 f3 Q* ?2 M) @* g. _
apt-get install pm-utils
, p5 L8 T6 \9 l' `) j5. 重启libvirt和nova-compute就可以了
: p9 p* T8 M! f1 V+ Gservice libvirt-bin restart/ {# x. ^* [5 j" X1 F1 g7 r& m
service nova-compute restart1 h4 F" h8 M; X' r/ w
$ d; Y5 @7 C, V( Q1 R. R
6. 执行 nova-manage service list" m' ^" N5 F) \# r- Z
state都是笑脸的话,恭喜你,搞定了:->
/ f' t2 Q; \, F* u, J$ f0 c& @& N2 Q) R: 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人群已满)

返回顶部