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

锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
查看: 13063|回复: 4

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑 , D0 U: K$ {1 U6 A6 g4 k" [

& L4 T% O1 i1 Q* X& {之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。8 h- k' B; ?2 ~" [& u: Q

9 A0 Z, X  ]4 {7 D) K原文如下:
% D9 n) W7 D. y; h* w8 B1 s1 n( U
1 s7 `9 g  p+ `& bUbuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex8 m# y5 {" ^+ a( h3 d  y0 b
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。  _/ n0 ~3 c6 p) u% e0 |! }( ^1 `! h6 X, ~
原文( l' x' H- d7 c, J# h
我下面的步骤,也就全部参考原文。* Y# ?% c& R8 N) t) L: P- }
3月27日更新:基本完成文档内容- V0 e' k& ]1 o4 h$ z
4月5日更新:重新安装第三次,修改了文档一下小错误。; J- O% b/ t( v: C& v6 \6 b
4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖! _( c+ |. A0 g8 R% z- q
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。1 R9 U% O8 v! t* N! g
4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。
! {. ~2 }* g/ l/ P. [* J 4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。* Z9 z5 v/ w5 x- F$ k0 O! a0 X0 K
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
5 E. Q8 C, D2 i( a& r" Q# @* ^# U 5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。' a8 ^) ~7 k* z6 T8 {* {
5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。6 B1 Z& h: e- M- @) N( W, J- O- z4 \

  N8 J+ e, s: M+ V* R硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。4 Y- z% P( ?# S1 `
下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
8 t  c* K- i$ D( s6 Z为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。/ f& K* i) [6 P- Z/ y( P
目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。. L8 z4 P4 j$ K

$ `! s; Z# q3 c  i5 H一:准备系统) ^7 K: i( H4 d! b- U9 D
1:下载ubuntu 12.04. 服务器版本* }/ v* ~8 W1 M0 s8 l+ e+ B
ubuntu12.04正式版本,需要4月26号发布,目前是beta2
6 k4 j) e& Z  W1 @& S( Yhttp://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
6 C' Q% L2 ^6 X& s
! T5 X  k& i9 K2:安装OS
. _% @# ?* O( u' o安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。6 e: s* U1 ^' ^
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。8 d. i1 K% E0 u3 W
装完系统后。
/ \) J& d! ~) d; {" d" ]# papt-get update, ]) }% ~. j* B" }' F
apt-get upgrade- \5 W4 Q8 [  [. N% Y8 Q) \1 H
更新源里的包,更新系统。确保你装的是最新版本的包。) \( Z/ a0 a3 A$ F

' ~' S8 u: K. v% W7 O" P/ F3:设置root权限
! L1 b8 E) ~, D3 G- [% d( W  q: a为了简单,全部都是用root来运行。5 G9 L- \) Q7 R5 `# I! Q
sudo passwd
/ L; }& v& J2 W$ j+ h' y; m! @7 F就可以给root设置一个密码。直接用root运行。
6 ?( A" D8 ?3 M7 W0 Z4:设置网络
% M( Q( j3 b& u! j6 R; x' g我的网络设置和文档是完全一样。这样也减少错误的几率。* }6 R% m8 }3 L; E4 ]: G1 U
root@node6:~# cat /etc/network/interfaces
3 p3 h' S2 Y; U: b* f8 _* J# This file describes the network interfaces available on your system
3 x! O$ Q5 f& Z. m8 t8 N0 O# and how to activate them. For more information, see interfaces(5).
6 b# |5 J# B# |3 }
* n8 S( h) T9 ~; L0 s  e% e: K8 k/ T# The loopback network interface/ Y0 C% t, K' [* X/ T* F
auto lo
# C, d# R& g6 K6 t8 ?8 yiface lo inet loopback# H5 c7 S( s4 ^6 U) Q
$ g: d$ u- `# M8 B* a2 L
# The primary network interface
  @4 s  u. J. `$ F8 n; J6 Q1 m) Nauto eth0( b; [5 [: Y' e( N- r- Y) q
iface eth0 inet static% b/ V- O+ W( c9 j) X
        address 10.42.0.61 {$ X( @! `/ d
        netmask 255.255.255.0
/ H8 x# m/ {& R        network 10.42.0.06 M% r6 W: ]$ E6 u
        broadcast 10.42.0.255
1 f; K. k) {/ G3 K9 C% g9 b& u7 H        gateway 10.42.0.1
( g9 U- d5 W  Z4 k' w+ D: _( z        # dns-* options are implemented by the resolvconf package, if installed0 M  f# u$ {: {1 Y1 g
        dns-nameservers 114.114.114.114$ |5 h9 t' f! x
        dns-search test.com
1 P8 W+ e; Z' N2 m0 l
0 c& B+ r6 B( e0 S* Oauto eth1$ J# H2 R, ~/ w9 r) y
iface eth1 inet static
8 h7 V5 c. d1 maddress 192.168.22.1* E( F7 h. e  n+ s% H# b
network 192.168.22.0% @- I2 Z# `, G$ G) M
netmask 255.255.255.09 U1 q% j$ t  C, x8 P
broadcast 192.168.22.255, V. `9 n" u% U( {% R

* |+ f; _6 T0 ?' _  j 重启网络,让修改生效
" t1 C4 I! e1 B; y/etc/init.d/networking restart- R. \0 k' _7 ~" C2 a8 J
5:安装bridge
7 j! b: l3 n4 _. j6 F6 n$ m& hapt-get install bridge-utils
% Q3 H* F0 P1 l* o" _/ x" ]重启网络或者重启一下机器都可以
0 h% C1 e' u- K( ~0 y) a0 w, H/etc/init.d/networking restart
6 Q# C  v, c. X' u/ C. H6:设置NTP
+ {- K6 M0 W9 G  c( dapt-get install ntp
0 [& P/ |0 V. u/ y& S
0 J- x  G9 E' x; N- b编辑 /etc/ntp.conf 在末尾添加下面3行# f7 Q4 c. n% K
+ O1 R( t! ?; U8 ]2 `. W: |
server ntp.ubuntu.com iburst
) W) J9 z4 ~' _9 Y9 @7 Nserver 127.127.1.0. H# t9 u, w. y  r/ h( |$ t* n
fudge 127.127.1.0 stratum 10! [4 Q& s& J9 ]. r5 P. w8 K& b
) A3 k, D  @; ?) E. C9 w1 f
重启服务- u1 h# L7 [; t
service ntp restart
. w: {+ w! g7 Z, o$ e7:设置Iscsi
0 {) H- Y: `. ^: zapt-get install tgt
+ n5 F! C; c3 U, S1 w) X4 Y" Z+ w重启服务; b3 |2 `& V5 k
service tgt start/ q6 G; `5 r/ ?0 R  E7 ^
安装iscsi客户端, S" A" c; ]8 y
apt-get install open-iscsi open-iscsi-utils
# z, `- Q0 |' g& F' k8:安装rabbitmq* E) s) n5 c, j" A& t6 f
apt-get install rabbitmq-server memcached python-memcache! i) U6 ]6 X; D& `
apt-get install kvm libvirt-bin# A" }( g3 }5 W" j! z

3 Z- p0 Y" p! h! R( \! W  O二:安装mysql和创建相关数据库
, u* Z0 r) `# X, _: pOpenstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。
6 {8 {% g4 U( ?6 t5 p% X6 ^6 _1:安装mysql
. ?: ], g9 k* p' m1 B过程中,会提示你输入root密码。* D& v/ I8 I! D* x. n; x
apt-get install -y mysql-server python-mysqldb' a8 J. G, e9 {
让mysql支持外部访问
, s; j$ \6 {7 p6 N/ @) Xsed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  
( q- a% U9 P3 j重启服务4 q$ H- i) I2 b, J/ k
service mysql restart( f6 a. A5 W5 B7 {; _
2:安装phpmyadmin (可选)
; c7 i! Y) x0 h为了方便,可以把phpmyadmin装上,可以比较方便管理数据库% E% u2 [! R' t& o" }  z1 F
apt-get install phpmyadmin
% ^( v% y+ L, y) U! Z安装的时候,第一个提示是让你输入root的密码。: R* ?/ n% K; \+ X( b
3:创建数据库! {9 }; d  E2 [; l+ }- S$ ~5 R: T" A
nova数据库,   管理员:novadbadmin,密码是:dieD9Mie
+ `9 k6 w+ s, w% K. mglance数据库,管理员:glancedbadmin,密码是:ohC3teiv9 ?0 F1 e! D( l
如果你修改密码,后面很多配置都需要相应更改。/ B0 u7 m3 v. \7 p% ^+ v
mysql -uroot -p
5 Z) A2 F, ~* v/ }9 B" H  {& gCREATE DATABASE nova;
: x  s. x2 w' o; t9 u- Y  YGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';# ~+ N# y/ o4 C& M( J- }' g& F" m; k
CREATE DATABASE glance;4 S# _" j4 w. |& ]0 D
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';7 H1 E. k% y; \% b* E' [! k6 X$ c
quit& J1 o$ B3 z* Y9 P

, D2 ^, C. L! z/ t" R6 N& Z6 o4 I3 v# W) s# U/ B
三:安装和配置keystone+ u& {' K6 ^, ?: ^8 m. a
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。* P) W& _8 o6 ^: W5 t, S' w: o& c& j
1:安装keystone( j, t5 P! E8 W$ L6 a% O/ P
apt-get install keystone python-keystone python-keystoneclient
- z, V0 s! n9 ]& s! n$ K7 P  E2:配置keystone
# |/ f! b8 K, }, T( ^3 P需要修改 /etc/keystone/keystone.conf 两个地方% w0 g2 V) o7 X5 D
默认定义的token就是ADMIN,我使用hastexo作为token
1 X: |  E* l4 d' r9 c- D+ V5 U# M0 O8 ]1 c
[DEFAULT]
, c$ D6 W* t/ o7 u6 ?+ J: Qbind_host = 0.0.0.01 ?2 j2 [+ c$ p( I
public_port = 5000
$ x' p- B' L, D9 V5 O5 }8 Yadmin_port = 35357% a. o2 E0 h# P1 F
#admin_token = ADMIN* t: O- q) U. q# ?2 V
admin_token =hastexo另外一个地方是  t7 G8 Z# I) I4 f* F" ?
[catalog]
& N. x1 D+ b/ m+ O. d#driver = keystone.catalog.backends.sql.Catalog
5 z& K- @( V& cdriver = keystone.catalog.backends.templated.TemplatedCatalog5 C6 S* I2 C1 Q# |/ _0 @
template_file = /etc/keystone/default_catalog.templates
# y" ~+ R' `. Y1 j
( y6 c4 @' W( `* W5 G重启服务
: j4 r( s7 M- ^8 y  D3 Yservice keystone restart
' D% \2 e0 Z+ ~. V, D. N% d1 i3: 导入数据
* _  l, b8 N) ]7 d+ _+ x& b这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。
- B, {1 k. G0 ~5 t. M7 I" L$ shttp://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
& d1 b+ [* m8 X% }# w下载脚本
" I$ H* z) L3 I" F5 t& i- m; g! T6 I wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt3 k# g+ N! T) W2 ]4 W/ G" t0 Z  @
mv keystone_data.sh_.txt keystone_data.sh
+ u! X) n" [& ]0 r3 W* r, `9 [5 ]8 V0 U9 k& U3 N' W+ N# E/ R
让脚本可运行- \! ?7 A( L" l4 H" {$ X3 ^
chmod +x keystone_data.sh
6 E8 W2 v) z4 @3 f3 R6 R2 p运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方3 |: q- D; @7 S4 r8 D2 k1 N
第一个是登录dashboard的admin的密码
7 v0 A% R( @  e5 Q8 Y第二个就是keystone的token
0 T6 G& q4 Z$ t) n& o#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
! |7 T' W% q# q9 YADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
& {4 W3 E- S. x& D, tSERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
* Q! o+ H% R% ^' n4 S6 h; C3 g; u#export SERVICE_TOKEN="hastexo"1 ~" D/ v# H) B9 h1 o) l# N8 Z
export SERVICE_TOKEN="Centrin"
; T. Z( m8 n- |7 d' i( Y1 }/ nexport SERVICE_ENDPOINT="http://localhost:35357/v2.0"" k+ T; ~: j# O
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
  F6 n$ }! E" M# P
3 n$ y" m/ H' j8 u# h; }; A; {  m* g  a) F4 t9 v
./keystone_data.sh. X; v; t4 {; D% q. v( g* Q) i3 M
顺利运行,会什么都没有输出

8 Q# a% f7 w. K1 j& v# j, v: r8 K  o- a4 C6 E9 @

keystone_data.sh 脚本

keystone_data.sh 脚本

: s& f' e; b# N, H1 O) I+ L% p
" u5 M' n% f. A8 U% E
" `5 p% t, Q; @/ a- J$ U7 R$ V#echo $?
1 b4 v/ k+ g, Z7 E1 G4 j下面会输出0 ,表示正常。你就别再运行脚本" y1 M% s' s7 T: Z5 E
keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
5 m* ]; d$ \6 f7 ~! O看到这些,就说明keystone安装正常。
- j! y$ I$ y# `/ E
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin  |/ J. A+ X2 e1 |
export OS_USERNAME=admin
1 p; s' e* o! }7 d7 n0 Zexport OS_PASSWORD=hastexo/ g6 o( Q1 d. f. S- Q2 T' F* t1 N
export OS_AUTH_URL="http://localhost:5000/v2.0/"8 ~/ Q& Y7 l, @3 g, I7 a
检查检查& b! Y" }& o2 ^% m, _# B
# export | grep OS_# s+ ~7 [1 P4 k4 i" k
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"# G. O" ]( W; m/ B  S7 W
declare -x OS_PASSWORD="hastexo"" N% i# j- T5 p, F$ i
declare -x OS_TENANT_NAME="admin"* U; b$ k# ~# ^  u; f. W" Q
declare -x OS_USERNAME="admin"
; [( b5 o/ S/ e1 d! r& ]5 r: U这个时候,直接运行& G( [! Z1 g* _  E
root@node6:~# keystone user-list
+ B; B$ }% t0 @- }! }. b+ W+----------------------------------+---------+--------------------+--------+
3 I1 A6 |/ v9 ^7 \8 I|                id                | enabled |       email        |  name  |
% A2 d, E' \9 O" l8 G+----------------------------------+---------+--------------------+--------+
3 \. T2 c: y5 {( c% W' W| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |. a; }2 N7 H( F+ m
| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |
# m4 e- H" a3 f1 M1 V1 e| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |8 g2 D; z/ `- d6 W2 |, p  ?
| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
+ ^; K9 v3 b4 S, E+----------------------------------+---------+--------------------+--------+. c9 \: N, d  a: z1 r% U4 k/ c. M0 N1 g* j
: z: s1 y+ M$ [; z

1 R. T0 T) l# o7 L  J% V; f# e* E! T' ?7 [! d" j1 O" v
四:安装和配置glance/ |* G2 H. X6 x4 ~6 ^% S* h
1:安装软件
) s* ~7 \$ i$ p5 y0 ]( b( oapt-get install glance glance-api glance-client glance-common glance-registry python-glance8 C" U0 m, }: h& ?5 U# F7 R
2:配置/etc/glance/glance-api-paste.ini
# s: [6 v, X% J1 R修改文件最后3行,这些设置都是keystone导入数据的时候设置的。: B! S/ |6 K9 I2 |* u
admin_tenant_name = %SERVICE_TENANT_NAME%% V! E2 J; x& [# y" }8 Q& [
admin_user = %SERVICE_USER%6 E6 a7 m7 ?3 y6 X
admin_password = %SERVICE_PASSWORD%改成
9 ^+ k/ `# U$ T3 d0 }admin_tenant_name = admin
' W3 F1 n6 _6 G) t3 y+ W+ |+ Uadmin_user = admin6 m' m$ h8 P6 b. |+ I* x, I7 _
admin_password = hastexo
$ \7 ~0 [; @8 _- }' m1 n9 W' _. Z' w# c2 ^, @$ ~
3:设置 /etc/glance/glance-registry-paste.ini
7 G( }& J5 _) {& l3 d也是修改文件最后3行,和上面是一样的。
: @$ t6 n4 V* c/ p9 Sadmin_tenant_name = %SERVICE_TENANT_NAME%3 }, \- z0 g. _* p
admin_user = %SERVICE_USER%3 O, [1 I1 r9 O2 c" k3 q+ Z
admin_password = %SERVICE_PASSWORD%
$ `' {" R( g  R+ f改成; ^/ g4 Y9 ?- G8 S
admin_tenant_name = admin1 C0 g$ E& C' b
admin_user = admin1 n5 J) \) K/ w
admin_password = hastexo, q2 M7 s4 W. c/ H& c
4:配置/etc/glance/glance-registry.conf
% ^) R+ ^2 B0 G( P修改4 g  z) c/ [4 c6 U5 }
#sql_connection = sqlite:////var/lib/glance/glance.sqlite! `* @* z0 E; {- ~3 `
sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance
3 l4 P8 h/ ^2 T# |' J: `4 a
6 |( ?4 q1 o5 o8 ?. B, Q% Q
! k1 }8 o* ~/ t8 B+ l' ]2 y' `在末尾添加两行1 O* K. |& ~. X9 i/ w5 o
[paste_deploy]
7 k5 \0 m# K' Wflavor = keystone
( c, M, L  R4 j7 \5 g# b' I
& z* {* J( u) ^  N7 K  m
5:配置/etc/glance/glance-api.conf
; ?$ h6 y. K+ {在末尾添加两行! H! _+ n! A/ H' ], k( H
[paste_deploy]
5 y0 Y/ p3 t( }' |flavor = keystone

2 w5 f+ o: K! l" K4 w0 o5 m- T9 p( |# B2 Y6 M  L) s! @- P
6:同步数据库
: G" D* t) H# \4 i4 A( m目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
% i3 l3 ?% F4 J$ O& ^9 F# glance-manage version_control 0
/ k7 f; e  f4 r% k# glance-manage db_sync          . l- i( ?. W9 F7 x0 S# W
/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.0 Z1 r% E# O) n- Q0 ^
  useexisting=True)
; i7 T, X# m* ^6 d# [6 l& @重启服务$ P( r6 f1 e# E* j# n$ k. W
# service glance-api restart && service glance-registry restart
2 u* S5 P8 O1 j8 l1 L& |2 lglance-api stop/waiting
! t+ g& }6 d% G5 w7 n4 U/ Lglance-api start/running, process 13321% Y6 g* N2 S/ A. U
stop: Unknown instance:
/ Z  S3 r, C4 {/ l/ z' cglance-registry start/running, process 133278 E8 D- l) Q7 j9 _  {7 u+ h5 f- h/ j

& \1 m4 v. Y8 @0 g* O# N6 M" P9 `% X/ `5 j4 D/ f
7:验证glance服务是否正常8 J" Y8 W% e6 x5 k7 x- Z
下面的步骤照做就可以,具体原理可以看英文2 V8 ]. d5 ?0 F" b& f
export OS_TENANT_NAME=admin
9 ]  i9 r3 R) J* P( fexport OS_USERNAME=admin
5 o: x- O5 V* B+ p+ {6 ~export OS_PASSWORD=hastexo4 l# ^8 s- N& N1 p3 w  h. Z% e
export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查7 |6 M5 _. X' P( S/ {
# export | grep OS_  r  W1 J6 Y% f
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
$ o( _  @6 ]" rdeclare -x OS_PASSWORD="hastexo"! M, Z2 Z+ A5 A0 n( u( `
declare -x OS_TENANT_NAME="admin"' x) ]% U  _. f/ f" c. h2 d
declare -x OS_USERNAME="admin"9 j* r* a9 ~* F: j; T$ D% b
运行
# I% }, h+ y0 \glance index
. O& p7 H" U& C& I没有任何的输出。表示正常。
7 L  I3 U9 X7 Z. t5 F: u#echo $?8 Q1 u# u7 _$ T/ x. ^# v
下面会输出0 ,表示正常。
& e/ r4 L: G1 f) o6 w# glance --version" y& @! Z: x3 E8 _9 D* s9 J, D- F% b
glance 2012.1
# p- Y" j) S9 n# H9 b8:下载镜像并上传) A3 z5 I5 W, z2 y- J
ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意% X1 F' f! r7 d$ m* G/ U; x
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。) `) p4 _* X" W; A/ O" k! w
下载镜像
3 G% z3 I3 e; r+ C0 r7 Q' whttp://cloud-images.ubuntu.com/precise/current/+ [) B( Y% o+ T5 K& e# n$ J
这应该是ubuntu提供的最新的稳定的镜像。
. F  q8 t8 {5 T2 g4 q( F% Dwget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img6 }; F2 m9 Q. _6 ]8 ~/ _* }
上传镜像
7 t; r" {* u7 z9 h6 {. ~glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img  j, N/ ^6 ^; ~" i" p! J+ P0 L
这里还有一种方法上传,如果你没用环境变量。4 [3 |4 T8 ^- _; |- @& \
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.img
7 L& X7 M; G+ U* M上传完镜像后。在运行
* D1 i- b5 J& }; a+ Q1 J0 y% T' {glance index- R" x+ M) `) ~' |# a
或者
/ ]& C- j' O6 n' C+ m" [5 vglance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index; g! m, B' [* o# J3 U1 t1 [# N
就可以看到上传的image。& ]& M( h# N, a  N% Q! r
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg . M' d, h; ~: I9 m
五:安装配置nova
6 Z  u6 a: d* @/ i5 D7 Q* K1:安装nova相关组件% P5 E" q( V1 D$ ^
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
! w8 a" x: C3 j# Z# `* l2:配置 /etc/nova/nova.conf
! u% S0 K) I4 G/ S6 E把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,0 n) F; X- d6 h) j: T2 i* E& I
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。
. f. Z3 ~, |& B" sroot@node6:~# cat /etc/nova/nova.conf0 M: d  m8 K5 e4 Z1 O; z
--dhcpbridge_flagfile=/etc/nova/nova.conf
8 N+ l, k* v7 o* p8 [6 l--dhcpbridge=/usr/bin/nova-dhcpbridge* J& S- M5 @- s' T+ m! ^, C
--logdir=/var/log/nova
2 R" V9 U/ n2 ]: y6 `2 a/ a--state_path=/var/lib/nova
0 H* P. i4 r9 a: D( M--lock_path=/var/lock/nova' N4 w7 S. |8 f
--allow_admin_api=true4 i% P: Y3 ^) F( z
--use_deprecated_auth=false
) {: U( _; f1 H5 c$ i5 R" K  e  B--auth_strategy=keystone- Q" ?6 L; O/ R) q9 V/ A
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
* |. C9 Y, }! t' r, N--s3_host=10.42.0.6
9 z' L4 b& U6 O--ec2_host=10.42.0.6+ z: n" q% X% R7 x3 A2 H
--rabbit_host=10.42.0.6
; a! o* I/ I1 }' ^6 x--cc_host=10.42.0.6* D7 P# ]; [& e
--nova_url=http://10.42.0.6:8774/v1.1// ]$ \9 Z5 A# \# d; N2 q
--routing_source_ip=10.42.0.69 P# F7 V, g/ X
--glance_api_servers=10.42.0.6:9292
0 E0 r; O  `: `8 e4 m- Z- k- b7 O--image_service=nova.image.glance.GlanceImageService
& X( b) E& a9 c5 @' D- s: t, H  ~--iscsi_ip_prefix=192.168.22
0 g5 }$ i3 l! z9 a0 E2 h& z" T--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova/ w% ]3 D0 h- F1 ]7 t
--ec2_url=http://10.42.0.6:8773/services/Cloud) q- x4 y! O- F/ L
--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens
2 ]1 L/ J6 _+ T% F--api_paste_config=/etc/nova/api-paste.ini% w! n, G7 k: ], [7 P! [+ A; n
--libvirt_type=kvm
7 w7 j, y" D. x. r' v#--libvirt_type=qemu
& h  t3 w0 A8 ]* C--libvirt_use_virtio_for_bridges=true
0 c/ b; Z' Z3 w0 F--start_guests_on_host_boot=true
/ Q, G1 n2 o7 s--resume_guests_state_on_host_boot=true
. J6 o! I' D  W
1 o4 p1 q+ W- O* y6 K) y#novnc/ m5 ~0 D- N# s- A' |; V
--novnc_enabled=true! ]% m; s" o& s- ~0 O2 S5 D
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html3 y3 o2 B5 P! f1 e
--vncserver_proxyclient_address=127.0.0.1
2 y: ]+ x& v1 ~--vncserver_listen=127.0.0.1
8 L5 p8 {, k* g& o& B, G: p
4 O0 Q' l# e; E* d! t # network specific settings2 o3 c" N3 G7 j  a

' t- {0 w  p- y# z--network_manager=nova.network.manager.FlatDHCPManager* ~' k6 c. F, C9 l. q' q
--public_interface=eth01 f1 B: g) A% S! v) @% o
--flat_interface=eth1: E' {) w7 ]8 Q4 p
--flat_network_bridge=br100/ x. F6 w* p: A# P' C9 o7 I
--fixed_range=192.168.22.32/279 b0 q1 Y- Z$ h7 O' l) N
--floating_range=10.42.0.32/27 0 Z- I  f3 G, o* I  V0 B
--network_size=325 i" B4 o) l! g' f6 y) O- {
--flat_network_dhcp_start=192.168.22.33
5 O9 b2 a$ v) M( ?. o--flat_injected=False8 \* `. S( l; k8 S& t
--force_dhcp_release  T/ j5 R+ l2 e! s
--iscsi_helper=tgtadm
. E! Y6 k1 L; S# a' ~2 _5 h6 C--connection_type=libvirt1 i/ u  R; M6 U$ R% w2 _
--root_helper=sudo nova-rootwrap
! m9 g% s6 T) ^$ z' N1 V' ]* d' S#--verbose
. C3 x9 Q6 I- J. Z: n. P7 c--verbose=False
5 w6 W- x8 H# ^! u, y
0 u9 ?, d* Z. M: e( _- e) v
3:配置/etc/nova/api-paste.ini# V. Q& G) {) o$ }) `3 a1 J
也是修改文件最后3行,* z. l7 Q4 k' k$ a  y3 E1 V: j
admin_tenant_name = %SERVICE_TENANT_NAME%
2 E6 x/ A$ M, qadmin_user = %SERVICE_USER%( c6 b  |% P/ v
admin_password = %SERVICE_PASSWORD%
! E) H) d4 d# u9 N) ^) N0 P改成! n4 F# [. _! Q
admin_tenant_name = admin
; F" }: C, X; p; A5 ?) e; l  jadmin_user = admin& W9 M0 k8 }" ~8 a& Z# o
admin_password = hastexo4 v  _& c2 O! ^% d. Q/ A9 _
4:停止和重启nova相关服务
) h: o5 l6 D3 `+ X* Bfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
) T: M$ b' e- ?' h
; c$ ~- @+ ?8 P9 A4 J6 l8 A6 [1 Y! V% O5:同步数据库$ q( \8 c, Y: h5 S
以前我运行同步数据库,如果正确, 当nova.conf
. e7 ^. }7 A4 r  @+ X$ O6 B4 s! J--verbose=False  F0 g. l( i3 ?0 n- i1 n% V; x
是没有任何的输出,否则有一堆是输出。
* U; B5 k1 [% t/ h0 hnova-manage db sync
- y7 V* U5 z0 y, ~  z
5 S$ j7 S' T5 B, h! L! a
d386ae19ebc4b74515d430adcffc1e178b821518.jpg ) q$ y# G, ?, H! V+ v1 W
9 ^+ B8 H" Z1 V
创建网络
. j* L% N5 n3 K. X( m" T1 bnova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32) P* }9 M1 d& }% \3 c9 e9 w" S
d3a81f087bf40ad11f734058572c11dfabeccece.jpg " V3 B# t9 q1 J5 H
设定floating IP  t! C5 h$ T  s" w, @
nova-manage floating create --ip_range=10.42.0.32/27& c5 g- N5 e: D" l% Z
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
4 U* ]! a, o' Q设置权限2 X* N4 N7 a7 n0 V- i! m# ~
chown -R nova:nova /etc/nova
# X3 G& _. l4 V4 A( i再重启相关服务
7 G/ k( E/ v$ x6 u, \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+ u8 X% [$ p7 Q1 ~: {( I- K# t$ \

3 n9 S: u6 i1 k6:检查nova服务
- C- r* }+ C# r. onova list
3 r, v# g3 ]0 N8 W' Onova image-list
( ~' Z6 _6 s( ?) I& t4 u4 qnova floating-ip-create  ~- B, b( Q7 A9 _. s6 n9 ~" i

0 W7 O2 ^: S; C6 b) h0 W 3f1e66899e510fb330aef02cd933c895d0430c2d.jpg ; D5 \& s, V5 B/ T5 q+ Z
六:创建第一个VM9 z- K( m/ j2 e& z0 g  c
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。8 l) }$ s7 _" D: [
1: 创建密钥9 Q7 L8 I" f8 w, j  V
# ssh-keygen
3 G; z; a0 @/ W; M( Q# O一路回车,就可以了。
5 k" R$ a/ d" P1 I; Y 9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg   E& E( C! L& Q
2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1
9 g8 w6 w! [- G( S
这个时候,就可以查看到上传的key& \  P0 i# e+ i  ]
root@node6:~# nova keypair-list
& `# ^$ D) E% X( X" `  o+------+-------------------------------------------------+
. `& H% D4 H, i- E! R1 r7 W| Name |                   Fingerprint                   |9 z, O6 m( B' l$ E  b  e
+------+-------------------------------------------------+
5 _0 E/ ]7 Y0 I$ N1 ]| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |) I2 N, K8 k3 u+ Z
+------+-------------------------------------------------+
# ]/ B% q5 o( i4:开始创建虚拟机
0 g" p, [0 e! v 查看image list. S6 I8 x! }* l- V9 r1 l3 e# J6 ?
nova image-list: A. W# Q- Q' y6 ?9 M

$ T9 h( M/ R+ H% X$ ~查看flavor-list! \: z, j8 |. V  B* H5 L

( b  S# d! v+ p( Q% A, e nova flavor-list0 D. x; R' m! C* i& m8 E$ U: S3 x' z
创建虚拟机
! `( M; P7 S2 \* L1 r8 g~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
6 d$ q2 ~% I8 l看图有真相
+ F# U8 |) C( d) }/ m6 W* P$ c$ E 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg / a5 \+ K1 Z! p  ]
查看一下创建的虚拟机
' U# }. V$ t1 ~' L
nova show superfrobnicator4 d, e( C; f( K8 r- G8 y1 s/ x
61dd66ec54e736d1a27346b39b504fc2d4626979.jpg
2 J& r8 E' M. [- c
1 D* |! T4 ]& r/ X* ]5 K1 k
ssh 访问VM
' k( Y6 l1 A1 _
- x" l: P! Q8 Q: i8 M: z; M打开防火墙' q) ]' w& D+ v& O3 I
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
, Z- F1 K6 H4 I  Z' N4 ~& enova secgroup-add-rule default icmp -1 -1 0.0.0.0/0; w3 C6 ~: h2 A4 ~
这个时候,就可以直接ssh到虚拟机上。( p: E6 P8 u4 [7 K) f
ssh -i .ssh/id_rsa ubuntu@192.168.22.35+ P3 N$ ?! q0 d1 y% X) J
这样就可以登录服务器。
" y) h( p' ]- r6 M7 FFloating IP访问
1 q. `, y4 x2 ?; j, J如果希望访问floating IP5 s' w+ l5 _; t* `: E3 G! B
申请floating IP$ U" x* Q, D* }$ o" i2 N# H+ E
nova floating-ip-create. l1 m6 s/ X4 f" o% W7 i9 D
关联vm
" M) @/ _) T) S+ a- B# nova add-floating-ip superfrobnicator 10.42.0.36
) |) o2 ?- Q5 K  H' S1 S3 j1 l9 O& i% S2 g1 z
查看虚拟机
& z) ~" g5 n& o- I& v nova show superfrobnicator  I# ^1 _( a3 u
ssh访问虚拟机" d" [4 }' S/ H' R
ssh -i .ssh/id_rsa ubuntu@10.42.0.36
! J5 \  _) A  u  {2 |. t) z2 Q查看安全组和规则: }/ \; R+ |  H4 a9 v* F8 Z' ?: I
# nova secgroup-list
, \* n9 l$ l# Q# nova secgroup-list-rules default( ?, d& _5 |7 j9 I2 b( [
看图
* K: J# D# k* M ef00c839b6003af371e5f5dc352ac65c1138b606.jpg
$ D0 I  ^; j2 z, Y5 z5 ?, P

