锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑
1 S+ u. `; S3 P- ^2 c; t) _
7 h) p5 E* ]. f3 r8 G9 i; |之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。
- o* m$ x* m% g+ p# K- b6 \- r1 L- V) c9 u$ V
原文如下:7 H0 X; A* T! K+ z

7 }# ^& k  Q: d" {Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex
; j3 l7 L: q! F  H4 Y, T) L' M这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。
  L9 h' ]; O5 X# `原文" ?3 l+ x% b- @$ I/ u
我下面的步骤,也就全部参考原文。
; Y; e: V  `% h! d3月27日更新:基本完成文档内容
& h/ w: N. d7 H2 i8 y" u" p4月5日更新:重新安装第三次,修改了文档一下小错误。
! D" [* Q0 i; \0 s/ H4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖
* h4 ~, u3 B$ _  b6 |, X0 e4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
  J+ c  E. I5 G' H5 \# G7 U" K# r+ T4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。
* B) U0 l( D; B) J* y! \ 4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。
7 D+ d5 c0 m3 }4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
  M0 a; R1 b+ j( H$ L/ i# w 5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。. k2 d. s+ ^# @8 ~# w9 |, d5 I
5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。
# J1 a5 x) M. n. Y: [7 O
& {+ I: q1 E. `硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。
/ I! \3 q. o, F; _7 t/ z+ U下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
% j4 j9 ~$ Y% R2 a& U$ c为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
1 I. D3 Z/ Z! A目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。9 A; `# j# j1 k; @. N8 `

