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

锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
查看: 13901|回复: 4

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑
. H$ A$ {5 C& M+ E- i  p( ?
! H3 t) R, p2 a* w" U( Q/ M之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。2 e, A. O- ^" w& v

4 P) H" j' J6 D- H0 n, G- L  r# p原文如下:
0 v3 Z2 K5 Y0 T" y2 |+ K+ O. [7 i$ {9 g2 ?& l7 G
Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex* G+ a1 F9 j/ V2 P3 g& [, \& ?
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。
. H  b' b0 D+ W) c$ H, j原文6 g3 [8 o# _+ w" B' q2 ~4 f% v5 P7 n
我下面的步骤,也就全部参考原文。
8 e, b/ e  K3 ~. F  h" |/ G! n3月27日更新:基本完成文档内容: S" G0 z2 e( O8 ^) F( k
4月5日更新:重新安装第三次,修改了文档一下小错误。
$ e. X9 N7 Y, U0 ?8 _4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖5 t, x* @- N/ W6 J* j3 T4 f
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
1 c; L. ?8 Z  j! H4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。
* Y' i7 L! ^+ o2 I, W$ r 4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。
1 d: }! F1 ^& S) j% T4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
/ m/ f2 [2 O" K! t 5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。2 u; _0 Y& |! L* b
5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。- |6 F3 a) K/ e) ]2 F" k1 Z! L
) w) f5 E5 h: [/ X
硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。1 x. H$ p: L  e6 [& Y
下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
9 o# z. o$ Z$ C- o/ l( g6 Z为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。" U! Q2 H+ R( V( n( u2 T/ z
目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。
- V& k9 C' z4 F& A6 G5 w2 n( q8 O
一:准备系统
* |0 B  \1 A* O9 \5 d( D& X1:下载ubuntu 12.04. 服务器版本5 U6 L' x5 z1 E4 ?# S6 m
ubuntu12.04正式版本,需要4月26号发布,目前是beta26 K, g4 F4 a2 Y9 t# I- L+ A
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
2 C1 M( H, w+ _& t- T' c
; Z0 z# d3 W: Y8 n3 h2:安装OS  K' @3 }2 `7 x  M& I& Q! P( `
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。! X, D8 m* V: g& P7 Q
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。
2 L( A0 q0 g8 U装完系统后。, d0 e; a' {& p* E) i
apt-get update
# I) j; d! S. y: ]9 ~. b2 i1 C. W" Gapt-get upgrade
8 @" ?: ~# ~- I* F0 [6 S5 f: N4 t更新源里的包,更新系统。确保你装的是最新版本的包。" T/ y1 x& Y2 b* x' {! M* b/ p( m9 G

0 Q3 g& @' C% L1 {3:设置root权限. ?' w# a1 ~; ^/ K% k! J8 H1 a
为了简单,全部都是用root来运行。$ m" ]% t. O- g, D7 I, u2 ]3 U1 Q
sudo passwd
1 n8 ^- D6 v& X就可以给root设置一个密码。直接用root运行。. V/ g; T2 D" p
4:设置网络
1 Y. o9 t, B* o( d) Y! E; p* h我的网络设置和文档是完全一样。这样也减少错误的几率。
3 ^: K5 i6 J. croot@node6:~# cat /etc/network/interfaces + K$ Q/ q/ C! k# J) l' C
# This file describes the network interfaces available on your system
9 q3 ~. u# r& [# and how to activate them. For more information, see interfaces(5).
/ |7 m" r0 u7 {. T8 N* K
6 [7 h6 z4 [/ z  `# The loopback network interface. h/ e; Z" c  M0 ^7 H8 X6 P+ K9 O$ Y. u' \
auto lo
6 W( A; x/ @8 u7 Xiface lo inet loopback9 b+ h: I- R& T) K

0 O0 P- J7 r. v2 V9 j: i% Q1 x# The primary network interface- l  y1 @% s) ^# j  A2 e. r: `
auto eth0
5 O* s( T& C/ Y' D8 ]. T; riface eth0 inet static, P2 Z) ^2 V/ f/ [. V4 A. Z
        address 10.42.0.66 _) X; E) t  ~" l2 z$ M
        netmask 255.255.255.0- r% \8 o* U% }
        network 10.42.0.0
( |( H" ~. u: _) U, f! x3 j* l        broadcast 10.42.0.255! c! m2 o2 `8 V, B7 k* }& W
        gateway 10.42.0.1
. q6 d  L' z5 h        # dns-* options are implemented by the resolvconf package, if installed
9 `: o# h3 i( i/ j5 P0 |        dns-nameservers 114.114.114.114
% B, M7 [' B' @* n8 N3 G# G& u. g1 i        dns-search test.com% v3 u% m" d) c$ V& b. A3 A  a7 Y
9 x* l, y$ \, a( o; c: ?) [
auto eth1
, k8 p- v$ @; J* A* j2 Wiface eth1 inet static. ~' v% U3 c+ |: Y1 Z
address 192.168.22.1
  W* {4 M2 a# [' c: Anetwork 192.168.22.0
/ I( Y6 T- D& K. F  \netmask 255.255.255.08 p6 t" n$ c6 ~4 @' X
broadcast 192.168.22.255% B' z9 Q% h' L2 P

! t) ?! r8 h+ P/ z5 ? 重启网络,让修改生效
, }( o& k. K$ c$ E% v' T/etc/init.d/networking restart" [! t0 C. l+ }6 c
5:安装bridge. P$ P+ ?& h8 n% n0 N2 B7 ^
apt-get install bridge-utils# v5 n3 N% \* a; R4 d. b
重启网络或者重启一下机器都可以1 |# }# ]# I/ h9 |3 l" A
/etc/init.d/networking restart
8 \/ Y, i9 Z" e9 e6 m6:设置NTP+ u" p5 j, M6 E1 `2 f& g9 ?& a9 y
apt-get install ntp
# z3 v: o4 l1 y1 ?# o; u
: v: h  A$ t  y& S  L2 n编辑 /etc/ntp.conf 在末尾添加下面3行
8 d7 k+ {: D8 P/ y8 N$ d3 {; j' L3 p4 L& k
server ntp.ubuntu.com iburst( Z" h4 o+ |; m$ Q& Z& B: [4 p; v
server 127.127.1.0
. v% v3 O( b1 Z0 Hfudge 127.127.1.0 stratum 10  E5 P, F2 a% x& K, N% O

7 _1 A) D" A) d" {2 v重启服务
9 z, C6 H7 B2 O6 b0 S8 S- vservice ntp restart
1 l( s% H$ [# p* I/ d8 `" ?) l' c& P2 y7:设置Iscsi  L5 E2 K" q  j& k" L; U- W& B
apt-get install tgt, X3 H7 y' {# V  x
重启服务' n) {1 R% @2 m) E$ {; T
service tgt start
& e, n& R& a) w+ ~安装iscsi客户端* J% h) K" n  ]' T5 G
apt-get install open-iscsi open-iscsi-utils
6 @* m. X, }- ^8:安装rabbitmq; S- w+ U6 k+ v1 g) ~
apt-get install rabbitmq-server memcached python-memcache
( _6 T+ m8 r2 B9 o8 w. f7 Q' }: lapt-get install kvm libvirt-bin% Z1 ]" J8 m0 i
5 ^1 v+ D7 x6 Y& e+ K* Z9 r3 |3 a0 B
二:安装mysql和创建相关数据库
9 u. ?$ a) W4 A8 a3 J. _" F" ]Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。
5 m# e7 u6 m( x1:安装mysql
+ v( Z- b/ K  l, }+ d2 v过程中,会提示你输入root密码。- [3 t3 s3 C% z8 G* Y) L) }" `
apt-get install -y mysql-server python-mysqldb
( p' Q' @/ Z. u- `0 v让mysql支持外部访问4 v8 w0 j! S7 Z8 t3 C
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  1 H* X7 H9 z% L6 S
重启服务% `7 A; Y+ W  f, G
service mysql restart5 Y" a% i; v4 h0 r" a3 w9 V. t: J2 R
2:安装phpmyadmin (可选)
5 b4 Q6 H' v+ V! y' i. y4 z为了方便,可以把phpmyadmin装上,可以比较方便管理数据库) O7 J5 c% W8 x# Y4 S
apt-get install phpmyadmin% K) x  p0 u$ G" C. \
安装的时候,第一个提示是让你输入root的密码。
( B; X8 U- F$ K4 Q2 G3:创建数据库8 h& K3 t, D* s
nova数据库,   管理员:novadbadmin,密码是:dieD9Mie
& p! M( Q' G; e7 B3 j* M, \! T; Nglance数据库,管理员:glancedbadmin,密码是:ohC3teiv; g  |0 N- M) `* o
如果你修改密码,后面很多配置都需要相应更改。
# ?1 J% A; N4 d) a3 {7 W1 n- Gmysql -uroot -p5 D9 d* A* p) w, q
CREATE DATABASE nova;
$ I% z; i1 c* GGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
& u0 k$ W5 D% C1 CCREATE DATABASE glance;
/ e9 z9 j$ }( W3 UGRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
2 _6 i9 |1 o! W% j+ J0 N" v% l" wquit* D) {- X% E7 Q1 @  ~. h
  @. B9 ]2 K" z% _- d* D5 @! T
3 X, |! [: ?6 i/ v
三:安装和配置keystone1 P7 d% ]0 V- c! ?+ ~4 y
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。
  F- k6 F0 B! x2 M( R" i/ |1:安装keystone
0 I5 n6 v" Y) t9 T1 P3 p( [apt-get install keystone python-keystone python-keystoneclient
. J0 q/ l" x; D2 f4 V, y9 \! O2:配置keystone7 Q; \6 j* ~2 y' j7 p
需要修改 /etc/keystone/keystone.conf 两个地方
% v' ]; H' ^4 W/ J9 `: c默认定义的token就是ADMIN,我使用hastexo作为token
3 B' ^& D4 q8 ^9 o+ M+ t
3 S9 R" n- b7 I8 a3 v" S[DEFAULT]
' ^/ z4 W$ I; E3 A/ N0 Lbind_host = 0.0.0.09 y: M; f' T3 K1 n0 K# @+ L
public_port = 5000
( A+ a( B9 u; v; Eadmin_port = 35357
& z2 V) X: R! _#admin_token = ADMIN9 |5 Q! X. t% ]
admin_token =hastexo另外一个地方是7 f8 v5 K( t& w9 u( w
[catalog]4 J+ k: w) E! l0 U' a: t: K5 \8 H
#driver = keystone.catalog.backends.sql.Catalog; c. `: `, V6 U% D7 H; Y
driver = keystone.catalog.backends.templated.TemplatedCatalog% }% M. Z" P* _
template_file = /etc/keystone/default_catalog.templates
2 H: Y0 Z) H. D5 Y5 X0 O4 h7 A! ~
/ E7 d) V2 |4 x8 ]! g重启服务; C- J2 Z7 R5 }4 D3 q2 Q, \+ B" ?! W
service keystone restart. x+ k: f1 t5 O! L* X8 ?
3: 导入数据
2 K) q) S# n" h这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。
- @# Y2 @6 o% b+ Yhttp://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
; A# |9 D1 p7 _- W0 Z9 c下载脚本
0 N7 ]/ C9 G! r3 T9 w/ ^ wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
& e& e$ k' C, ^0 X# u7 nmv keystone_data.sh_.txt keystone_data.sh
0 K$ J3 U! v$ U
& y7 |: u) a! ]7 t让脚本可运行
3 i, Y1 v3 K+ jchmod +x keystone_data.sh
, P6 g0 _2 L8 ~) ~' v$ t1 v运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
3 C* J3 E. D- {3 e+ m4 M第一个是登录dashboard的admin的密码- K# t6 U5 f1 Z0 V7 [3 N
第二个就是keystone的token
) u* U) S% d: t" y* L0 N/ k! N#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
' x3 X# G! l) q3 |ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}. ^6 @+ D8 g  e, ~( u
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}8 \9 l7 p( j3 ~7 N1 Y# s- q
#export SERVICE_TOKEN="hastexo"* j4 q8 |  ]: f) j- `+ o" Z; l
export SERVICE_TOKEN="Centrin"
  _6 y/ W4 `& Z6 Jexport SERVICE_ENDPOINT="http://localhost:35357/v2.0"/ Y9 W; S2 }+ M: c
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}1 @7 s( C/ V0 A

; r) `% V) l5 e/ w% A( d- @* u. |8 P3 U
./keystone_data.sh1 I' a& \8 O+ s9 P( _8 Z: N
顺利运行,会什么都没有输出
& D0 R/ }/ p6 J" l% O1 w0 L
) p7 h# l# t% [# p% E" K! R

keystone_data.sh 脚本

keystone_data.sh 脚本
+ g: ~" n: w# b& k: T

# k- e) k% A8 s2 c) w
# g) s/ z! A/ g# P0 _# y& m2 B9 e#echo $?
) ]# _- M1 G) l下面会输出0 ,表示正常。你就别再运行脚本
2 R9 H" I" k' t$ h- Skeystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
  X& m3 Z; l) w! L( X看到这些,就说明keystone安装正常。$ A* ~1 ]5 w) G( R8 K
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin  O! `; q. K, @8 d: W
export OS_USERNAME=admin
& ^# a$ S/ J; M( pexport OS_PASSWORD=hastexo! z$ N0 A) G0 [4 H: n1 X& F
export OS_AUTH_URL="http://localhost:5000/v2.0/". V* T8 {( ?" Z$ {, N! [
检查检查  @& ~7 [/ ?3 j: G
# export | grep OS_5 Z$ O6 S3 w! }7 G' `' D2 i
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
+ v/ d0 Y/ w4 i9 cdeclare -x OS_PASSWORD="hastexo"
- P. C; |* b. udeclare -x OS_TENANT_NAME="admin"
, l$ ~) Z: b) p3 \9 c9 c) T% jdeclare -x OS_USERNAME="admin"1 q( ~% L( p( N' n
这个时候,直接运行
- J- d5 E$ B% t  m! Q' Eroot@node6:~# keystone user-list3 q: f# A5 n4 A! @% ^! J* N: P
+----------------------------------+---------+--------------------+--------+1 G: l1 a5 R9 J/ f  R
|                id                | enabled |       email        |  name  |
8 T/ k2 r6 J- {/ U+----------------------------------+---------+--------------------+--------+' R# J; H( o8 }5 u3 I
| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |
# {- W* J, V9 A5 X) W9 W| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |
# K1 k8 d1 I: m* `# F; R3 z| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |: n( e5 I- n; i. P: g. t
| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |4 K* I4 _- f3 j0 b
+----------------------------------+---------+--------------------+--------+
- E6 i; q% ^: d; u5 X& S
2 E. e2 a9 Z2 I$ `! m% A5 S
2 H  K* q/ j5 L8 T
2 i% P8 t& h* P: P, @四:安装和配置glance$ y  H/ N0 D6 X) s0 n" E0 Y
1:安装软件  c1 x# e9 K0 I* }  m
apt-get install glance glance-api glance-client glance-common glance-registry python-glance* a- @3 Y% I, X& [
2:配置/etc/glance/glance-api-paste.ini
. W4 @2 ~, e9 _0 Q修改文件最后3行,这些设置都是keystone导入数据的时候设置的。9 [- `% H6 I8 ]* G
admin_tenant_name = %SERVICE_TENANT_NAME%- z0 Y7 ], u; B; \; W2 {6 i
admin_user = %SERVICE_USER%
- {6 ~$ A( x- ]4 i4 d' b" V0 L# Tadmin_password = %SERVICE_PASSWORD%改成
4 B6 G0 e; m$ d( {. ^8 Jadmin_tenant_name = admin
3 [' p0 m& D2 `, ?  K$ \% W2 Kadmin_user = admin
) |+ F0 m, o0 e! w5 j# |% J, \9 X0 Gadmin_password = hastexo  J2 E  e  s) Z2 \6 y
" P2 e' `% z  F: Q
3:设置 /etc/glance/glance-registry-paste.ini- k3 |3 ~1 J! s# W
也是修改文件最后3行,和上面是一样的。5 _3 b5 G" M: F) N" Z6 T
admin_tenant_name = %SERVICE_TENANT_NAME%- N# |% ?) ]3 r6 S
admin_user = %SERVICE_USER%2 k5 K$ g+ m2 r1 L5 }" d' s, B$ R3 y" T
admin_password = %SERVICE_PASSWORD%
% W* {/ t/ a" ^; G2 `$ o/ ?改成
& u5 }* i/ ?5 N, padmin_tenant_name = admin  P' x! n+ V3 N) r/ u+ B
admin_user = admin( U7 ^: G: [9 Q! Q6 _+ Z- V
admin_password = hastexo
7 N5 [/ S8 }7 x" z9 b* s4:配置/etc/glance/glance-registry.conf4 \/ N7 z  k! [  |" H
修改. A6 ~9 m0 g$ b
#sql_connection = sqlite:////var/lib/glance/glance.sqlite: u2 W; S+ G& a3 E9 N* [; ]
sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance, c# g# @* g9 h4 v9 ?9 \

; K, V% f9 Q6 E0 C- A
' F0 c# @1 w7 e. |" |( k+ d+ N  n在末尾添加两行
0 S+ z$ Q" I  V# P2 E# N[paste_deploy]& P( V" e; G! B/ H- J. A
flavor = keystone

! |8 E2 t% B( l  R1 Y- x* R
# i, @0 {+ C7 K2 l# r5:配置/etc/glance/glance-api.conf) F5 }7 {% }0 Q! ?0 V/ O4 C0 `, B9 E
在末尾添加两行/ E% z- N% z+ N; n: Y) ~
[paste_deploy]
. j; |. G* U( I/ ~$ I0 T8 Q3 A6 hflavor = keystone
8 g& P0 S1 R/ E( ~/ N& l; i

4 e! D$ `3 e" x8 o# b6:同步数据库: x- T8 a' U5 j0 c+ z$ F; v- C4 ?  q
目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
2 ]/ r* D5 }8 K5 [7 L# glance-manage version_control 0
1 ?! x' l' p& I# x. O( Q# U# e# glance-manage db_sync          4 ^0 z7 ~! L4 P* v* 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.
4 b% h' E/ r( `! W  i  useexisting=True)
+ a2 H! C3 L6 J# t& e+ e重启服务5 w% Z- U9 n/ E7 N. g, d9 M2 R  l
# service glance-api restart && service glance-registry restart" e1 X( ?2 y) u5 }. I6 w% x* r
glance-api stop/waiting3 k( L$ @" w$ S+ O/ ]. N
glance-api start/running, process 13321
% ~3 r9 z3 F. E- R' ?1 r$ D" @& zstop: Unknown instance: 2 E7 y  T" T8 B- O) K* B
glance-registry start/running, process 13327$ E: p. e$ M5 h0 F  b% g
; d6 G; D* F. R, g( ?8 X

! J$ x: h% k0 U' s7 z& P# r7:验证glance服务是否正常
; T+ r- f% k. c# f- j下面的步骤照做就可以,具体原理可以看英文
2 W; V3 o" A2 w7 d$ W! ]5 ]7 `; hexport OS_TENANT_NAME=admin& o: A) C  Y/ [" H8 @  [, K3 l& h
export OS_USERNAME=admin
" p" A8 [; |- f. iexport OS_PASSWORD=hastexo0 F9 w) ]1 o& A1 v5 b+ H! ?4 M
export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查
) ]# @* |- g! k' U" j  U# export | grep OS_! m- G% T! B6 |7 [4 i
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
% f, y7 E7 z6 fdeclare -x OS_PASSWORD="hastexo"+ x3 Z, i& n3 n, W3 g' J, ?
declare -x OS_TENANT_NAME="admin"
: V& P" U0 I5 ?+ \$ A" L  Hdeclare -x OS_USERNAME="admin"
: Y$ a: Y# ]8 V4 U! J运行+ p8 J0 k$ I( T7 |$ O! j; ~
glance index4 ^+ Z8 r) B2 R. C$ k/ L/ e
没有任何的输出。表示正常。- b" [; `% Z1 G: `' v
#echo $?
% z/ B( J, A$ p2 v% I+ l, p% w( q下面会输出0 ,表示正常。
+ R+ ^9 J! y0 x4 z/ \# glance --version, Z: P. \# f: M
glance 2012.1( t# j" I8 K5 W& T; h
8:下载镜像并上传
+ U2 J% O  n) @7 Q- V: ?% U+ K$ Eubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意
! N1 O; z- y. e这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。
+ ^4 [2 o- Z+ Z+ D# \$ T+ q下载镜像
3 A( o. d$ \9 z# S0 b. i. i! n) |http://cloud-images.ubuntu.com/precise/current/) z" C) l( q; M. A3 Q
这应该是ubuntu提供的最新的稳定的镜像。
/ U- d- V/ o; M' {wget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img
# {# ^/ C% ?8 L7 r4 a' ]$ t上传镜像
  {2 K0 g% ~4 R& u' k1 a, t7 W4 Fglance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img5 ^  {4 W4 }, s0 C/ m" f$ ?6 n/ Y" H
这里还有一种方法上传,如果你没用环境变量。
9 Z7 B! }: q6 F) zglance --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
; g* `% `& c) R" w上传完镜像后。在运行
( M" G' Z% m; w/ wglance index
4 K8 s5 `) y/ D6 L' G7 b或者
. b, F* v/ s; j2 h2 g1 yglance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
3 h: D) _: A8 d; L就可以看到上传的image。# n# z6 H/ U) p" w6 C+ ^- N
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg & c4 ?: ^; w1 h* h- h" e7 D
五:安装配置nova; T' ^8 D) \; i) {: e
1:安装nova相关组件
5 a5 v# \; i* [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
. o2 e# }) u+ d% o( D3 ]) s4 t( T# N2:配置 /etc/nova/nova.conf% J$ l" }( s/ T; b$ o
把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,
, D% ^4 `$ @( U如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。% ]9 {, M3 {) s7 S/ c
root@node6:~# cat /etc/nova/nova.conf1 Y% L# b4 H0 J- a
--dhcpbridge_flagfile=/etc/nova/nova.conf
! {" |/ f8 q$ f2 Y--dhcpbridge=/usr/bin/nova-dhcpbridge$ n4 \" X2 s- R  _
--logdir=/var/log/nova2 V6 n9 Y: q& @+ b4 A
--state_path=/var/lib/nova6 `0 Y6 v+ E- S' W
--lock_path=/var/lock/nova- ~+ }% [0 T; r/ n+ J: T
--allow_admin_api=true  \; `7 s  c/ a4 j
--use_deprecated_auth=false
1 O, S6 f; t7 r$ n, m--auth_strategy=keystone9 W( G/ h4 e7 w: e( g
--scheduler_driver=nova.scheduler.simple.SimpleScheduler" Z5 G' D' ]7 V+ u$ @8 ?, B; g
--s3_host=10.42.0.6% p5 m$ E# h# X2 }! I
--ec2_host=10.42.0.63 E' M, x& s/ f6 Y! i0 ^- ^7 [9 o
--rabbit_host=10.42.0.6/ E9 B( D, ^8 W3 X$ l& L) h6 N; \
--cc_host=10.42.0.6
4 Y& c! \' B+ g: y+ Y/ U5 {. _--nova_url=http://10.42.0.6:8774/v1.1/7 X* X" O4 `) v7 c
--routing_source_ip=10.42.0.67 ^; d  J2 {  V# j3 c
--glance_api_servers=10.42.0.6:9292; j/ v6 y6 y9 w1 Y) |/ q5 s
--image_service=nova.image.glance.GlanceImageService2 A7 X( i, r1 c% F9 k' m. X
--iscsi_ip_prefix=192.168.22
+ @8 W6 s- V; L7 P* H1 Y- Q--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
2 H. }- v& z: r! n--ec2_url=http://10.42.0.6:8773/services/Cloud
" f' z, i+ I8 h( r7 c! R- P--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens  w! C3 y9 }, \7 u, f
--api_paste_config=/etc/nova/api-paste.ini
: E! s- z- u5 ^  j' q6 E& L--libvirt_type=kvm
$ G) O' j5 f  ~+ l: ^- T#--libvirt_type=qemu
5 P  b5 S9 q$ B5 s; U--libvirt_use_virtio_for_bridges=true
3 e* L2 ~( Z! w6 R6 k$ Y+ S$ ^--start_guests_on_host_boot=true
" h8 b0 z: D( y* i" Z) ^* ]- o! O--resume_guests_state_on_host_boot=true4 }4 N7 d$ A( O  L" w

8 D2 N6 {- x* q" a& G+ M#novnc
& V1 ~, G' ]/ \! w# H5 }--novnc_enabled=true: \- V$ `5 W( A& I" b
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
' `+ P" _2 D0 }: k" r4 g--vncserver_proxyclient_address=127.0.0.1% b' U; D1 I2 \- D9 ^  ~
--vncserver_listen=127.0.0.1
. M$ G3 ^3 L# Q4 q3 E/ Q) ]7 }* v6 x& m+ W/ m  g" S$ g, j# Q
# network specific settings+ q- q5 s5 |3 E* ^$ r7 I
7 W8 J9 u0 e7 C, P4 S6 X- h
--network_manager=nova.network.manager.FlatDHCPManager
' H* ]: R' o9 z& g--public_interface=eth06 o7 U' s; ?. k* ?
--flat_interface=eth1
: T. z- S5 T& P! b' Q( {1 Y# J--flat_network_bridge=br100
- Y7 P4 V& f5 e, f, y--fixed_range=192.168.22.32/27
* H, k0 b) j& V7 L% K; l--floating_range=10.42.0.32/27
6 v7 _' o: n+ `8 t- ?- |, i--network_size=322 O: `: ]7 w; P
--flat_network_dhcp_start=192.168.22.33  S; Z# q" ^3 \1 x! R& M, n* c
--flat_injected=False
' O8 `8 s$ x; i7 O- e: L--force_dhcp_release
' |5 h9 L4 O% `* n! B--iscsi_helper=tgtadm! h) F' Y0 x9 ^% w; s4 V/ m: X
--connection_type=libvirt, Z% h/ u: B$ s$ e# F
--root_helper=sudo nova-rootwrap
$ p! s( T* _, K8 l( V. }" ?#--verbose
7 f2 r. Q4 k4 s5 F/ P& ]--verbose=False
) L' ]8 x' O- e+ g* ?7 U0 g) A

' p' \; J3 q/ l3:配置/etc/nova/api-paste.ini+ c7 T7 ^( s  o1 ^7 G
也是修改文件最后3行,
% d) A; e  o+ F: Z/ M% `admin_tenant_name = %SERVICE_TENANT_NAME%
& u5 e% e3 m7 [" j  s7 j* U7 u. madmin_user = %SERVICE_USER%- n% F9 ?% {' r
admin_password = %SERVICE_PASSWORD%
8 Q% x1 r+ a/ S: u# V改成
) N3 r! Z- Q) }5 ^# Ladmin_tenant_name = admin) Y# B4 `8 u- H4 V- D4 u* C
admin_user = admin" i/ `& K% I6 ?0 X8 ?% P/ R
admin_password = hastexo3 z. x; ^8 a; `' J
4:停止和重启nova相关服务
+ C7 R1 j- J7 M1 m& F5 G% |for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done0 m" ?/ B  g4 y; A& A

# U, z  f" z- V+ f$ \: u5:同步数据库/ `- ^5 J. c- Y
以前我运行同步数据库,如果正确, 当nova.conf# S+ A+ ]! W7 W9 E$ `  U
--verbose=False/ q9 E$ W; u* P) x- T' V, q
是没有任何的输出,否则有一堆是输出。
: m7 O2 |8 C" ?+ s* d. v# cnova-manage db sync- M% I6 b$ g1 R+ k. N# V0 ]0 B

9 J  A' r  ~% f" b4 p1 e* | d386ae19ebc4b74515d430adcffc1e178b821518.jpg
/ C9 w. ?: i' G( z2 ?. ], u4 s) e
创建网络
  ^4 C) T. r5 Rnova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32
+ g5 M1 \6 g% b/ q8 _# x' [
d3a81f087bf40ad11f734058572c11dfabeccece.jpg
8 F$ Z. P& ^. S$ k; `设定floating IP
6 U. T. L8 x1 }1 s' s3 Rnova-manage floating create --ip_range=10.42.0.32/27% q5 {; O! l2 L. m! p
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
) o2 D, y% n3 e  N设置权限
1 _5 n) [6 N  A; S4 Achown -R nova:nova /etc/nova" f/ W7 V" p: i
再重启相关服务0 ?; ^8 W. j! X0 Q  ~: i! g
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' d( a$ K! l& U! S! |7 O

% `- T5 S: p# l+ M8 j+ d" B6:检查nova服务
% r# \0 u& y- r% i: x' \nova list1 k# X0 m; z2 R2 l0 X  a; e
nova image-list
3 Y6 g' z- L# W4 K3 S% D8 k+ Fnova floating-ip-create+ z6 H% H1 Y" x! _# h9 z" n# R
/ S5 g/ d1 @" ~1 {2 W4 ^
3f1e66899e510fb330aef02cd933c895d0430c2d.jpg ; I( I( b7 h. T! z" q+ I3 G" r
六:创建第一个VM, e4 \6 X6 [8 G" q
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。1 Q9 D* s- w% X1 Z/ i: r
1: 创建密钥5 |- V) _" R* b8 u: r& X
# ssh-keygen9 D6 v1 q- s, r  A; Y) v
一路回车,就可以了。, r- q8 o  g/ I  i7 T0 F- C
9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg ! Q7 T4 e* V/ c; v$ W
2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1
$ @6 p- I, s0 f8 o7 g4 V0 d9 M5 d
这个时候,就可以查看到上传的key
' H  m( C, q1 p) aroot@node6:~# nova keypair-list4 `% {; d- q3 K7 ]+ k' h' g
+------+-------------------------------------------------+
, d1 R- S  d0 h4 T1 X' Z| Name |                   Fingerprint                   |
; Y4 |) z  f, I* S4 u0 @# V+------+-------------------------------------------------+
& [4 ], q) N2 s1 B* T2 Q6 T| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |3 h; R: ~: _7 |" h, X
+------+-------------------------------------------------+4 Q3 _- `2 D( Z% W
4:开始创建虚拟机3 r7 x0 N; X9 b% H& S
查看image list
- ?2 K# z- [/ x/ ?nova image-list4 C0 e" q  N2 [9 x$ J+ ?

! Z! S- r9 e8 x查看flavor-list! `" x8 Z* `  Q5 }5 i' s0 I
$ P6 w8 S  z3 z. ?: M% |
nova flavor-list
# G$ a/ W! G4 b: e1 B创建虚拟机' B) N6 F8 L( |
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator4 ~( ^1 l, T1 R4 u
看图有真相
: A6 Z7 h2 \, { 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg
( u4 ^9 M, [& P# U' ]' Z1 S+ w 查看一下创建的虚拟机
3 ~. R' D/ b8 `2 W8 E) q. T
nova show superfrobnicator0 }4 w& }. y* V% D) H9 T- s
61dd66ec54e736d1a27346b39b504fc2d4626979.jpg
: b) T& x9 V8 z8 I  [# B5 V

1 A- r9 `8 v# G" _ssh 访问VM
* ?/ j( e0 N9 x+ s
" u8 t& P+ A6 Y" T; }3 B  q2 `! X打开防火墙/ \$ x% `# }, f; m0 ?3 r; i
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0% m$ ~! m" ]& E3 r! |1 j8 b' n
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
7 W) `( d7 Y% R6 `# @! w这个时候,就可以直接ssh到虚拟机上。
5 T* |! K' a9 `4 w8 K/ Ossh -i .ssh/id_rsa ubuntu@192.168.22.35
2 V: L1 f$ w2 M& S, F4 {; r, \, d这样就可以登录服务器。+ B/ B" |/ ]# H0 D1 \# E) N
Floating IP访问- }- Q/ ?! X3 y
如果希望访问floating IP- i2 X/ ^8 e( S# z( L$ i
申请floating IP
! K( K% u% T1 F) ^nova floating-ip-create  m/ \+ d. h6 K- ~7 c8 Y
关联vm( O, D+ F# V3 \$ G2 P; t2 r
# nova add-floating-ip superfrobnicator 10.42.0.367 v7 m$ p  ^! r! G6 i

2 P2 U( o% }+ l7 ?# D 查看虚拟机
+ U5 V; L( B" Z! e# T) X nova show superfrobnicator. k3 p% o8 F" U- [
ssh访问虚拟机
7 R0 Y9 U% C/ ?1 m# mssh -i .ssh/id_rsa ubuntu@10.42.0.36) a$ S" E% F0 O" N) z
查看安全组和规则2 B+ L+ `6 B  p* P* x2 m6 S
# nova secgroup-list
1 f8 @. x( J* O0 g# nova secgroup-list-rules default
0 u# K5 P( r8 o5 h看图
2 N( c" N3 W2 a" d) `% `! E8 T ef00c839b6003af371e5f5dc352ac65c1138b606.jpg ( J' s5 k- z3 T7 Q3 T' [
; N. w4 Q" C( W% t
看看结果
( N, [  U2 Z$ r/ M4 P# ` 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg : h, C$ g" O9 @- C/ \. o- r
ssh访问vm' z# Z4 E) K* p, V2 }4 J

% [3 V5 S9 b( X- z/ O4 T
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
+ i: C, u  m- c
% c. X9 r0 n3 x: ]' o
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg 1 u6 ~: R4 C8 w; g' z$ M; _6 R+ S

1 K. B2 Y, p; Y# f有用的命令; e4 V% @1 n% z7 z
查看keypair8 A8 Q7 M# G8 o
nova keypair-list
0 u  K9 _; c/ B6 [9 l删除keypair
  z- G- A! x& B  e/ J& O/ lnova keypair-delete2 K6 y/ {6 G% r9 L! {
查看vm+ y: {" O( L& K5 b3 G
nova list
; |: \6 h% K9 q删除vm,vm的ID, L# D/ O* J5 _7 @8 t
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343
: J; a# g; l' I4 |
9 h8 _6 \7 }+ y% X# A' ?
' F3 g! o* I, y! j七:安装和配置Dashbaord
  {4 w' z0 v8 {7 C 1:安装dashbaord
4 O& }) C' @9 D, A& [$ A+ Yapt-get install libapache2-mod-wsgi openstack-dashboard0 p( A8 I# c/ l
3 _$ ]  e6 q- s5 w6 w5 A

$ O: ], I8 S( l7 R  j这个时候,你就可以登录dashboard
2 G  I: G( u7 Lhttp://10.42.0.6: A; ^* {" ^+ `. y& r) Y* s
user:admin
% c$ u1 C  f) t8 U/ k/ r! cpass:hastexo. y% a) R5 s5 Z6 K" E9 L$ p

( v% F" @3 z$ f. }! z 29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg
: Z  r/ g5 n7 X- v/ H
) c2 E5 j& k  K9 Z3 W9 p
6982e5198618367ab223fa612e738bd4b21ce53c.jpg ) P8 }6 b( G9 c9 Z  R

2 s& M5 j1 K/ m8 o/ S
0 o! D) O9 B0 T  s; Z( O" m! r" b1 \1 ~
5:理解project和user关系3 }0 M  t5 n" ]" W
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。2 u  C. V1 q! Y5 W- t1 k
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。1 T: P3 d; g, N  D
我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行
6 ]% O! }  n. k2 {& e0 E! Z 6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg ' I: L- e" Q( [, n# K: c7 ^* y
( V7 b, P$ J8 R! w' ~0 G5 N$ F2 R9 H; Q- ^
八:euca2ools 工作
. q% h9 O3 L6 O6 N! i2 s9 z. c: ieuca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。
- G& w  B4 I9 u; R) ^+ V! K2 r' Q1:安装euca2ools工具
3 W9 m, C  y, B$ e* L3 p$ _apt-get install -y euca2ools
, ?3 t  S+ J3 d6 [; s7 c& Y9 ]2:设置环境变量4 u# W7 b2 F# \; n. k! |/ c6 w/ h- a
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')" Q! }# G/ K4 c1 M$ C# b* H+ f9 W
export CREDS=$(keystone ec2-credentials-create)* c# |* P# r5 q; ?" N$ [
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }'). G/ K9 x* C, J
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
" Z' k; Y0 ]' D" U9 i8 [% i# g& P3:运行命令' [+ w5 R1 s1 C) W3 K  R
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list
; U! t) f+ F; h- H现在Essex对Euca的工具支持应该比Diablo好很多。# Y' U) P" e4 V1 u( ?# U4 R4 I5 ~
96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg 8 Y: l, M# ~% i# p0 G
列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances
% t1 Q5 J0 {$ @" v, c
4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg
  {4 s# t. R; M
. {0 V9 y: O1 @1 n

. C$ O$ n6 x1 D/ LAppendix A:  使用nova-volume 5 j0 n% y+ E* e+ W
Essex Dashboard可以管理nova-volume。有两种办法来实现6 Q# N" y) P4 S
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。
7 v& z& @& O& y4 E* w  x9 T
( J8 e- |3 G2 p0 R# s" w# Q: u1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,$ i5 F# v, ~) N; Q/ S+ A/ O
新建一个文件来做 LVM:
. w1 \# J0 L: Z+ eDD一个设备
$ R* \, Q: F4 w" o9 F5 v2 y+ J9 Z# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0  E2 h; p! ~: e' c
加载一个设备
% d% o8 h: ^) n' V5 M/ d# losetup -f nova-volumes.img% [) M* `3 m; Q+ @7 G! P
查看加载情况
  ~7 F- r9 ]0 ~1 ]2 c# losetup -a
3 L4 M, A5 U$ D' E2 w5 o2 }8 y/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)- [6 T; i6 z/ B( f) G6 B
创建一个nova-volume的卷5 `1 a/ b( R2 m0 r1 w9 u
# vgcreate nova-volumes /dev/loop0  ^) I5 `) h0 f: W
  No physical volume label read from /dev/loop0: \' |) z  C7 ~2 Q% x
  Physical volume "/dev/loop0" successfully created! ?7 G2 I! I. x6 m7 j( a- r
  Volume group "nova-volumes" successfully created
. d% `7 Y0 y+ N0 H* e" T4 f0 J查看卷
3 ]7 t% M7 y- U5 J, o0 q3 M& o; N#vgdisplay$ g6 u* {# i% G4 a" b! x
就可以看到创建好的nova-volume。, |) ?/ k( X: T4 r+ c+ ^! t/ {) T
创建一个5G的卷,名字为volume1  i# A& s) c: q" G
nova volume-create --display_name "volume1" 5
4 _7 B* [9 g! m创建完后,可以
9 o- R- ], T: T* i. w2 \3 tnova volume-list" b9 D. _. f' @
08daaede9c82d15854a67711800a19d8bd3e42b9.jpg " a; u5 ]" p; x" V
& L5 {( K2 }( H/ X  V
创建的过程非常慢,看status完成后,才能attach。
* S+ J. a; d. u如果希望删除创建的volume,目前我知道的就只能通过
- i# S# r* F8 s: M# F6 ceuca-describe-volumes! L+ e' l) K& x5 L' I* h
euca-delete-volume vol-00000001
5 `5 ?' G* [6 u  _. o0 }6 ?3 r3 `% h/ M+ K) p- \! G6 v, U
把卷添加给虚拟机,1,表示ID号, S  x- y% o$ t6 ^
nova volume-attach superfrobnicator 1 /dev/vdb' z3 f; S2 r$ x6 p" g7 O0 w

$ T$ t: ^8 V: [+ j, V7 E+ S  y- e 2:单独一块盘* J1 ]  B* T/ R- b
# pvcreate /dev/sdb1' P- t- e: p7 F! N% B: k) C
# pvdisplay1 [5 H  h+ u' ~" w/ }2 }
#vgcreate nova-volumes /dev/sdb1% G! x  ^/ v+ H# n
# vgdisplay, ?: @# C0 {$ p) k, Q) R& f1 r' F
这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。  o7 C, m4 \1 g( b; @
  t: R  Y5 D& g. Q3 r
# O$ r2 E& a) L% J
参考下面文档5 B8 A9 ?4 v4 |7 U3 `4 p  Z
http://www.vpsee.com/2011/09/openstack-nova-storage-management/3 b3 T. u% `# N4 D  k
http://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html
9 Q: F* N4 }: f+ e2 z) xlvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html
$ y- P% B+ A/ a  R% T: _" Y6 h) _% j8 t0 R% x1 S

! Y& K" b/ P* M2 ~  w* @2 a9 O) m: Y* {
3 N3 s, U' M- q

6 ~, b0 r+ \1 ^+ U$ @2 \! C8 HAppendix C: Dashboard 创建vm,允许ping,ssh登录; G) c5 E% Q! x) J# O
对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
- i4 c0 @6 g7 F$ ]* ~! U: v不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。
! u  r! V3 p3 M9 X- S5 s- n从ubuntu下载的image,只能用密钥登录,不能用密码登录。) _/ T/ W5 D5 S) d% s& d5 a
1:设置安全组 Security group
0 z, n$ L# X/ D: T4 K安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
  I9 m( I' ~2 A; z为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。" O' H9 Z! m; ~2 A5 V, h. p' ^
默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
9 H- ~# c  _2 P& Q0 y) o' r& B 9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg
! b# e% W, x% K: D1 Y8 t
( }  M$ c5 q' j& x& X

1 H/ M3 O6 A* E( F2 Z$ S8 g
) W3 b+ L- v; c" J) d9 u; {2:创建密钥, H3 [+ C# c$ b6 P$ N: V
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。
# X. I% o# S. Y0 t! f这个时候,你如果有私钥,就可以直接登录。
' z& w( ]: a  Y; F) i
" O) H( E4 R- W* a9 W2 Z: ^& a 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg & H7 J$ ~7 a8 D4 C: n0 J! I
下载私钥
- P8 u9 z. \# K/ b点击create keypair,就会提示你下载私钥。私钥是pem后缀。
6 X2 e+ M& O% q, s 7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg
8 u$ A8 t. b% l- S) e2 Q2 o( N! D' ~8 n( z: e

1 G6 `$ J" n, e; t/ j2 r. N那么你就参考这个文档,就可以。
2 \9 j; P' y; w+ t, \5 l# H* v3:创建vm
' g/ [+ J1 n, B. M创建vm的时候,你会选择keypair,安全组。  |2 Z: N8 x, O! A3 k7 Q% ~
5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg 4 i$ h1 M5 @! F! @
. i  J& m9 d& i0 f) X! Z; p
; }% J* z1 q! v  t8 [. e1 M  h
46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
% d7 J! z: s7 B9 @+ r9 U% g4 o) j2 \8 N6 w* \0 i1 @
创建完成后,得到其实是一个内网规定IP1 S, S* f7 ?2 W3 x& n
e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg
% \5 N  n! }+ {/ x4 F. h

  w# H! U  G# Y$ {: x! `9 R4:floating IP
/ c1 |! {( q! g9 Y- i' x4 A; V% e9 m给虚拟机分配一个 floating IP,可以理解成是公网的IP# O, a4 l& T! N! T
8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
# I: Z# P" p; q$ a- T2 d  y分配完

& H6 q! H, \8 W' M7 S 60d25790f603738df2568f99b31bb051f919ec45.jpg , w% k* H+ k9 t% H
关联vm

% w" A, |) z2 v, U( r( l af15baefce1b9d161e8719daf3deb48f8d546419.jpg
% F* m, D" ^: Q5 S* P' @" B
  o( `  Y" A' F) z' j6 X

+ f, Y1 M; T/ Y3 w, d# I% {0 f6 f1 {4 h8 W* `+ X3 C, ?
看看结果+ o" _; ^: u% g1 ~) {8 o
3c0efa1190ef76c647bf78909d16fdfaae516774.jpg 3 L% l) ]9 s% T  s4 w5 N
2 V' I6 A  T2 B
5:ssh 访问vm: P2 \2 Y/ Z% p4 M
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。6 w5 a" c  b1 l
对于ubuntu提供的image,ssh的用户名是:ubuntu,  U  @- ~+ q: X  T
SecureCRT 6.x版本
$ G% D2 R$ t+ B1 m3 w& u  k对于6.x版本,已经可以直接使用pem后缀的密钥
& Y! x! V6 z8 r8 F) @6 e" i
& }: |4 S$ I" C6 |9 R6 w e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg $ {: `8 M$ R. A) U5 ^' A2 l

4 p! e: W0 w% E$ D& O1 h  |" Hputty登录
* m) q/ Q8 s6 k2 Z! I- \9 h5 \4 b对于putty,需要对密钥进行转换。
2 N( |& F' _( v. c# Uhttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html, i- q! w' }5 I( {3 n* m
到官方网站下载:PuTTYgen这个工具9 E4 u# f5 q* m6 s3 J
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以7 K! Y3 b1 {9 F6 [
67da7663053a03280d33fa5f.jpg
( m8 |% [' r: `2 F* y: z  e' @- h
& ]% F1 X0 k6 R8 X1 F
存放到本地。- G7 n, d! b; r0 h: L) t* F
设置putty使用密钥
! G6 @+ ?% X' b4 i" r8 i 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg 3 u% [! l. ^- T. [

) ~9 T" m7 m6 j! w6 D: h d520caca7bcb0a4664b806826b63f6246960afc3.jpg
, }- R) J! g7 z. O9 Q+ \, ?

. p5 B" i. s$ M* D4 O2 R" P; N. O4 H; E0 P+ o  a6 |9 D+ @/ A
linux客户端ssh登录vm
% p7 ^1 g( m5 z( s3 m; y如果你是linux服务器上,你可以上传密钥到服务器上
  y$ z8 c$ S5 e( X+ \5 v! ^) ?+ Z% tssh -i key_for_openstack.pem ubuntu@192.168.22.34
- h' j. L0 d. b) Y- c7 p! I: H就可以直接登录虚拟机。
' D0 C9 b6 m$ R
2 \9 ?0 e8 D! X: C7 @6 F; Q. l) s7 T4 h$ ^( D# S4 e
Appendix D:FAQ) t" y# N# ~: B  ?# L
1:我登录服务器后,命令都无法运行
' B: n/ q( }- q$ T4 U~# nova image-list* S- ?- z, ]( l$ v1 w/ h0 \( X: i
ERROR: You must provide a username via either --os_username or env[OS_USERNAME]" ?1 n& r+ E- ~' X- s) i8 T! `
# B( {# N0 X* ^( f3 \/ e4 C1 }
如何解决。
- i3 n( U! {7 W. t
这个问题,其实还是你的环境变量导致的。3 N. [3 X1 O- y1 w
export OS_TENANT_NAME=admin: [) Q( {* b- _3 [% h- ?
export OS_USERNAME=admin
0 c/ o! f  Q3 s4 I$ Gexport OS_PASSWORD=hastexo" ^+ W/ d% a* |7 v6 W5 i3 a  e
export OS_AUTH_URL="http://localhost:5000/v2.0/"
& q$ I( t, L% H. l( texport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }'). C. q2 K) ]6 e
export CREDS=$(keystone ec2-credentials-create)% T- p6 I, J% j6 {
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
; @0 T1 `9 V7 c! nexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。6 H. ?6 N' ?8 y0 t; S
如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。
3 F1 ~3 z3 V1 {/ i) a+ N- {http://bbs.chinaunix.net/thread-1958386-1-1.html
  W* {1 q7 h' z( E8 |1 y2 ?4 G" \+ E1 |  R5 W2 Y
root@node6:~# nova image-list* K7 t6 C& b4 h! T
+--------------------------------------+-----------------------------+--------+--------+# r+ D6 @. @6 _6 H; F# S+ U
|                  ID                  |             Name            | Status | Server |* o) D4 _: x/ B& d
+--------------------------------------+-----------------------------+--------+--------+
# F# J! D$ c( c2 D4 E8 @! [, G( F| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |2 o6 c& g' }8 T' @6 a# c
+--------------------------------------+-----------------------------+--------+--------+
8 n) {  F9 Z! a& L# x+ v2 F: V
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg : j- p, ?% Y* g$ ~4 U
  z2 g: F0 P1 D( n  U
2:如何用curl去测试keystone
) R7 c+ ]( ^* B" }% Q; j4 [替换红色部分,就可以了
( a. p$ [1 Z5 z" A8 o: t: V( B# 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
0 a6 d7 _/ a3 S9 |/ R+ ]0 w: y. H6 z4 A8 a% @; f' \+ x2 L6 W
" z$ p, m7 w* f, [1 K: l# C
博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb
7 w1 k1 f6 D7 D5 p" W3 p9 J! _( v& @; [, t, v: D% t
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:; ?( ^# D; G( q
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
! R& C! q9 E+ T, M7 f
/ r5 {  h3 \+ l5 \6 O& c" L0 z解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。% h  ~# b+ w8 |4 o) S
           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
" Z  y8 G5 l0 u2 q# `0 _  x" K注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
- v% n% y3 C. |4 V% R0 l- q; L, pexport OS_TENANT_NAME=admin
0 |! @, Y4 }. U& E, }- l% wexport OS_USERNAME=admin
1 O) |) C8 R+ B! Bexport OS_PASSWORD=hastexo
! s& b& F0 M+ h8 U, uexport OS_AUTH_URL="http://localhost:5000/v2.0/"+ D# u. J8 A, g+ o) q  {# m  }! c
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
: j" S2 i5 U9 l3 ~+ Z1 dexport CREDS=$(keystone ec2-credentials-create)) U+ N- `8 o0 T2 P" \! d
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')% c) E' ^0 I# ^1 X3 B/ |1 O
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
! G* T9 j4 s1 A8 s2 k1 o; |0 i# H+ s
现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑 0 l' u8 J+ ]4 Z: Q
4 S- r8 l$ `) r7 k- |5 I: ]
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:2 j- h& d0 ^! N* ?" t

6 t7 n1 Y+ X) `+ i2 J5 WSSH Secure Shell Client工具密钥登录linux:+ Z' G' ^- j  p( Q
  W. z2 Y9 x( ^8 k) t
http://server.chinabyte.com/365/8835865.shtml
: e! O1 w- K3 i- ^% _5 }' _: R' S6 W1 v( s
' l5 s6 B$ F! {0 ~  N: A, r
SSH Secure Shell Client用public key认证登录( K% [8 k( p" D! J2 t; z. A2 \6 O0 Q
http://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html8 I3 Y. c1 I) x  S$ N5 o

2 r- T$ L- o  i5 U- z# Q" d由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:
2 _3 K4 M9 |) f8 {5 a

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

2 m3 N, Z4 d" e1 V% J6 B
# v4 Q" i: y- z3 Q没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。3 m% w: c' I" B4 ~* Z
vi /etc/ssh/sshd_config& r9 G* O: ]7 Z% |) I
将PasswordAuthentication no改为yes1 Q2 s6 E$ ?  x3 p' z& H
service ssh restart
& b' K4 ]3 Q: V0 ]
) \& v' [5 V1 t4 x3 x这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。
+ k* I  A: i$ D+ V5 r; M安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版- b5 q9 G9 D& F4 I' [5 L

' I9 s; `8 ~- J5 [2 y虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题
. ~1 r. G; V* h$ b, C# K* N5 G
+ @# a) L# W6 y; y* g3 k( _1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
2 i4 c' X% d( ^vcpu.hotadd = "TRUE"- c+ s- Z, D! ?
变更为
0 U; m' u" L4 Zvcpu.hotadd = "FALSE"& ^) A" l2 c( n6 X8 @7 d
重新启动机器,如果执行命令: 7 @% s3 ~+ D+ m% t9 H% c0 p
virsh
- z8 B1 y: R% O- E& n进入控制台就没有问题了。+ l+ m) A1 y4 N! x: G  K; c) p& _
2. 修改nova配置文件/etc/nova/nova.conf& u6 V$ Y; S; d0 v6 |
#--libvirt_type=kvm
9 _& Y; Z5 r4 S0 f5 i更改为qemu6 L$ E7 @0 K/ a, @- a  [" ~
--libvirt_type=qemu
0 m" i7 G; \/ n4 V/ G: \3. 修改/etc/nova/nova-compute.conf
7 Y: H2 N" R5 A  r: l--libvirt_type=qemu
8 ~* e4 w+ Y* n, V0 b' f4. 重新启动nova-compute,如果libvirt报错% @" S( U- H# Y% N! |& @' k
/var/log/libvirt/libvirtd.log
* a0 t* P9 l" ?Cannot find 'pm-is-supported' in path: No such file or directory, H6 ~3 V6 y6 H: X  z
报错后需要安装4 {0 ]: i9 h1 ~( H5 A% L9 B
apt-get install pm-utils
4 v2 u( O7 ^  s* w# C9 F& R5. 重启libvirt和nova-compute就可以了
1 H( s% ^/ y. l0 Mservice libvirt-bin restart
" {3 t6 I* t7 A$ l, T6 M% Iservice nova-compute restart
3 d+ A" U7 x8 k6 G6 T- W
/ j3 t( H) `# i3 w  _( [' [6. 执行 nova-manage service list% z! W1 m& B; h* H8 _0 D4 I" v0 i
state都是笑脸的话,恭喜你,搞定了:->
$ [, ?& r6 U7 D
9 H+ s( s3 A% p" i9 O: z* F感谢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人群已满)

返回顶部