$ G( l9 t' \, B' E/ f; h2 p: J看看结果
# C+ V3 i. C/ o* w; N8 P4 d" G/ P 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg $ {" Q8 K$ {$ v7 l
ssh访问vm( d  v1 b- S/ N0 W& ^4 e
0 S* x8 b% h& n2 y- T
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg + H% u- C0 v3 |/ E6 t5 b

0 U3 }! U2 j: E( s1 R
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg . x% ]( U% j  N' W
" |5 T! B* V! U3 F7 L0 @3 G
有用的命令. F9 S5 a9 D% D/ e
查看keypair
0 q6 J1 x& @0 v* snova keypair-list
9 ]2 `4 l1 I+ u# h删除keypair
& u1 Q( n- P# N$ w: m3 pnova keypair-delete
/ I4 p2 V) n! Q& }+ ]查看vm# e+ |0 N  P$ i1 ?. L+ p$ X
nova list7 k# c# E$ r! F8 l% V( r
删除vm,vm的ID
2 G: |" E& C. R/ o# r% o# Z! unova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343
  m/ q" O1 J/ n8 ^  ]" s3 s$ q+ f5 W1 o3 E/ Q7 }7 j
0 n7 u4 Y1 R5 d9 n+ s% d$ L
七:安装和配置Dashbaord+ a% t1 e" v1 L/ i5 m2 o, a
1:安装dashbaord6 b# K; F2 _! W
apt-get install libapache2-mod-wsgi openstack-dashboard
3 M( l- W8 V- a$ `. b* a" ]5 i$ g) q4 T/ T5 V
4 X! ]- T/ B) u
这个时候,你就可以登录dashboard
9 L# z& v5 D6 O* xhttp://10.42.0.6
6 Z  L- t5 t# Huser:admin& n; }1 |3 f) j, Z
pass:hastexo6 R0 @0 ]- P9 z$ y; P8 \4 y
4 ]7 ~4 j$ m2 s2 X7 L
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg
/ w: Z0 I9 G3 S4 K# R. {
/ U+ }# g0 l- w, T
6982e5198618367ab223fa612e738bd4b21ce53c.jpg
8 j3 m: w0 I. J7 l  F
& m' P8 y( |) t0 p- t5 c