5 D* g* U8 k* k0 v4 y一:准备系统
0 N% B' f  @# Z' y: g( K, U4 _# D1:下载ubuntu 12.04. 服务器版本) @! F( {. {; V! E+ g
ubuntu12.04正式版本,需要4月26号发布,目前是beta2' _3 Y2 x/ g" W* Z1 E8 O
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
7 K; \  n5 W0 D# j* {  `
$ y8 v/ l3 p- X- X. b& H2:安装OS: A( @4 Y* T! I/ s* N, {' L
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。4 d0 E: v0 ?. `: ?2 }# X3 c+ b
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。
  A% P* w) O. Q7 J( Y( I2 v装完系统后。2 }0 u( Q6 j- i% }6 h5 B, X
apt-get update8 ~6 G) c# n  \0 S* |4 Y& P  G
apt-get upgrade+ C" L6 K$ d, N; R" l+ h) A
更新源里的包,更新系统。确保你装的是最新版本的包。0 v4 W( n# S9 X. z- N

8 y; q4 y) y' {$ _1 O3:设置root权限# _6 v6 I8 a* `- v
为了简单,全部都是用root来运行。
  P& D, g: ~2 M9 i) n' Osudo passwd- H6 z& ?+ U' W
就可以给root设置一个密码。直接用root运行。
3 F# e( l, J  m$ I. e4:设置网络! e1 Q4 ^. W' `. k5 j8 d5 d
我的网络设置和文档是完全一样。这样也减少错误的几率。
( ~6 b' G1 o- t7 o8 l% ]root@node6:~# cat /etc/network/interfaces
7 i$ F% V7 U( U9 N" K( j# This file describes the network interfaces available on your system
) @2 G& }! C: \0 G% i# and how to activate them. For more information, see interfaces(5).
# @4 S' \2 C# q1 G
; i7 t3 g2 n3 c2 Y# The loopback network interface
- x) v- A+ S3 R1 u" Z* gauto lo( C& Y# @& b2 O$ v
iface lo inet loopback
: \) v* ]# n, D) E1 R$ v) c: t$ ?
% }" P* U) N' W0 p# The primary network interface
1 {: b0 s& n* t: fauto eth0
/ b1 {( d( W! q( {; {/ E2 Giface eth0 inet static
' o0 _! E: {( y/ I8 w* p8 G        address 10.42.0.6
4 X& o3 y2 b9 J: E        netmask 255.255.255.0( F/ p3 w7 k# k7 \
        network 10.42.0.0
/ b' J+ i6 B6 U/ y6 y" E        broadcast 10.42.0.255
5 w+ M: A+ u% O- P" w        gateway 10.42.0.1; Z+ S/ E1 {8 L# J2 W, x
        # dns-* options are implemented by the resolvconf package, if installed
" s: c$ ?& S+ o4 M8 h* C* z2 X        dns-nameservers 114.114.114.114
5 p! G( ]; r5 L7 G% g        dns-search test.com3 O6 F) Z, j# C0 m3 ?

) h3 `# _; V4 ~. w2 `auto eth1/ t, u) E+ t8 ~% h
iface eth1 inet static8 k! Q7 W2 ]9 Y8 {% x+ F9 c
address 192.168.22.1
/ R/ V8 Y% ?% Q  S' x8 `1 U) K% xnetwork 192.168.22.0/ y- `, x! @# e
netmask 255.255.255.0
  T, o( ?8 z- X5 lbroadcast 192.168.22.255
% J! `, _; y% d2 J) H3 c/ Z2 I! f" |: W3 z
重启网络,让修改生效
+ X  e9 X8 w+ r- ?/etc/init.d/networking restart  l8 b% D2 o2 B- c
5:安装bridge
; E4 U" ~7 X* |5 U1 n) qapt-get install bridge-utils( r" B4 ?+ n; P/ [2 f% Z# ^2 h; x
重启网络或者重启一下机器都可以
- }+ f$ F, o- Q$ `. N/etc/init.d/networking restart8 {% b5 c/ ^5 E; l$ j
6:设置NTP
! Q) n% k; g8 a/ D, r! vapt-get install ntp
0 A3 M/ p: M0 I3 `* N. t' f$ D4 b  E) D2 H! |' b
编辑 /etc/ntp.conf 在末尾添加下面3行# G  M; c8 R8 l. l- j
; u9 d5 }$ B1 W$ c
server ntp.ubuntu.com iburst. _; [& @' h- Q" K
server 127.127.1.0
! ^4 M2 c- i' ~% }9 z+ t$ @fudge 127.127.1.0 stratum 10
+ g* `8 F! J$ c& `1 N
. B# l) g$ k+ M' R重启服务
/ C  x2 `3 P9 U( dservice ntp restart3 S; r) i, Y, s
7:设置Iscsi
# S) M+ r5 w: oapt-get install tgt; C. Q  @* c- L
重启服务
- q1 U" B& T, V0 O% eservice tgt start* r( `, _3 p7 f  O2 G/ S
安装iscsi客户端
- R9 ~  Y5 c+ s4 qapt-get install open-iscsi open-iscsi-utils5 ^# s9 d& e/ F3 ]  [
8:安装rabbitmq
" K' L3 L( A2 A3 Q, y& L3 m' n; tapt-get install rabbitmq-server memcached python-memcache0 m4 N5 D2 x0 j
apt-get install kvm libvirt-bin7 h0 b; t9 m/ r. V$ W# k5 M

2 i8 ~# S' q  y( y二:安装mysql和创建相关数据库
/ ~1 k7 S" A1 k7 G' ~Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。  v+ T/ _! E" ~: h6 E
1:安装mysql0 D- _7 {& K  N: M9 j, k
过程中,会提示你输入root密码。( m7 Y( Q5 a" e% V
apt-get install -y mysql-server python-mysqldb
4 C$ ?: K  N2 n0 x) u2 n, ]让mysql支持外部访问
6 ^" [* ^; Y  ~7 `' [sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  ) a0 t$ p; z% q$ V9 ?. U$ M
重启服务
6 Z, L8 h, f7 \/ }0 oservice mysql restart' \8 `* G6 y/ t0 C) m! C5 H
2:安装phpmyadmin (可选)0 x! E0 M/ {- N. n4 D
为了方便,可以把phpmyadmin装上,可以比较方便管理数据库* a# Q8 [3 m8 E8 F. A
apt-get install phpmyadmin
6 }* d% \. p3 s( X  v安装的时候,第一个提示是让你输入root的密码。9 e9 }* u7 r& A! R& _1 R% f
3:创建数据库
* b+ ~& ~* s- [" G. g( L" H$ Vnova数据库,   管理员:novadbadmin,密码是:dieD9Mie. r: A3 [- C, i  U! m; x  n! \3 A
glance数据库,管理员:glancedbadmin,密码是:ohC3teiv* A% ^  R  z0 M% `8 B
如果你修改密码,后面很多配置都需要相应更改。3 z6 o" q% a; c9 k' ?
mysql -uroot -p+ v3 z. I. {6 K! K9 p1 ?
CREATE DATABASE nova;
: \( W% o+ ]+ m2 c" X. L$ T3 uGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
/ A- [$ H, t! I( z' HCREATE DATABASE glance;% k  y1 E+ i! X. x7 i
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
) @1 l3 ?! t7 p6 n1 ]+ a, w4 Wquit
1 r, U+ G+ w! b% N0 {  d
) z& o8 X+ R% b0 `- d2 n. Q: F; u; i) h# R6 T! c# ^) r
三:安装和配置keystone( v9 O! b- x" {! V9 `# P( G
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。5 M# l/ l% R# z# O8 P" j
1:安装keystone
" |3 H8 ?2 V. T) r; Aapt-get install keystone python-keystone python-keystoneclient# T4 F( q8 j5 s
2:配置keystone
0 a) z9 N# |* l) K0 I需要修改 /etc/keystone/keystone.conf 两个地方
; N# L. c' b$ K; t6 a, H- B默认定义的token就是ADMIN,我使用hastexo作为token1 n6 j  j: q: S0 x

$ I3 m1 z6 w9 e% h8 t; J$ C. P[DEFAULT]5 _% n- [: x, ]
bind_host = 0.0.0.0& m- m" J4 F0 d- j6 t3 Q( w  e
public_port = 5000
4 ]# P' K9 k. kadmin_port = 35357: d* z9 O8 j' {; ~# @
#admin_token = ADMIN  @$ S- z) f7 t3 q, y! \3 [4 f* K
admin_token =hastexo另外一个地方是# ^( _, y9 i8 P2 s
[catalog]# g) y. p6 x! S# b
#driver = keystone.catalog.backends.sql.Catalog
' p# f5 V2 \& ^# Q7 e: S0 xdriver = keystone.catalog.backends.templated.TemplatedCatalog  c( \! h  U8 P  i3 d1 O
template_file = /etc/keystone/default_catalog.templates/ m% Q$ l  U) q, E0 `
6 e& v9 R. A# n3 ?
重启服务
! h' t$ p4 w" z; x4 G- T$ bservice keystone restart
9 t: \3 ?. V  H$ [3: 导入数据
$ e# j  l& p& q" O这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。' K. Y! G4 n7 M! g+ n, l# V5 U
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt+ \( c; Z6 g2 Y' [
下载脚本# q/ O9 X; x4 I* I6 |
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
2 Y  p( g* E0 ^& D$ K5 Smv keystone_data.sh_.txt keystone_data.sh
  v5 k5 n/ H' F" C: V9 m' j1 r- `& S1 ]7 s, }0 f5 u3 [7 p: f
让脚本可运行
2 e0 u0 R4 V& T6 x* b: G) ~: t* Ichmod +x keystone_data.sh3 \2 [" s8 }3 J- n% {! N, u# d
运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
6 M% }! y  y6 H" g第一个是登录dashboard的admin的密码
0 v- e+ i. a8 `1 g- n9 x. v第二个就是keystone的token
$ V9 G9 ^+ K2 T8 k  i5 f#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
1 P$ P) ^% M, z& c; J3 P9 UADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
6 I% D( Q; {! jSERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
( w% ~" ^! n- m0 k#export SERVICE_TOKEN="hastexo") }, P- W; Z* ^( T6 P
export SERVICE_TOKEN="Centrin"
7 T+ s0 Q5 x, D6 @" i5 t7 lexport SERVICE_ENDPOINT="http://localhost:35357/v2.0"
1 \) i2 Z& U9 B- K+ SSERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}' C) m7 r* q% b; t# F. x
& h! K" C$ @3 e) h" k
! y% P# ?; H& t/ V1 b* G, d
./keystone_data.sh6 r! e# G& R9 e7 B
顺利运行,会什么都没有输出
: a7 T- _3 |1 X9 D% l' }

: m" H5 r9 _9 }7 a

keystone_data.sh 脚本

keystone_data.sh 脚本
+ q( J/ c; P- |3 ~" F3 ]0 w/ [9 @

- y1 r7 X, b$ W% B$ H0 {) l8 ?* S+ L" C. a5 X; Q# L
#echo $?
3 ~2 P$ o  T) C) `; |下面会输出0 ,表示正常。你就别再运行脚本
2 V6 u) s# [% g; R7 N  l2 r: @( skeystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
# [7 Y0 }; f9 g3 D# X; Z* v& V- f: E看到这些,就说明keystone安装正常。
5 i3 G4 J; D" F& [, E, w
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin
6 W3 J% O- h7 J5 x7 k$ X- O" vexport OS_USERNAME=admin
3 d* T8 {9 \/ A& d8 d0 A7 cexport OS_PASSWORD=hastexo
8 |6 g& I$ j3 Q- F0 M  s, ~export OS_AUTH_URL="http://localhost:5000/v2.0/"( j! m  v5 v! v0 o/ h# S
检查检查  e7 w1 C/ O& a$ g
# export | grep OS_
: N! S, {' [- a' G& ~# `! kdeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"2 H! Q, G0 G6 D7 D- V: h; m* i7 k7 K
declare -x OS_PASSWORD="hastexo"
0 j) \$ C! e9 b, k% rdeclare -x OS_TENANT_NAME="admin"1 h$ u; y& F; {- T, b
declare -x OS_USERNAME="admin"* W/ |+ }$ V1 D, \. E) V3 a2 k
这个时候,直接运行' T0 g  \8 S" J
root@node6:~# keystone user-list
9 N  O3 ~6 c) a+ i; r+----------------------------------+---------+--------------------+--------+
. ~# t' S; U6 d4 K|                id                | enabled |       email        |  name  |
% g8 O; V& R" N' x% ^4 @3 T+----------------------------------+---------+--------------------+--------+
5 R& k' X- {: }9 d  X% c| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |7 p* H3 t! {: w7 u+ j/ A6 w
| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |' l2 \4 h: Y! O! y1 D( ~1 q3 _- B( w
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |
# |) z9 d2 }2 V( a* l. r- [4 o| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
& M, Q" G! O* c* U- o+----------------------------------+---------+--------------------+--------+
! S* e) w% ~/ X' {0 b4 U5 b, f- s' O- y( u( R! T

3 T  f; Y( D1 Z" T
% E( |# a  |$ g4 V# G. K四:安装和配置glance
" A, V* d# |* _0 R5 P! s; D1:安装软件
! j. D0 M. C0 Z) yapt-get install glance glance-api glance-client glance-common glance-registry python-glance! ~& k* s+ M: M7 w/ C
2:配置/etc/glance/glance-api-paste.ini & Q  {3 e5 {- y
修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
& y8 l. E5 U5 v5 Y; q* nadmin_tenant_name = %SERVICE_TENANT_NAME%4 _/ T6 p% ]( h! K% V3 q: h  ^
admin_user = %SERVICE_USER%7 F  C# r; }6 {% r$ w3 H. c9 W
admin_password = %SERVICE_PASSWORD%改成
  x9 h; c6 y3 n( }4 dadmin_tenant_name = admin$ z1 y$ {- v6 v' [0 b
admin_user = admin
" u& E% O) R$ M7 c$ R) xadmin_password = hastexo% m. r4 k3 `6 O
9 I) f5 n* P' W9 H! T
3:设置 /etc/glance/glance-registry-paste.ini4 T' ~. ?3 c( Z& ]$ K* g) M; V# A
也是修改文件最后3行,和上面是一样的。* K1 V0 o) ]9 h
admin_tenant_name = %SERVICE_TENANT_NAME%
4 B0 x3 S; u3 w" r# B# {9 p0 Uadmin_user = %SERVICE_USER%, {  f7 u1 d, }  r  p
admin_password = %SERVICE_PASSWORD%3 e& x  F, N1 @' W. s
改成
; g/ |8 e, r# g# sadmin_tenant_name = admin. b% y  g: `$ ^" h- S  e
admin_user = admin
& w+ {  n2 M# y& oadmin_password = hastexo7 p+ i# f5 q( ~. j; d2 s, B
4:配置/etc/glance/glance-registry.conf2 b% W4 d: m) W( J
修改8 u5 q/ z9 ]# _2 s
#sql_connection = sqlite:////var/lib/glance/glance.sqlite
) P) h4 ^4 N2 x. N3 V, b6 e0 D" |sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance
7 P3 i& N- Q$ A9 \+ S, `6 H" v+ M- t: D9 O$ A
6 W" K: U& L# _2 N
在末尾添加两行
* N" K" d- t% k3 C6 w[paste_deploy]9 ~* `& H$ f7 z
flavor = keystone

/ n' V/ J9 L* m& D2 `7 t" z+ F0 }6 q- ~- P6 P
5:配置/etc/glance/glance-api.conf
. U2 X3 L) n  W8 n, X在末尾添加两行* V+ Y# I" `/ P: ]7 a
[paste_deploy]  R+ [, k( l/ p9 s9 B$ Q: q9 c
flavor = keystone

7 }4 Z2 C+ R* i0 z5 C  Y. p
. ^5 K6 [* o' q5 F2 T) W6:同步数据库
2 z8 j" Y7 |8 z目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
$ r/ ]' G$ T7 S5 Y  g) B# glance-manage version_control 0& Y6 f; |; F/ M, E3 Y
# glance-manage db_sync          9 {& X8 U# |9 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.& t7 b+ o- g) z5 E# B$ o3 d
  useexisting=True)
- E% p2 s( d( M  l$ l3 u* y重启服务" A  C/ X% ~, K2 b, W
# service glance-api restart && service glance-registry restart
% ~0 G* N7 D; n- b7 n, f: c: d* oglance-api stop/waiting% x8 q. }2 @$ l/ g" k- ^
glance-api start/running, process 13321
3 w" `4 @3 Q- R9 Y* a2 L8 s# x8 \stop: Unknown instance:
# H  z* E* ?9 ]0 X/ c" k, Iglance-registry start/running, process 13327! b) P# E1 l4 g/ W) `- a

: Q" R6 ]# G. u. g0 i3 l3 g+ _. N$ k/ m$ H2 H9 P
7:验证glance服务是否正常
9 r# u! F! d( F) E* [- g下面的步骤照做就可以,具体原理可以看英文
+ W3 _9 d& M- |  ^8 b  G3 C+ eexport OS_TENANT_NAME=admin
3 u4 X4 Z: A' ]0 R" s# \& r) Hexport OS_USERNAME=admin6 ~) u" L/ c: \7 @9 }2 n- ]8 F
export OS_PASSWORD=hastexo8 J' p3 @- W5 q4 X; B4 f1 }3 I
export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查$ S; ^8 v6 D" p# s2 p7 I* H
# export | grep OS_" U2 k7 V4 g; q
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
  n' e. x# ~4 G% mdeclare -x OS_PASSWORD="hastexo"
- T5 R/ n) ~$ Ndeclare -x OS_TENANT_NAME="admin"
# M% N* \; a" N4 l# J& R. y5 _declare -x OS_USERNAME="admin"8 ?  K8 a3 v/ \* E
运行; P5 \) [4 C' [" q4 i
glance index+ Q; d, ^2 W$ r; k0 b/ Q8 l4 G( {
没有任何的输出。表示正常。
8 p6 g4 L/ u/ T; E  u0 T#echo $?
/ U% k- J# X3 O, x# b下面会输出0 ,表示正常。
. V, [* m8 h7 Q% Y# glance --version
; c% f$ t% P9 C1 C" d6 }glance 2012.1
, m* ]/ m# g1 M( Z1 x8:下载镜像并上传9 C& @' o3 G) @) v
ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意
( X7 ?; h) _" N) @这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。% O3 n+ v* c! T9 ~# v
下载镜像
5 Y& {, ]: l1 N% y) n+ j. Z, ihttp://cloud-images.ubuntu.com/precise/current/7 a& \5 `' O( g2 p. s7 ^* J
这应该是ubuntu提供的最新的稳定的镜像。
0 c3 d1 {; ?% \  N7 R0 v' Ewget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img/ I6 z" G( p0 |/ V( H3 n* h
上传镜像3 h. F, Q5 e/ ]2 W  T9 `2 v3 I
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img& ]9 [9 G& X" d/ i0 y
这里还有一种方法上传,如果你没用环境变量。' O, H/ B5 t& g+ ?5 }/ B
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 |0 ]* b+ b2 K& }
上传完镜像后。在运行
$ A8 r. u! {8 ?3 uglance index/ d7 `6 a0 r9 L6 `+ P! }
或者
8 ?  [7 C8 [/ `  M$ rglance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
8 D( k- F' T( Q% ?8 E就可以看到上传的image。+ [1 H' x9 K: T( P& M6 K9 j* l3 ^
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg
+ r8 q& y2 E# c8 |& X! ]8 j+ Z0 Y: E3 r五:安装配置nova
) W2 h& _4 U/ w$ E; H# o; q1:安装nova相关组件
. x9 Q8 m& d, z5 t. `0 s2 o$ _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
( r; {' @! _/ }+ x6 p2:配置 /etc/nova/nova.conf+ {+ D8 `7 F. Y: x/ B5 z  z
把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,5 v0 D% K/ R; F0 D' F, p
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。& o) G2 v9 N9 p, O9 c
root@node6:~# cat /etc/nova/nova.conf: M- O+ }9 p' I: k$ _& }+ l1 ^5 N# V
--dhcpbridge_flagfile=/etc/nova/nova.conf2 m2 [1 G! |8 J5 [  C7 c
--dhcpbridge=/usr/bin/nova-dhcpbridge
9 [; X) i  Q; A9 S" M; }4 [& J--logdir=/var/log/nova, O0 y" `5 c" J3 p, {: Y8 ]
--state_path=/var/lib/nova9 n% E- {( {/ c8 ^( d3 j+ y
--lock_path=/var/lock/nova
" t. U3 F# _8 Z- X7 c--allow_admin_api=true" x  f% K1 h' w( z; Q' O
--use_deprecated_auth=false
) x$ [! \; c  a+ M- ~--auth_strategy=keystone
. ]7 F$ Y  Q/ W; U% W; y--scheduler_driver=nova.scheduler.simple.SimpleScheduler8 P0 I4 ~8 O3 W8 ]6 G" s5 D
--s3_host=10.42.0.6
# l) M$ S7 o' p5 {! U- i--ec2_host=10.42.0.6
5 y8 \! x1 J' c! y' h: d2 ~--rabbit_host=10.42.0.65 b+ V% |; N$ N/ Q9 E! x7 ~
--cc_host=10.42.0.6
5 l- d) a* R8 u$ e6 V# z* p8 g) J  Y--nova_url=http://10.42.0.6:8774/v1.1/
& E5 z/ Z$ d& q5 V6 C% H--routing_source_ip=10.42.0.6
, k7 W$ H+ V6 V( T9 \2 h--glance_api_servers=10.42.0.6:9292
& |- V% V6 g/ l/ Z9 n--image_service=nova.image.glance.GlanceImageService
! Q/ N( Q" I3 e4 G2 ]--iscsi_ip_prefix=192.168.222 {* g  x9 Z- S% i) ]" M2 D) n
--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
6 o3 a9 U1 I( N7 G--ec2_url=http://10.42.0.6:8773/services/Cloud
' }! Y4 z9 g/ T( G$ c# p--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens2 F4 z2 x- r# Y& W, M% O/ T
--api_paste_config=/etc/nova/api-paste.ini
) S# Z1 Q  D0 q--libvirt_type=kvm1 z/ o: L) Z# L: Y5 u5 A+ r
#--libvirt_type=qemu
" x  U  U" v) l9 y--libvirt_use_virtio_for_bridges=true  w: T0 L; n  X& C5 _$ h- j
--start_guests_on_host_boot=true
) A% w* e! ?( Y; e--resume_guests_state_on_host_boot=true
1 W0 a( V  t7 u3 N6 I/ U/ J+ E. P4 X) }0 h" q
#novnc
# q' i! J; N7 P) m( o% s$ M$ G--novnc_enabled=true
; F* ]- e! S. i$ P, z--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
  z: L* v) A; A" q* ^# A--vncserver_proxyclient_address=127.0.0.1
8 ]% v0 _, t# N2 B/ G5 b--vncserver_listen=127.0.0.1
8 m* E+ A' V4 r* r7 I1 c; H: \* y+ n( P) B/ M4 n1 S4 P6 I' v% Z7 Y
# network specific settings7 e; N, i8 S* x' O( p3 J1 f# o
+ ^" y5 o# N! Q1 k& U! O) z
--network_manager=nova.network.manager.FlatDHCPManager
, H; U9 g0 n5 e% K: V! W1 X--public_interface=eth0, p) c) o4 r; R; T/ F+ e: s1 [
--flat_interface=eth1
+ q; R' C( P+ b9 H--flat_network_bridge=br100' ~/ x) n1 J. b
--fixed_range=192.168.22.32/27
' m# R* Y: a6 q3 {& B* M--floating_range=10.42.0.32/27 + H' }! F+ U' t( T
--network_size=32
0 ]: o/ J5 {2 R1 G. z- s--flat_network_dhcp_start=192.168.22.33
( J! R! l0 V9 R0 e--flat_injected=False
3 D- ^" F5 X/ F; o. O/ @& m--force_dhcp_release/ P9 }; ?% y' v( X9 w9 s' C
--iscsi_helper=tgtadm
& y# m" d: w- e7 M. w2 G--connection_type=libvirt
/ f# q# d* b3 o4 t8 P9 ^--root_helper=sudo nova-rootwrap
0 f* s; P7 W- M- K#--verbose$ G8 |8 R$ k3 J5 E4 u8 o# _0 D5 h) f
--verbose=False

, h8 Q. s; Y4 S7 r6 J# p$ d& g: ~$ k" v! ~8 m" g. O) d
3:配置/etc/nova/api-paste.ini
# `+ x; ~9 H( {* j: s也是修改文件最后3行,$ d/ t- ]1 x1 ]- S
admin_tenant_name = %SERVICE_TENANT_NAME%4 y+ b8 T3 M" b) W9 a- ]5 u4 \
admin_user = %SERVICE_USER%
' A+ q% K: S4 C7 D6 \& a* \admin_password = %SERVICE_PASSWORD%
' A, G  ~. K) e2 S" C% n/ z8 Y改成
1 b7 _' x2 i$ Y  m  ~6 b3 xadmin_tenant_name = admin
& U$ z4 p' R) J0 S) X" S; M' Dadmin_user = admin" ?, m  R5 q2 [' e, {' @" D
admin_password = hastexo
% M2 q8 ~; w# r/ |% ~- P0 G4:停止和重启nova相关服务
5 g' \3 @) |/ x$ H. Lfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done1 o/ }/ t: c3 Q6 u+ H9 m

3 O7 C. u/ b2 _! t" y8 {) \5:同步数据库
# @5 `' {' \8 f- b以前我运行同步数据库,如果正确, 当nova.conf
0 y; P. Q! p& F, r7 I) {& U--verbose=False" ~" V5 X, o' L" N
是没有任何的输出,否则有一堆是输出。7 S" w% R' O" H7 L( f
nova-manage db sync
5 W. `# q. ]. X/ b4 W$ R
/ H, J4 H9 A6 ~# ?6 B3 I1 F
d386ae19ebc4b74515d430adcffc1e178b821518.jpg * c" i5 r* O7 `" F* p8 Z; k" e' @
2 K4 M4 P; V# u& x
创建网络5 [/ ]* A% D' o" 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; N6 C6 r  x3 x' ^7 e5 _7 p
d3a81f087bf40ad11f734058572c11dfabeccece.jpg # V% R% o$ ]1 r. s# B2 k0 U, r8 J
设定floating IP
, ?7 g% d2 p% o1 `nova-manage floating create --ip_range=10.42.0.32/27
8 c9 l( s: |, c5 d" }( V3 G
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg ) Q$ ~; H3 S% w6 g) i4 L- u2 \7 s
设置权限
8 W! T3 X* i% m4 M6 ochown -R nova:nova /etc/nova
+ d0 |" P* u4 N+ ^再重启相关服务
6 d, G6 C9 p) S0 B/ b/ l" nfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
0 _$ Z1 `/ F" V7 W) U
) s& O0 g8 |: P/ r% Z4 k. {+ C+ S6:检查nova服务
/ s9 L8 r2 b/ Q4 K% P" g; h  I4 ]* A3 Knova list
0 H9 C3 I8 M6 N  Onova image-list
1 w, W4 q1 g) {; G4 k5 {3 @5 enova floating-ip-create* H% h" n/ [* e" c8 Q: `3 T- V3 h
6 R2 C/ I; E) k0 ?- c1 L  z- m
3f1e66899e510fb330aef02cd933c895d0430c2d.jpg 8 [* {; m6 b; ^- z2 w% F4 W
六:创建第一个VM: [& B( r6 z' I5 R- ^
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
# Y! [6 H+ P- L0 y: G1 |# j0 c1: 创建密钥
  c3 J3 ]/ f8 A; }2 c' m# ssh-keygen
7 }( f/ l+ |8 e3 e; T3 j6 E一路回车,就可以了。: x: E& ]7 j6 z! G, \6 P' e
9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg 7 n4 i# f0 c% T8 _4 _7 v+ t# a# N' H
2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1

/ m' s8 g9 Q! {/ E5 ]5 V8 N这个时候,就可以查看到上传的key
+ K) D3 f3 ?! ~8 _  G+ u5 h( L+ y$ Jroot@node6:~# nova keypair-list
+ }9 \3 \- y( N& _; X8 y+------+-------------------------------------------------+
6 N+ ]+ R5 g* G' B- v; G! a| Name |                   Fingerprint                   |
! Z! ^6 g6 w7 P! h# o) o6 B+------+-------------------------------------------------+0 ?( ^; K' x6 I; p1 |: |! r
| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |5 a* x2 |9 C/ ]7 E# ~
+------+-------------------------------------------------+
* r2 |, i$ {8 m% ?4:开始创建虚拟机
2 B" S2 v7 u1 p6 I- d/ Q: L( P& B 查看image list: D% _0 P- Z( c: X0 n
nova image-list7 D, q  e+ E) l8 x, r  D9 x

3 h  o; I- C; j5 w+ H, W) R) s查看flavor-list
7 j9 @4 @: O! f) P
) C( M- y% j" {4 V& `, d: l nova flavor-list
1 L; q$ b0 Z: @3 C  M创建虚拟机: a( r4 B" B. _: X
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
& g$ J7 g4 D* U; ?5 u2 V看图有真相" S$ f7 A1 t2 ~4 p
6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg
/ x  w. p- d, ?5 D1 z# s 查看一下创建的虚拟机

& E; G8 v0 Z2 [& c7 | nova show superfrobnicator
, C& U+ q9 @3 q! x" t 61dd66ec54e736d1a27346b39b504fc2d4626979.jpg . j0 o1 M4 }7 j. N8 B% D$ Y

" k# k7 G' x; H! \' P4 Fssh 访问VM
$ y9 @3 K* m! i8 ?4 k, ^; ]; m/ U. S
打开防火墙
* V( S% L) o7 n1 h$ Inova secgroup-add-rule default tcp 22 22 0.0.0.0/02 s/ Y% S1 x, Q# c1 O( H' N- J/ g$ Z
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
$ h! h' E) Z! I* P$ B1 p这个时候,就可以直接ssh到虚拟机上。- j9 G! T+ ?" \3 h& J
ssh -i .ssh/id_rsa ubuntu@192.168.22.350 [( v/ }% |5 t4 B' b3 G
这样就可以登录服务器。" c) c% e/ y: Q- q
Floating IP访问
/ u4 ]; x2 w8 w, @如果希望访问floating IP4 O9 s1 U' o; s8 B
申请floating IP% G" S8 N9 Y  J/ }6 Q& _4 H! o
nova floating-ip-create: N  w! j! F. l
关联vm( }+ S. Q! ?/ Y0 @7 L% t4 h+ E
# nova add-floating-ip superfrobnicator 10.42.0.36; S. _" q4 j) z) `
4 n: _% ?: e$ |  i
查看虚拟机' U* D1 {) t+ @; h
nova show superfrobnicator
) _* f; \+ L, c! rssh访问虚拟机8 r) U  G  T. G) F* s
ssh -i .ssh/id_rsa ubuntu@10.42.0.36) W) Q* a) T5 `1 y8 K. }- p
查看安全组和规则
0 D+ M. A5 Y' X. t# nova secgroup-list" K* p9 ^: h, ^3 |5 `; [. r& ?
# nova secgroup-list-rules default" n6 T' ]1 \( V  ?6 S
看图9 b$ t, |& C# r+ u5 L& s' J
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg ( _8 l' E# b5 Z2 f* R: B

6 h# @% M& m& l, ^8 e. Y/ Y9 {看看结果
; k. n1 }2 {  l7 c/ [% z3 K 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg
! y1 z( V- V, ]: qssh访问vm
' g6 [9 p& g5 F
) G" y' L4 ]$ W/ ?4 G& n
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg # g( o7 I9 C, p2 u; k
( T# p+ b+ z: J! S; ]
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg 8 S* s2 v  [6 E) R" N! H
2 @( K( O: }2 `
有用的命令
0 Q1 q5 W+ w2 p; i, f查看keypair
( \+ ?. ?) S0 ?nova keypair-list8 f2 E- \9 h4 w
删除keypair% Q( y- S& ]1 d3 b8 I
nova keypair-delete( Y3 R; D# B) E& [; Q' W' c
查看vm6 @4 L' G. ]" a8 h& O
nova list
5 N% c- N" W: q+ j; Q4 {1 K# J删除vm,vm的ID
0 e  u' N9 x! A7 ~! k9 r8 Q! X9 m6 Gnova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343
( r9 _9 D" d# @3 J" H5 I9 @( z7 y1 U. o4 p- G3 v" D

7 q, R' g/ G1 G+ ?% y& w七:安装和配置Dashbaord9 w7 d' B5 G+ ?( t/ g
1:安装dashbaord
! N6 \' c  y) o' H6 S' }9 Lapt-get install libapache2-mod-wsgi openstack-dashboard! z2 u; g0 r4 `7 g
5 c" A. l- d3 E5 I" q
9 F% l% Z6 l8 u$ p' r% r  q8 X7 o7 `
这个时候,你就可以登录dashboard* ^2 m' K. z* R& _; H
http://10.42.0.6
2 b9 E2 f2 H* j$ e: i, juser:admin
  t+ U0 B  ~" z* Z/ |, M  w8 A; Y6 h; Y, ?pass:hastexo
2 T0 ]4 b% |- T! U4 _. ]. @6 A) a9 R" R- @9 Z% _, d
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg
- I+ ?( o& O4 F  w. u, H$ c. z: A0 {
) M  i' N! d- [" I8 a" Z6 \/ Y
6982e5198618367ab223fa612e738bd4b21ce53c.jpg ' ]4 v, ]8 h# y( p0 r4 @) i

, [+ _6 `! x8 s5 V) i+ m1 |
2 B$ ?) b2 v/ ^( p1 M7 m8 ^! ^: R2 ]+ S5 ]9 h5 [
5:理解project和user关系
: c) A4 b- y8 q1 r. A' h  o: f上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。4 {+ e8 q. j; u' s. y' ]
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
; r( \; p( V1 z3 l* o0 n我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行: U& Q0 }/ u9 Z+ V  I
6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg
! A. m' T; C8 ~/ X# U- d! Q- g
  w) }' @- T: I9 a1 l' j
八:euca2ools 工作
/ \  H% J5 G7 [) K& [euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。5 z. X/ k& `. t& ]. w7 _' i
1:安装euca2ools工具
) x0 \: D0 L2 Dapt-get install -y euca2ools
- K# b2 R4 I. G* L5 r' r/ q* k2:设置环境变量; e( Y* h. _' \6 k+ b9 h' T0 R
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')/ z, N2 K& C7 |
export CREDS=$(keystone ec2-credentials-create)/ e& r0 X1 K" B! _5 x
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')% x  t4 X' S  N$ g6 a
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')  |7 N! I8 R3 Y, b
3:运行命令% r" W/ W- r2 f7 X
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list+ `9 t8 R6 `. O7 t4 l0 \, O8 m+ _
现在Essex对Euca的工具支持应该比Diablo好很多。( ~9 o6 m2 G) c$ P; \
96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg
6 h9 P' Z& }% j- Q" @& @列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances

- s! Q  o. |6 A# P 4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg
1 ]1 `7 n4 m" a# e5 B  g

6 w6 f4 q. o+ v* r  ~4 t6 T2 [' L1 O6 J3 M9 E# n5 C4 {8 w
Appendix A:  使用nova-volume
5 Y0 b% }4 u' r$ c: K* ?Essex Dashboard可以管理nova-volume。有两种办法来实现' K" F% h8 A% R# H2 Q; `- N
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。& v; H5 J+ ]  z( E0 R% J, o. d2 H

) ^7 ]0 u# \* D# d0 A1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,
0 W$ h* @2 X: X" w( l新建一个文件来做 LVM:& [; M5 s1 Q6 y4 D# X4 e
DD一个设备3 d( p' _; {/ w# q% d* v5 I2 u
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
2 g" C% s+ @1 u: W9 f( q4 E加载一个设备
' z& [  b6 I; E1 t+ ^3 m) N: E# losetup -f nova-volumes.img
/ O; Z3 f6 k$ ~查看加载情况# D/ T3 O% t- ^7 J+ N( s& ]" @
# losetup -a, `1 s4 E2 d0 \( d8 t
/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)
. E0 d) p" G. O& f' ]5 f创建一个nova-volume的卷
# h& p% @0 k1 K5 I# vgcreate nova-volumes /dev/loop0
% x/ _) @+ _, j* M9 x2 V3 [5 i5 _  No physical volume label read from /dev/loop09 p& L& z. f9 \! L
  Physical volume "/dev/loop0" successfully created
) ]8 R* M  j, i  Volume group "nova-volumes" successfully created$ t5 W' b+ f1 y6 [# e3 F" B2 L
查看卷% q/ n% f4 P7 s( h' D4 I
#vgdisplay% y# {) P3 J2 D  V; {
就可以看到创建好的nova-volume。
; t3 L2 C& \, C# Q; |创建一个5G的卷,名字为volume1
5 }0 C+ X2 I# K/ C2 V6 p; T' g. unova volume-create --display_name "volume1" 5' {: y* @' j0 c& \
创建完后,可以; u( ]9 E( K# S) K3 Y1 j5 z" m/ e- m
nova volume-list
" |6 ]2 h+ Q% ]( d  D% H 08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
# ]4 u  G5 K" c; E: G

2 T. ?/ u3 P$ Z+ {) j3 e7 f  [# d8 N创建的过程非常慢,看status完成后,才能attach。9 K; V' N* a, ^7 |  [$ a
如果希望删除创建的volume,目前我知道的就只能通过
) s/ n! ~/ q$ c8 Jeuca-describe-volumes0 }, p9 f. b- }2 a# d0 d
euca-delete-volume vol-00000001' w0 ~, y4 Y0 r* ^% s9 {
1 Z- i/ Q0 V3 o/ F5 p* u
把卷添加给虚拟机,1,表示ID号) X$ ~5 O) v  S. f
nova volume-attach superfrobnicator 1 /dev/vdb/ p* K7 W6 D1 y- \& Z; H, c0 o

* a: s. [: @; u6 Q2 u9 [' i. \4 }) k 2:单独一块盘
* @2 y  x7 `6 h1 l6 m: k # pvcreate /dev/sdb1
/ E& S1 D# v0 W7 T' p# pvdisplay
6 I- w/ H( g% K#vgcreate nova-volumes /dev/sdb1! [; N1 \( P0 L6 s, f( T! S" s
# vgdisplay
  @. U& ]- `' u2 r8 q* T9 ]这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。9 o( P' j! N2 b% y
3 s# T$ d8 S- n! |, q
* Z9 `1 n$ I9 r. j4 U9 G3 O' t
参考下面文档' N) u! \% k& B2 r. i" o
http://www.vpsee.com/2011/09/openstack-nova-storage-management/
' H4 l# q6 _4 E. ^+ c2 m- Qhttp://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html
( @* B( F* {% \, y( r8 h5 w/ t1 Clvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html& s" v8 q, j1 _/ i8 k: x

0 m' q" i# k; q. H: x" E. b) z
7 G9 t% F0 K( w/ o! L* J  X+ ?
1 o: f  A3 g6 G+ r. I- @; d& ~
& y- j1 J. i$ Z+ U$ Q  W6 b/ b3 S: m- T/ O$ a
Appendix C: Dashboard 创建vm,允许ping,ssh登录
$ V, Q1 e: d: T  @9 f对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
0 L7 b$ V  `, M! V* N+ e不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。$ O, _5 y( Z' x1 |2 N
从ubuntu下载的image,只能用密钥登录,不能用密码登录。* b3 t9 I! h( Y' F
1:设置安全组 Security group
$ ^# B5 h- e: M0 H9 O. _- R% ]安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
- x/ @* P& D) d# S8 R为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。
/ T& |( R% c" N: v默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
/ o# t# C: n2 ~2 S3 @ 9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg 9 p/ u4 Q( ?: ]. |$ t
) ^: [# ]% {' s7 T) s" T) o2 W; i
: M9 P. G7 g2 r& @% h; Q! V

, Z' ]  ?0 l; U5 G2:创建密钥
# o0 X) O# B+ W/ s3 s: [! H% F为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。: x- D6 D+ ]2 ~9 z* c$ ^) Q& b  f+ g
这个时候,你如果有私钥,就可以直接登录。- I% N  t) V6 N" D# b  ?0 C7 \
- k0 |" N' L( b: B6 X) u# W
1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
% V' a* W& H% ]下载私钥
# ]; ?6 L9 ]9 D& P点击create keypair,就会提示你下载私钥。私钥是pem后缀。
/ y& c* q5 f1 x+ K9 q 7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg
1 A3 Q# g4 O" U2 }: S
0 T+ S) ~$ U; S# i( F$ [9 G1 {) O
0 K! A" x5 \2 d$ K那么你就参考这个文档,就可以。( [: b" z: Q: c$ l3 s4 I; y0 f
3:创建vm
+ w1 J* M  F! P( |0 A1 C5 T创建vm的时候,你会选择keypair,安全组。
! V: j- t7 ?' n, H& b 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg / P+ ]$ w: W9 D* Q8 y
+ o1 m  t! G5 @) v( O

( U8 i0 Z, e1 A. O 46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
5 H( J( o6 J# k
. A, t4 _: t5 O! u- J/ ?3 c创建完成后,得到其实是一个内网规定IP
4 v9 W  }  \& h- X; G e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg
6 I5 u( P/ l" H2 c! c
9 O# p$ [3 p6 Y5 w0 u. Q, J+ I
4:floating IP7 z( ^- V7 J8 V. |* F7 b' U
给虚拟机分配一个 floating IP,可以理解成是公网的IP) f6 i- V1 v9 O  H7 c$ j5 ]; j9 _, P
8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
$ I0 d2 m% k) }分配完

) U( v# d# P# d6 k) R 60d25790f603738df2568f99b31bb051f919ec45.jpg 3 D8 L) [- k% `7 n7 A  {  j3 V3 T
关联vm

' [& c, [# w( p' G: Q0 ~: R af15baefce1b9d161e8719daf3deb48f8d546419.jpg
7 C% S. m3 S: k% t
, U4 t& }  c9 l. f# F- |$ d( L

! R# `; }# `( p! I
; O$ Z1 f7 H  H3 t3 e 看看结果' b. z( S( S9 @$ v
3c0efa1190ef76c647bf78909d16fdfaae516774.jpg ; H3 @! `$ {9 o3 Z6 f) F) m, d
- g4 v: A7 ~' s
5:ssh 访问vm8 ?; D( \6 J% l- J
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。& v0 J: B8 f& F2 W( q
对于ubuntu提供的image,ssh的用户名是:ubuntu,; G" b' Y* P7 B' G  W; z3 l# v) }
SecureCRT 6.x版本, y) x. d- z5 b; K# I
对于6.x版本,已经可以直接使用pem后缀的密钥! L* j  i1 [. y: m6 S
* b; [4 c# I! t( Q
e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg & W, \# v& ]( e$ g% Z! L9 O
' |5 V( B3 ]( }0 L8 m- i9 n
putty登录
/ p5 B8 r( b- v+ x对于putty,需要对密钥进行转换。
6 z8 w9 t% {4 K# ^# i' }; Rhttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html( a# u# V- ?9 S' f
到官方网站下载:PuTTYgen这个工具
  K; W8 f3 ~" G# [! b6 H0 SPUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以
" F! W( j4 v( n 67da7663053a03280d33fa5f.jpg , p' s5 Z# L+ U; Z# d6 v- n

, r& M6 b& u; U% N' L7 R6 w& \* N" c9 x存放到本地。
$ ]) m# N9 }0 ?' E4 T' [% \设置putty使用密钥! }% p% ?9 L* A4 a/ h
4e0ebc44ad345982731568290cf431adc9ef84c6.jpg
+ D  J0 `, P( \3 x

& E: i7 O; Y* \! H% f d520caca7bcb0a4664b806826b63f6246960afc3.jpg ! \; w/ L, ~2 T7 u2 z$ n1 H. r* u- V/ N6 t
% z* Y1 k1 p, A: Q6 d: {

5 p& E  |6 E% K; K+ D; V( ~linux客户端ssh登录vm
9 x8 a% y/ b$ F- p如果你是linux服务器上,你可以上传密钥到服务器上
+ d: F) ~4 f, U+ \2 d1 Issh -i key_for_openstack.pem ubuntu@192.168.22.34- F0 h+ K6 {% R; c" f  o2 {
就可以直接登录虚拟机。" e; K# }, M4 m9 U5 o5 F
  U* z: p9 c' E7 B! \2 L- J" q

/ U5 N% O! Y# A* AAppendix D:FAQ! f& o  I$ P0 K
1:我登录服务器后,命令都无法运行- f9 R2 ^1 i+ C2 X; \6 ?5 q
~# nova image-list
' t. U5 G3 q  N* M2 _ERROR: You must provide a username via either --os_username or env[OS_USERNAME]1 o. [9 Z( {, A# z) k$ u" a5 e

8 g  p* E- o9 z如何解决。

0 J. i  X( T* _0 [9 t这个问题,其实还是你的环境变量导致的。" d* S% K/ R" o: R4 O8 G
export OS_TENANT_NAME=admin" C  s' E6 l6 X, ^1 N8 e
export OS_USERNAME=admin
  Q" i) s+ b4 o1 i4 Zexport OS_PASSWORD=hastexo3 D" S% o) D0 _/ W5 p: j/ r
export OS_AUTH_URL="http://localhost:5000/v2.0/"
# P( e4 y3 c( ~7 k; nexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
, O% m. z# c: Fexport CREDS=$(keystone ec2-credentials-create)
4 l% k3 d# B& sexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')! E- W0 {3 n$ X2 v  D
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。# T  o, P9 X; b' H/ W6 L
如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。" [+ Q* ]4 A9 i! t
http://bbs.chinaunix.net/thread-1958386-1-1.html9 H( G- ?! B9 j9 |4 l

% {5 j1 [2 p: E5 xroot@node6:~# nova image-list
6 q7 e! X: L# B! O7 r* C+--------------------------------------+-----------------------------+--------+--------+
/ [7 B4 Z6 Z  \# V|                  ID                  |             Name            | Status | Server |2 x9 b! d$ h, O9 r
+--------------------------------------+-----------------------------+--------+--------+
; N) ?% b; G/ ~| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |
$ C5 H0 B% g3 W2 o0 K/ I5 g4 A/ u+ }+--------------------------------------+-----------------------------+--------+--------+4 Y) m; X7 F& x2 Z' U" T0 [0 s
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg
4 h# M: v% {- }  z7 d  `
( z% n/ u3 z; W 2:如何用curl去测试keystone/ @) S: J& d1 T
替换红色部分,就可以了
3 M5 H' u: s- P2 Q# 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
4 x4 \0 A& J' h* T: C4 d1 A0 ]: S; Q' M% q/ h7 I

! P( d+ I9 Z6 q& T+ D# P8 c8 O' k博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb% [" k1 B- D6 O1 j5 \

. N: S" k& \0 ?! L
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:
3 d5 o) J8 N8 b8 _0 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 None4 l& {6 z8 ~" p- t1 d1 Y: K
% p& ]; x) s- F/ ?, a1 f. g
解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。
$ \/ D3 n! @$ v$ K           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
+ _* J- t1 I% k0 Z% l4 v注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:) {; x7 w; H( ?& N8 r4 Z
export OS_TENANT_NAME=admin8 @* h- @. {2 U) u/ W" e) D8 I
export OS_USERNAME=admin
% y' w9 O. ^, w$ E  F3 |* R7 R3 fexport OS_PASSWORD=hastexo
. _8 j! t" N: N1 `: K' ~8 X- ^$ mexport OS_AUTH_URL="http://localhost:5000/v2.0/"
; R3 r8 X0 F; r2 b+ D2 |export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')) _% V% A; u8 u+ q! r# g# W$ i0 r
export CREDS=$(keystone ec2-credentials-create)
1 t' \1 u" O5 a: e; P6 h/ Q2 {export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
1 c  P! _3 D! qexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')7 G! U; w' t, [9 F( j1 S9 a

6 l) V4 W: R/ a现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑
& C8 K: P, R5 j. l. _% Y) P$ y. b# c+ s' X, c
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:
" y* k$ T4 e5 w) n  m
/ F1 ?$ p5 h5 b( C8 G( |- e# kSSH Secure Shell Client工具密钥登录linux:
; G# e- [9 E9 o; r! d, s
/ q( _/ e) s( [  whttp://server.chinabyte.com/365/8835865.shtml8 [+ `, u  H5 H3 a+ C3 Z- [' y1 k9 g
3 s) E  t+ Y. @. K

) Y3 d3 F' h  |7 aSSH Secure Shell Client用public key认证登录
: Q& K% n* E  W8 V) L6 t. T  dhttp://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html/ E, Q$ j/ H: W3 m* A6 ~) ?8 A

+ j& W0 {7 O; S" |; q由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:
8 U/ ~( T  V. C+ F- @  U

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

) J8 a+ G$ ?( K2 |# X% D& K' q: [
没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。
/ m& \# Q7 @4 O4 t' bvi /etc/ssh/sshd_config
' w! C- C: x& ^3 j" I, H6 u将PasswordAuthentication no改为yes
* Z2 F6 ~' o. C# Z' f$ Yservice ssh restart
1 [: L. |2 W/ L5 {3 r3 F" T
: P) C# t: |  q/ S, J这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。
6 Z: y, t, `- W$ l7 y7 |* _安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版
  C  b2 F5 Q' M/ x2 v: w: }: `6 C" Y' z3 b
虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题  a2 j' D$ f* G+ r) v
: Q! C* \% o3 s3 ^4 w: T) u; V
1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
5 J3 b7 E' T. N) n; i+ H& Gvcpu.hotadd = "TRUE"
5 @/ n) A" [; e* \8 N: ^/ K变更为
3 `( ?7 P" ?" z' _( y1 f/ V4 o7 u2 hvcpu.hotadd = "FALSE"% t7 }/ Y  V+ U7 J) K) J8 F, F
重新启动机器,如果执行命令:
. N+ ~. g0 @/ Q% \virsh
2 ?3 v5 s  H: \/ r! W+ I进入控制台就没有问题了。1 W& n- G" o8 m( l
2. 修改nova配置文件/etc/nova/nova.conf
4 ?! p) z- F: D1 \#--libvirt_type=kvm
3 F/ _" \0 R, h, q* s! n, s5 Q/ q更改为qemu6 y0 ]' Q' I4 p; W, k$ r
--libvirt_type=qemu& B. d2 V/ Q0 a2 k0 i# p
3. 修改/etc/nova/nova-compute.conf
6 Z& b7 \* S  Z. w7 Q% U--libvirt_type=qemu9 C/ u- i: \" U% R  Q( N) H5 C
4. 重新启动nova-compute,如果libvirt报错8 D' q: W. U- v4 X
/var/log/libvirt/libvirtd.log1 r& B2 w2 x1 l8 \; u1 c# U/ d4 A/ z
Cannot find 'pm-is-supported' in path: No such file or directory! ~" `* `& q' Z: G) f2 f: j
报错后需要安装0 N" P8 E" e3 Y" N7 _* |2 h
apt-get install pm-utils) t* ~3 G6 i" `1 C' |$ _  O
5. 重启libvirt和nova-compute就可以了
, y1 x( O6 y/ `) J& x) rservice libvirt-bin restart
' U/ W4 c" b4 k4 X) Dservice nova-compute restart
/ e) T( ~% \4 u8 G5 N
, d3 ~# `4 G3 ?7 ~/ ]6. 执行 nova-manage service list
4 A, D. p+ m' n& D! O) {state都是笑脸的话,恭喜你,搞定了:->, l5 |/ w7 S2 L  u6 n, N! B

& S9 v8 [  j) l. @- U" N) g感谢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人群已满)

返回顶部