. C% H0 b7 C" B  ^5 e" k9 u
' U3 A" |3 W/ k, M& k( x5 a$ ~( L" t5:理解project和user关系
/ S" \8 u" B; U' [! h" {* }9 y上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。/ G/ O; a  Z2 y$ ~& x$ l* S
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。# F( w4 H" c* G' E
我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行
! l, @6 {8 L% J0 P) M. r* i 6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg 7 h; \% r" l& X, M9 W; @- _' v

6 Z$ O6 e/ R& i9 x八:euca2ools 工作. n9 A7 r% s6 a" X* H9 _
euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。' h( I) c  C% d' D- {
1:安装euca2ools工具' B' h! i# x; G1 ?/ I" y
apt-get install -y euca2ools/ S# `) C, m, G' i' s* ]
2:设置环境变量+ C1 Z! L1 o/ P+ {# l
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')$ h" H) o7 G" p. F
export CREDS=$(keystone ec2-credentials-create)
+ O( J7 @9 R9 O8 [& E2 o; F' Qexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
5 a4 a7 i  s. U& [! Aexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')% |5 D7 P3 N- K: c
3:运行命令
( i5 f, M5 B+ ^大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list4 c8 L9 J& ?, Z+ X: B6 F$ {+ K2 L" T
现在Essex对Euca的工具支持应该比Diablo好很多。3 X+ H  P9 `4 y5 r1 l0 ~
96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg   m$ ^$ I0 T( C, d
列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances

: |9 n8 }# D; S  S, B1 A# F- J6 R: N 4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg
8 u# i2 Z+ j/ \" V! j
" H, H4 g, C% x  K# ~; D

4 k! ~# Z1 _% K6 BAppendix A:  使用nova-volume . z! w% f; t. H$ p2 e
Essex Dashboard可以管理nova-volume。有两种办法来实现
0 g  S4 e& a) E; `默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。, F! X( B, u8 v5 A; l/ \& J) m7 r$ }/ E, h

& b; }) q. D& j2 \7 u1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,
  l" y5 G% H3 v9 ~3 ~/ c新建一个文件来做 LVM:2 e( z; a0 z% L; U1 b( E2 I
DD一个设备' F  A* A2 Y6 T' W/ U; _( l' r7 r
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
' }+ X# L7 s& P1 I0 I) P/ L加载一个设备
8 K* _. O6 F: j7 z+ X# losetup -f nova-volumes.img$ a+ b: ^  t9 d2 O6 \, P
查看加载情况! [& w7 e1 k$ W9 `% A2 L
# losetup -a
- W$ a7 q) S5 }9 {/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)6 y+ x" M  X4 y
创建一个nova-volume的卷6 [0 P9 Y" n6 L4 b
# vgcreate nova-volumes /dev/loop0
# N$ T. [# w* F5 y+ g- v3 Q  No physical volume label read from /dev/loop0
# s0 w( D4 r& o( }" N9 Z* e  Physical volume "/dev/loop0" successfully created' r' p7 v! [7 G" k2 S
  Volume group "nova-volumes" successfully created3 R7 V9 J+ y* @4 G! U
查看卷
" p+ N; M1 b: N# Z' e#vgdisplay
: g; Z% J5 H5 R( m就可以看到创建好的nova-volume。
1 k( p0 m% F/ H2 }2 o$ O' V2 U创建一个5G的卷,名字为volume1' i( i* X) Z1 v7 ?: c- ]3 A
nova volume-create --display_name "volume1" 5
- D- G7 Q, `. [: S0 ]2 D7 q创建完后,可以/ P6 b$ j* F' \, o8 j
nova volume-list7 e. H. U4 e6 H7 b) W% e
08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
( a9 c* I: z6 o  A( Z2 r% }

! w3 ]) i- x/ g, d2 p9 G1 h& D* p创建的过程非常慢,看status完成后,才能attach。
- t' W  ~; i5 G* |5 `& M如果希望删除创建的volume,目前我知道的就只能通过6 U* q, X: Q. h
euca-describe-volumes- q, s1 M+ f* d% l
euca-delete-volume vol-00000001/ w9 G% {. o0 I# O' k
) a4 A- F$ O  F; q1 u' i# e. @4 s
把卷添加给虚拟机,1,表示ID号, E2 H/ J0 \. a2 b- k) P9 F; t
nova volume-attach superfrobnicator 1 /dev/vdb
. w) _$ w& T8 ~; E; F# R+ r- o- ?5 {/ `. R8 a& E7 _
2:单独一块盘, c6 Y, N& x  `9 V- _/ {# Q
# pvcreate /dev/sdb1& d/ Y- h& o* G
# pvdisplay
0 y2 {$ ~* s3 {4 E& t#vgcreate nova-volumes /dev/sdb1
8 J& l' D5 q: a+ v; q6 |+ W3 H! O# vgdisplay
5 A! D% l/ A1 i3 w" z这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。
/ B7 J( s! F) |  W! f3 b6 f5 g2 A! i4 t$ |1 j6 {, Z3 A! ^

8 Q6 f0 j+ j! |9 \8 G( Y参考下面文档( K/ D' D# b/ ?. v+ {
http://www.vpsee.com/2011/09/openstack-nova-storage-management/
' O) R! W0 Y8 y( Khttp://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html  U: R) t& V% h, ^7 F' _
lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html
1 b2 U5 \' S, g* y
0 A1 D7 j$ s+ z* q  |  e
' `; x+ x$ w1 c) ?% n  n
7 g& d1 o- F2 r  n, h9 `) ~0 W# P/ A7 `) U* W& }0 I0 T' L
/ _) U. Q7 U- ^9 R, z# @# M6 `
Appendix C: Dashboard 创建vm,允许ping,ssh登录) M7 T3 A# u7 I) w3 R! a
对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
/ _% _' i( _2 F不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。
( w& Q9 S9 M$ v9 `/ |从ubuntu下载的image,只能用密钥登录,不能用密码登录。
# {$ X' }3 V6 L7 j1:设置安全组 Security group* r$ X' R4 }2 h- E- _2 {  e
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
0 b. |/ P4 ?, K5 c/ N3 i为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。! p/ B$ E9 _* |- }. T; o
默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
2 z9 Y: C1 I  b3 W3 |* V# ~ 9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg
' @% o+ i. H8 L0 W5 s& m* @
" u% u9 |" _6 c. j6 X

0 x3 g( `0 G4 }5 u+ H( W
7 y: E2 G; W* a  O( `7 }+ f% \1 L2:创建密钥
3 G% C* k1 U7 V为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。2 e( i' O  r0 S4 T4 B! ^
这个时候,你如果有私钥,就可以直接登录。2 r( J+ C3 H# Q+ i/ F( {; e' B

* d/ ~5 S1 O, x" ~6 @9 C+ } 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
0 ^% b" j4 U, I: \6 c1 _下载私钥2 d: [) `" s9 U
点击create keypair,就会提示你下载私钥。私钥是pem后缀。
8 [. i( W6 L9 z8 O 7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg * _* o' i* H0 s% `& z! b/ Z8 ?
) m! h/ o, D' a  A
( c* u$ C1 w4 P
那么你就参考这个文档,就可以。/ u( y2 \, e+ ]
3:创建vm5 g: c) `0 k4 e0 E3 z2 ?9 A
创建vm的时候,你会选择keypair,安全组。3 e8 G3 j- b0 j3 ^7 f/ b1 a4 y
5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg ( f  O+ v  _; f/ z. d

3 a0 _+ Q5 g" h6 M* P  S' E3 C% ~$ J. {$ r9 c5 f. m6 w
46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg 7 g$ U6 I( e; o; H; S
( ~; |# w8 L. q) |9 b
创建完成后,得到其实是一个内网规定IP/ M% T( s* a) z* o
e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg / c0 f& I6 D6 V' S* X

& Y3 X9 _1 w$ u1 _0 @4:floating IP5 w. B7 ?! M2 V4 C" f( t7 t# V
给虚拟机分配一个 floating IP,可以理解成是公网的IP( `7 w" O, [$ r" z9 w! c' _
8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
0 b; `8 C* R+ j. o: O$ S1 l分配完

9 L7 v) b, I; g3 ]/ M4 H/ |4 x 60d25790f603738df2568f99b31bb051f919ec45.jpg
3 @# I! C9 F# C$ d5 o4 G& H; Q2 N关联vm
% r' p: k* r+ w/ C
af15baefce1b9d161e8719daf3deb48f8d546419.jpg
- O- E1 Z- [% H. @1 p# S) {" R

, ~, _4 h& w7 b& X" J
) {( m4 x: v$ z8 o
4 _+ |! o# |* @% u5 Q! }4 l 看看结果
! @+ Z- A! ^9 Q0 @& g" D 3c0efa1190ef76c647bf78909d16fdfaae516774.jpg ; |" L7 T1 b1 d1 B# K' k' M; i$ e0 z

& i9 c1 v& I# P, w9 M) Y0 [5:ssh 访问vm. S( z  Y$ ?$ B3 @0 [2 {
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。7 S5 u6 p9 I- h; V. G
对于ubuntu提供的image,ssh的用户名是:ubuntu,3 `. x" E0 h+ g- j
SecureCRT 6.x版本
6 G$ M1 e5 i6 g- E6 ?0 z对于6.x版本,已经可以直接使用pem后缀的密钥
4 b: [' X5 y! u2 O6 z2 U! X" L
$ [  A! m3 a" s8 T4 j/ o# T e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg 8 d6 Z% |. r# v# E

8 r0 _; V. {( {) V; [" \) P9 e5 Uputty登录
; w1 U! ^& f; `, r  e! ?$ T对于putty,需要对密钥进行转换。7 d8 b/ z- z  }3 T
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
! x3 ?2 l- a( U/ ]. T1 ]! Q到官方网站下载:PuTTYgen这个工具+ R+ k4 E0 ?5 X5 x
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以
; m6 r9 d0 M' c3 T6 h% g& D$ L! p8 P 67da7663053a03280d33fa5f.jpg
7 W) x. k( X7 A0 o, F
) k. b$ ~  x/ V* j% G+ P. M" h( I
存放到本地。) m' O7 ~, v( w% ~( d2 ^) D
设置putty使用密钥7 F- R5 F) m5 d* D4 x, l' y' m3 \
4e0ebc44ad345982731568290cf431adc9ef84c6.jpg
1 U6 j. _/ q6 V& @* O# x

, m5 y# G9 j' ]: c( B d520caca7bcb0a4664b806826b63f6246960afc3.jpg ' {& F" B8 ~- h
8 Q/ V" `  B9 L2 h/ @3 w" \
- I1 x! g$ E( j% W
linux客户端ssh登录vm
! i) |1 Z( {4 ~2 k5 a, w如果你是linux服务器上,你可以上传密钥到服务器上
0 _& e+ d; `5 {! i4 T, kssh -i key_for_openstack.pem ubuntu@192.168.22.34# _. g$ u7 C5 `# |5 j7 |( Z
就可以直接登录虚拟机。
0 X. S, A3 A; d$ F: H8 O: m( H/ l+ Z: b. x. f: B1 e$ F$ R8 ?" z

& C3 B/ J; Z% @2 pAppendix D:FAQ, h+ a# z6 S2 v  v6 T, ?7 F) z
1:我登录服务器后,命令都无法运行
2 A: e$ C$ R. U5 E~# nova image-list! y5 Z& k* o2 l: ], k
ERROR: You must provide a username via either --os_username or env[OS_USERNAME]
. @8 Z; T$ Z' _; l# e# w6 J) Z5 g
如何解决。

: b- G8 F+ f8 ?这个问题,其实还是你的环境变量导致的。( J8 d  E: t6 E8 A. m4 I  t
export OS_TENANT_NAME=admin
0 s0 j  B; D. G  ^! x3 xexport OS_USERNAME=admin4 u3 v0 J# }: F- k: }
export OS_PASSWORD=hastexo- ?, x$ z# X) }, ^' A/ g* I3 |
export OS_AUTH_URL="http://localhost:5000/v2.0/"# D2 I3 `! T1 D- b, }
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
: j2 M7 V% V1 ^; E7 r7 s3 _export CREDS=$(keystone ec2-credentials-create)
$ q( O. ]7 l+ r+ o- c! v; `( g! iexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
0 ]- E( b& q+ Y% w# Gexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。
# W0 w/ e0 ]3 W' w如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。
8 |$ t, p* p: r$ _http://bbs.chinaunix.net/thread-1958386-1-1.html7 c! k( p$ k+ r* I3 ^' J

, H: W5 W: w5 d; B) Wroot@node6:~# nova image-list
4 R3 C% F2 W( {" I+--------------------------------------+-----------------------------+--------+--------+
- e+ [/ m) s! x5 j( L|                  ID                  |             Name            | Status | Server |
8 E. o1 S" A3 N9 \: C. a' _9 m+--------------------------------------+-----------------------------+--------+--------+
! l3 U# i; Q" N- r# }. _| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |! [" q4 v: b' m" R
+--------------------------------------+-----------------------------+--------+--------+
  C3 g8 ^$ E0 x' y9 o! W2 w' A
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg ) n/ B: B% D5 ^  s4 x

4 f" E+ W' c1 q2 ^( u' { 2:如何用curl去测试keystone
/ j* Y$ M! q+ T/ ^; a  h' b$ f0 {替换红色部分,就可以了, s" \% z! s% d+ ~+ r
# 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
9 B  r) k- k" R* D7 g
5 S' E0 M" ~( P, t4 \+ p7 Z' _2 k# R, A7 c; k
博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb( k/ W9 ^  z1 e& K$ z% F- B- F
, N; N; S0 y3 i' ^" O& o' @8 N
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:
0 g' @+ Z9 x: [& J: i+ @% ]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 None4 g  C$ E' P* @! B. F' x

& r' I0 B0 @8 K4 n解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。
5 h, E  F8 v* c           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
; L) _1 T8 q( H" Q" W注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
% s6 ~3 O1 V% R8 [( Oexport OS_TENANT_NAME=admin
, y3 e( O; ]1 R& d' f, I. b6 J! Yexport OS_USERNAME=admin, ~8 P+ Y1 d& C  {
export OS_PASSWORD=hastexo
0 }1 [& _8 ?6 ^5 ~' B& Rexport OS_AUTH_URL="http://localhost:5000/v2.0/"
" X7 n4 v1 i: B2 x: dexport EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
* d: v/ _! C1 Z2 Gexport CREDS=$(keystone ec2-credentials-create)" u& s# Q1 p7 K& C, ?, m# P+ w1 b! v
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
8 r; Z( h9 I' m7 oexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')% I( H( [2 r; |8 [1 o( L

+ d+ X) U1 G/ O. X/ y. f5 R现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑
. T4 n8 ]) f# D4 D+ n) S, z3 G4 j2 O8 a
SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:% d" M8 R6 {: {0 ~1 I) o, c2 E
$ _2 K8 y$ C$ j7 I+ K0 f
SSH Secure Shell Client工具密钥登录linux:  v% Q7 b* O5 t/ _+ `2 g1 |
2 a: {& E: n0 q  A
http://server.chinabyte.com/365/8835865.shtml
6 x2 L4 i: D+ Z& j2 b. m5 W# y/ C  u8 |1 u! h- N

$ X( z9 A7 C  f( d7 G1 |# TSSH Secure Shell Client用public key认证登录
3 I: l; w) W. D  R# a4 Y' f$ W" u" thttp://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html0 U$ F! T. G, R5 b2 R1 W
% I" `9 x9 V; r1 H
由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:" C$ }! i5 ]. c8 ?

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

) s3 q6 {8 ]' ^/ y6 Z
. |# s) I( r% Z/ d: X5 N没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。
  J' D- _1 A  N# Evi /etc/ssh/sshd_config
4 _: N3 X. w4 N+ `0 u9 s' }9 {  A0 c将PasswordAuthentication no改为yes
- A% a8 y& q9 ~3 ]6 Mservice ssh restart
* s* j) S3 h2 K) c) Y4 ?9 e8 T2 c! f- P% U
这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。" T/ G9 q: S. P
安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版5 R9 l5 O" G6 a% E& r* ?: L

; Z5 n6 T+ a6 J) {; {虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题
- `2 L4 t( l6 W2 A  S7 r  J4 s: h# W% h' i2 m, |$ I9 r' A
1. 在vmware workstation上的虚拟机需要修改 *.vmx文件7 D$ ?% T0 u# m
vcpu.hotadd = "TRUE"$ n  L5 }4 m& S
变更为
8 s' O5 U7 P& ]3 E% Zvcpu.hotadd = "FALSE"' W7 l6 V" Z2 q" w
重新启动机器,如果执行命令:
. a" b9 L- P9 c& H4 Z0 ]virsh
8 ^2 A9 `! u+ m# t进入控制台就没有问题了。
6 i9 C. f, j. O8 |% U) f9 ~) G, z2. 修改nova配置文件/etc/nova/nova.conf6 T/ }: y: \% B; D3 k  X
#--libvirt_type=kvm
4 G' P2 o( u4 z' O0 B9 F: h# ^更改为qemu
% ~0 G1 W5 s. M" k( o* t--libvirt_type=qemu: p9 ?4 B* a0 z; O3 B2 m% a
3. 修改/etc/nova/nova-compute.conf7 T. r) h( F- z' s
--libvirt_type=qemu
. ^+ N3 H1 v! C4. 重新启动nova-compute,如果libvirt报错
( N  m, ~& ]+ ^* T/ L: ?  f/var/log/libvirt/libvirtd.log
: j9 R" b/ t* m5 W. \, jCannot find 'pm-is-supported' in path: No such file or directory
9 d, i" Y/ w* Q, ^- |报错后需要安装7 ?. E% ?; s" b3 {* H
apt-get install pm-utils4 `8 p  b0 c' O! h% ~$ j/ [
5. 重启libvirt和nova-compute就可以了
& Z$ Q7 A0 y: |# h* ]5 Kservice libvirt-bin restart
3 ]" O5 [$ l+ ~* E# G7 A3 ?service nova-compute restart( K! Y* t3 Q- l; a" A% y) l

% l, h; `% Z# d/ a" z, I1 Y6. 执行 nova-manage service list4 s6 O! W3 \/ a# D$ @8 {  P
state都是笑脸的话,恭喜你,搞定了:->4 q7 q, ~: [9 i5 F' X2 x+ B( R
! O" d$ J1 A/ N6 o; _
感谢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人群已满)

返回顶部