锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

在Ubuntu 12.04上安装配置OpenStack Essex

[复制链接]
发表于 2012-7-13 07:45:18 | 显示全部楼层 |阅读模式
本帖最后由 aneit 于 2012-11-28 07:48 编辑
  p$ t$ H% F, E0 g- {6 q6 P2 t
( y; b% r3 w, W" ?之前尝试在CentOS上安装OpenStack Essex,遇到很多问题,未能解决。而官方更多是在Ubuntu上测试,也就是说对Ubuntu的支持会更好些。调转方向,找资料发现陈沙克同学的一篇博客《Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex》非常详细的介绍了安装过程,并且经过其本人的多次验证修改。照着他的文章进行配置,目前基本算成功,感谢沙克同学的辛苦劳动。这里转载过来,帮沙克做个广告,同时也将个人在安装过程中碰到的一些小问题及解决办法补充进来。
- |  y0 ]. J+ s: H
- P: D$ ]  J2 b  z/ _原文如下:
! p& j! ^; s+ |6 n
$ e( k5 k: p- `2 W: aUbuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex
, A8 t9 U  H! e! |, w这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。
/ k; O  a& f( p# m$ a原文" \+ F0 W, p4 ~# [2 J( \
我下面的步骤,也就全部参考原文。
  }& l7 m- a% v$ H& h- ?8 F3月27日更新:基本完成文档内容
) w8 Z% Y  _/ F4月5日更新:重新安装第三次,修改了文档一下小错误。
7 U3 ~- Z  D5 `. f4 G1 a! C: s4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖3 {1 G0 _- I4 {7 ?6 F$ B5 c
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
0 Z& H! g9 O$ {; ^/ w1 s& o4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。
( a/ v. y9 w* c, j3 v) ?! K 4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。
6 O" T$ I- o9 `* O4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。& Y+ Z) O& ~3 `% O# z/ S+ E9 W
5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。
& r% O  x! z( v8 B! t( S+ ~5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。$ P- d% a$ q; f& `: A2 w8 q) \# k

# E2 i4 ~: D5 `3 p* m7 ^$ p硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。
1 Z/ X% t8 |  p5 L下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
0 X7 R. o, h/ J为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
" |9 O( B6 F+ @目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。! ?3 z* i  O) Q- _5 P

1 z) d7 q& w0 B' \9 Q; z一:准备系统
7 q3 b, E# k/ y* C5 G: D1:下载ubuntu 12.04. 服务器版本
; H6 G  _5 d& k4 uubuntu12.04正式版本,需要4月26号发布,目前是beta2) d6 v: @% @1 R* G4 L# ~& |
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
9 }3 X6 Z4 g& D, _8 x0 |
) p# x1 t1 Z7 w& S; |2:安装OS, s& d6 U, W9 E* _/ W
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。
3 o, M8 p$ I: h4 J0 ]& W3 kIP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。9 f  Y8 j& m4 N# Y3 h
装完系统后。# _4 d* p# I) O0 {! A# j
apt-get update
3 ]9 A: [- `: ^2 M6 [apt-get upgrade
) ~& w) |! G' s7 q! l更新源里的包,更新系统。确保你装的是最新版本的包。
+ R, q% ?- ~- p
9 n6 o% `6 h3 |1 W+ }( a3:设置root权限, ]; p! r7 i  h# m; X$ A
为了简单,全部都是用root来运行。" S% m; K0 {$ d9 q+ Q
sudo passwd9 ~7 ]- k# R  t$ F1 B) @4 {* k( S5 z
就可以给root设置一个密码。直接用root运行。& l  T1 ?% b$ d3 o7 J" e
4:设置网络# [- i0 D* a2 ~
我的网络设置和文档是完全一样。这样也减少错误的几率。
2 {2 u, n# c8 k6 @) k3 vroot@node6:~# cat /etc/network/interfaces
# r( J  h! g# G# [$ i" z' F, e# This file describes the network interfaces available on your system9 C/ @3 o: A( p
# and how to activate them. For more information, see interfaces(5).: w9 e, u$ {" ~4 ]3 G5 h8 m* x1 s

/ P. A0 I% H& }1 E# The loopback network interface  R/ r, L& a5 T  f$ Z2 d
auto lo1 P4 Y- V- P5 d  D
iface lo inet loopback% r% ^; `, z3 z1 X: a* Y

8 P+ ^* `+ u3 l# The primary network interface
# w2 G" I$ F% H- m! s2 u0 X# ]auto eth0
5 G9 q6 n; K. u  `iface eth0 inet static$ U4 d/ |7 o! {) ]( i9 p  B
        address 10.42.0.6. Q3 l' h& R! P
        netmask 255.255.255.0
- E; g: G  T$ H: ]# ^6 G        network 10.42.0.0
2 m7 l( e# A8 B! }8 q' G* a        broadcast 10.42.0.2551 e: s2 b7 V( a, N) X7 Z. j
        gateway 10.42.0.1* g0 _" \/ D/ t$ j' r8 ?- ~
        # dns-* options are implemented by the resolvconf package, if installed
2 o9 F+ _0 G. W6 j, D        dns-nameservers 114.114.114.114
: H* d; q7 g- m; W( q        dns-search test.com
7 @2 J  j/ ]: U3 E( B5 q" f5 O: _" ]# [
auto eth1
/ g1 F- ^, h! ziface eth1 inet static5 b$ x5 h6 k+ g6 r' s) Q
address 192.168.22.1
" {+ U/ Q9 d" S% i( z: H) Qnetwork 192.168.22.0, e. ~( T' m% r; E5 @3 j
netmask 255.255.255.0' l) U" D( D5 f, e/ {
broadcast 192.168.22.255+ H% P: q. e  c
3 j9 i* @7 ~: B: f- {/ b
重启网络,让修改生效
3 B3 Z& A! _5 l% ^: A; x( K/etc/init.d/networking restart
9 _% L7 s1 ]3 Q$ v5:安装bridge
6 X8 R  u9 d4 v0 U5 W3 Uapt-get install bridge-utils
( F1 W2 q, z7 {6 W重启网络或者重启一下机器都可以
  y: h/ ]% R9 M$ E3 U/etc/init.d/networking restart7 t7 S; V! t* \5 [: t; p- ~% k
6:设置NTP, E, V* a, _7 c
apt-get install ntp6 l& S2 D! ]9 b

3 {) D' ]! }5 z1 |. k0 k& D1 y9 Y4 `编辑 /etc/ntp.conf 在末尾添加下面3行  N' s" O) v+ d! m& h
3 ?+ X; r+ O- L2 ^$ s
server ntp.ubuntu.com iburst# I' k1 g& k: ~; U
server 127.127.1.05 k2 U( W+ m4 F! Z0 a2 x" m; k
fudge 127.127.1.0 stratum 10
6 q% |1 u+ C4 N, o: a! r) E. P9 Y( U  b3 C5 @) R3 D: w
重启服务
, O( T$ i& v0 H$ i0 Yservice ntp restart
3 }1 h9 l% |( B! M2 `: @4 |  b7:设置Iscsi
% P6 ?2 Z& @; X/ ~; gapt-get install tgt
% w8 r( O' E$ [& `, K7 ~, f* c重启服务
' [! ?3 h" Z; _& X9 _2 L* iservice tgt start
+ W7 v) t; F  `! P: I! ?. O8 d安装iscsi客户端5 t2 ^0 S' R9 e2 A( l( @  }) m6 r
apt-get install open-iscsi open-iscsi-utils
6 ]1 q1 }6 X% Z+ e8:安装rabbitmq4 z& M; ]$ W& b& [  F0 h" p
apt-get install rabbitmq-server memcached python-memcache
6 {* |2 [2 |; Eapt-get install kvm libvirt-bin7 ^' m9 Y9 X- c
. Z3 w  E/ j" E4 ]# j3 J
二:安装mysql和创建相关数据库  D" j9 L9 s4 `( ]
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。
7 z3 h+ V+ J  [7 S1 S0 r1:安装mysql
: q2 x" u& a7 o过程中,会提示你输入root密码。4 d% {( E4 g" q0 i6 N; h1 r2 a
apt-get install -y mysql-server python-mysqldb
. w* H% [" ]. ^让mysql支持外部访问1 I7 d- i* ~& ~8 y
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  + y; N; G; E6 [5 A* m7 U
重启服务0 l) i' s. P& I; b1 C" M; h. w
service mysql restart
/ r9 Q$ E6 k$ b1 ~" k; F, j2:安装phpmyadmin (可选)
+ {$ L* \8 Q" t$ w为了方便,可以把phpmyadmin装上,可以比较方便管理数据库' ]  s* \+ q9 E
apt-get install phpmyadmin9 J6 i% ]8 t2 L4 v6 B! X5 f7 e. P
安装的时候,第一个提示是让你输入root的密码。
7 D) e. y" `: f, Y3 I3:创建数据库
' k4 i0 O  S' ~, Inova数据库,   管理员:novadbadmin,密码是:dieD9Mie
7 L9 @3 D; O7 y" X3 Y) \  Sglance数据库,管理员:glancedbadmin,密码是:ohC3teiv& Y5 O" f+ r! u) j; L
如果你修改密码,后面很多配置都需要相应更改。
. o& c+ @6 U3 x- `% c) ]: kmysql -uroot -p' w0 F+ u$ C0 ?0 a2 {# C! @& \5 i
CREATE DATABASE nova;
( S: m; }/ {7 U! YGRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';# Y! I& z8 p! c) k( L  ?9 H" S
CREATE DATABASE glance;
+ r' h' E3 a3 B/ H- ]4 ~" Q1 b" OGRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
& \# q3 c+ y+ Vquit: b* ?$ [0 s7 D+ F, n7 U9 Q5 l
! C# _. V/ |7 v/ b! @0 Y
# J5 {$ P  e& i3 Q
三:安装和配置keystone5 ~0 J0 P6 M; Q; F* c  O- A' v# P
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。1 D8 o' E1 f# ~0 @0 w5 Y' [$ @1 E
1:安装keystone
/ L4 I; }" X) |apt-get install keystone python-keystone python-keystoneclient
; ?% n+ G) {/ {: A$ F, E2:配置keystone3 O/ P  F! Q# |/ _- ~* I
需要修改 /etc/keystone/keystone.conf 两个地方
8 b/ F- k9 [3 H默认定义的token就是ADMIN,我使用hastexo作为token
8 T7 V  a- |/ h; n/ l: L8 I; {5 N! W0 o. X. b
[DEFAULT]1 E# ?: k  r; l
bind_host = 0.0.0.0
2 Z( J3 v$ j# V' x$ P% z# {/ @public_port = 5000
8 S% B/ J& Q9 Kadmin_port = 35357
; F" e; v8 Y4 [. x$ @4 a/ ]6 ^#admin_token = ADMIN
; m  p$ x5 ^* Z. n  p7 d* Vadmin_token =hastexo另外一个地方是
. p" X) [, ?4 P! N/ Y1 g+ {: }( q4 N[catalog]
9 m2 k& c9 C- Q5 e" E9 @' c2 o#driver = keystone.catalog.backends.sql.Catalog
. W) ~8 {0 p# y5 T( T* H$ ]/ z2 Cdriver = keystone.catalog.backends.templated.TemplatedCatalog
1 p, S# L, _  Ttemplate_file = /etc/keystone/default_catalog.templates
9 H7 A8 |+ e2 o5 g3 D3 Z
+ G: t+ O$ q3 q& N" E  @重启服务- l; p1 ]: @: q  t  T- k! r
service keystone restart
/ R" j2 r6 J' _) ~9 H3: 导入数据
# ?& y6 Z, J/ V5 c: f% l这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。
) X  @4 o& W8 `8 ?1 ]" Y. A, whttp://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt% I) {0 X' `8 d, w$ D# f! m$ ~
下载脚本- J  V+ U" A( w5 {
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt( N% F& ~2 i0 }  b8 u
mv keystone_data.sh_.txt keystone_data.sh
3 V1 `1 K- P  v7 @) U: N7 `
" t' G& G$ D7 M& s- g让脚本可运行
" o4 G' ?! d7 d) X4 b2 Cchmod +x keystone_data.sh9 o, d! _" ^; ^, `
运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
  j5 }1 z6 l0 [第一个是登录dashboard的admin的密码
) I- B) J& v# [  y- r7 B2 s) I. c第二个就是keystone的token
: o/ u2 f4 U0 z#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
) s$ e5 |# q6 X$ \ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}6 z: E; @+ U7 p, e. y
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}" T& Q. J4 X& ^% \
#export SERVICE_TOKEN="hastexo"# Q- P/ g0 k  A1 R9 {) h. ?
export SERVICE_TOKEN="Centrin"
' }2 d$ y6 }5 x& j5 G4 \export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
# N& N9 M8 W. bSERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
2 Z+ f. t: k8 n1 u8 v
- r! b& J8 h7 D5 F, H$ M( y
, _, P( M) `3 X" F! q+ d./keystone_data.sh$ Y% M  {6 @* V; \5 \1 M2 {
顺利运行,会什么都没有输出

$ W7 X5 r/ [5 y  l6 p
: g" q, {9 {. h! B/ M# W% w- u9 r

keystone_data.sh 脚本

keystone_data.sh 脚本
' L4 t6 C& ~2 D3 H7 }2 N9 h  }

. Q" }0 w+ x: r# b# M# O
" k4 ~8 W3 @  ?9 V5 g2 T#echo $?' p3 L" w/ _6 M9 Q
下面会输出0 ,表示正常。你就别再运行脚本# Q0 M" {' A- b7 b6 ?; S8 q' B) j% d
keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list; m% x3 [& A7 u8 x. R5 M
看到这些,就说明keystone安装正常。# G& O# R2 _7 r! a
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin
; s  Z% ^# M+ B8 sexport OS_USERNAME=admin
& x, {5 f7 S0 `; h+ _export OS_PASSWORD=hastexo
8 W3 i5 L8 [2 m. Y( Q, bexport OS_AUTH_URL="http://localhost:5000/v2.0/"
% l: Q; l5 h1 ^- j0 l, {' C4 ]7 ^检查检查- M3 O$ g2 Y2 L, j
# export | grep OS_
/ ]: O" j# h, T0 C, ?, Y! C2 adeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"' N$ R! N" \) g0 a- P
declare -x OS_PASSWORD="hastexo": E7 B) m4 p9 ?  ~7 t% n  ~0 I; h- X
declare -x OS_TENANT_NAME="admin"
; s% i6 N9 s: }declare -x OS_USERNAME="admin"
3 f6 O4 [* J3 E$ H2 n# }; x  k这个时候,直接运行
# A- B3 f& ?* h# broot@node6:~# keystone user-list1 H; ^, ^9 h, q' c
+----------------------------------+---------+--------------------+--------+
) i; q7 z) B7 O  C; u* _  L|                id                | enabled |       email        |  name  |9 b. Y0 s5 K8 Q# H+ I# t
+----------------------------------+---------+--------------------+--------+) i* {5 z8 `# f  t: b3 Z! _
| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |" f6 V. R6 r: m; e+ @
| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |
9 ~8 Z0 Z4 ~# S3 p| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |% x5 @! h2 d* ?8 M
| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |
' u- \  G* N( r9 j: j+----------------------------------+---------+--------------------+--------+
) ?) r$ l* K. Y/ a/ X7 v$ _7 N  w0 S. b

, S' o% ~2 `1 G. ?& Y  V
+ H" A" N4 o$ M' _- Z四:安装和配置glance; I' g0 \% ~- D9 o; {, {5 \1 ]+ y
1:安装软件' n, S2 ^. V' J* j- L0 b7 Z9 e
apt-get install glance glance-api glance-client glance-common glance-registry python-glance
6 T( P+ B7 {) s) P/ r* J# M! ]2:配置/etc/glance/glance-api-paste.ini $ E4 D1 x& ~0 s% E( Z
修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
8 z, L4 |  m$ Z+ Y& O1 dadmin_tenant_name = %SERVICE_TENANT_NAME%; J- g( O' }; T; N6 b$ k- z& q
admin_user = %SERVICE_USER%/ Q" B) z" K+ h; l+ W- c: X/ W$ p
admin_password = %SERVICE_PASSWORD%改成0 T: e  N5 J5 i3 m" o; x
admin_tenant_name = admin1 r. a& j! V' i$ d6 Y$ m
admin_user = admin
, f% ?# G" K8 M/ n3 d- u; e2 Cadmin_password = hastexo
, N; ~: q' G9 W) t' i: M- w6 V/ w; Z3 R8 G
3:设置 /etc/glance/glance-registry-paste.ini# f+ A, ~0 X0 r6 f
也是修改文件最后3行,和上面是一样的。
( p4 L$ d. M7 N# `" N9 p1 tadmin_tenant_name = %SERVICE_TENANT_NAME%  p% L% |# P! c) _
admin_user = %SERVICE_USER%
2 V! ^, g9 s' [# f1 Iadmin_password = %SERVICE_PASSWORD%- ~$ N& t  a5 J
改成
6 e! {, M0 S" ?& p# badmin_tenant_name = admin
& D- I0 l9 k2 e) A  tadmin_user = admin4 ^/ N9 k' F) f) A. P
admin_password = hastexo- V) I# i6 q. v. \4 F: D. ?5 ^
4:配置/etc/glance/glance-registry.conf0 k, H* C1 [( }/ j7 D  ~* Z
修改: @, F5 b* v. c4 ^* P9 C1 N+ j0 _* C3 B
#sql_connection = sqlite:////var/lib/glance/glance.sqlite
6 B# S% N% D  d4 O" xsql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance* A: c$ g5 G% X

' R& `- j( Y  T4 r" w& q+ @1 S7 S& j0 e: d8 X3 L
在末尾添加两行
' Q6 |5 \' x! D3 M. g% x+ P5 |5 o[paste_deploy]
0 b( r( i. M# ~- ^( E. vflavor = keystone
( V) L3 |' i8 F! R: |2 U
* A/ O, t3 F; U8 @7 K6 [! p! r
5:配置/etc/glance/glance-api.conf
, ?" b( R7 S7 L! M) d' L! |. L; Y/ t在末尾添加两行2 p: O+ N8 Q# G/ w# w
[paste_deploy]
# e" v7 e  T+ l5 s, l3 oflavor = keystone

3 U( I& Z1 s# |/ V. p- x- q& B9 q$ ^; C9 `4 P4 T9 K; }
6:同步数据库0 d% [: y! O% i$ V5 _
目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。* A" W! X# d& N. |. v; }2 A8 ^6 u
# glance-manage version_control 07 `, I- d* O( k! p/ h
# glance-manage db_sync          : ]  Z4 G; h: D( b
/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.( z5 K+ V) e( N
  useexisting=True)
8 d  a2 \8 k- h; A重启服务) @7 _; e1 W1 n8 w/ N# U! u) A, A
# service glance-api restart && service glance-registry restart  ~9 O% f6 E* @$ E) v, h0 j3 z
glance-api stop/waiting/ Z* ?$ q" F% V4 ?
glance-api start/running, process 13321
; U- q" P$ h" C* ~8 P$ Nstop: Unknown instance:
5 _. a  S! j: Zglance-registry start/running, process 13327
, Z$ y0 o, |3 k8 s" t$ y+ p& Q7 t3 Z5 m# V4 {
4 R  p2 }* w9 U# _$ q
7:验证glance服务是否正常$ n9 d$ B/ {" B3 L8 ]% m
下面的步骤照做就可以,具体原理可以看英文
6 Y; m. u1 _$ A: v* @% P/ gexport OS_TENANT_NAME=admin
6 N) M, y3 W: R/ dexport OS_USERNAME=admin
2 i( d5 n9 O  }4 d0 T. @& j; J4 C7 P, Gexport OS_PASSWORD=hastexo* r$ m  h8 `, M/ R2 f
export OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查. }' l1 [' `5 F# ^6 Z9 z( D$ D
# export | grep OS_
/ s5 Q- m5 u# T, ^$ E2 [declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"3 k* Z6 B; A- d0 Z
declare -x OS_PASSWORD="hastexo"3 J" B/ q4 w" T2 ]9 J1 f% M
declare -x OS_TENANT_NAME="admin"
0 ?5 Y; I, o& z  Gdeclare -x OS_USERNAME="admin"
# N7 N& Y$ ^3 E; _2 }, A运行! q+ V7 Z  t+ [2 W4 y9 e# O% |+ J
glance index6 U+ `# a0 e$ d: W# b/ g% L7 S2 b
没有任何的输出。表示正常。8 y0 y$ z8 R+ }, _1 }& {
#echo $?" r; K. j, W& i
下面会输出0 ,表示正常。
3 u# l+ b/ L5 t5 [% ]# P/ Q2 A* c# glance --version5 |8 A6 I- ^  `; O
glance 2012.1
# A- f" B% M. b- g8:下载镜像并上传
  j+ M4 O% y3 l+ k- Rubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意" H$ E& n! ?. z8 r$ _- W1 @8 K
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。7 V- s  b4 g  ?9 n: J7 \8 }
下载镜像
+ h+ R5 n5 P9 f0 `, }. o* mhttp://cloud-images.ubuntu.com/precise/current/
0 r5 t9 Z9 S6 v8 ?这应该是ubuntu提供的最新的稳定的镜像。2 F4 \; X0 c3 ?7 G
wget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img
! C6 k7 w: I+ A4 b/ e1 e% \上传镜像
. w. V* e7 J. k& _) K) d8 u+ yglance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img
. J0 N8 [2 T2 p9 @这里还有一种方法上传,如果你没用环境变量。" n1 ~. N& F$ R5 u" J6 p$ o
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
2 m& l$ K1 f* w, Z( G% t上传完镜像后。在运行$ \+ Q0 k& h6 O" x- L
glance index
  c* |. d- _4 p9 d或者+ N# p# [6 G, Y) m
glance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
" G# H$ z8 `' j' L) n$ Q( G就可以看到上传的image。
: k6 z& h& a" r% v$ w( v
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg
4 _" b' j5 W* g2 a五:安装配置nova+ U8 y8 j' T# H& ?
1:安装nova相关组件
( j0 k9 R1 m7 t. fapt-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
/ \3 C" M6 _8 T, w* Y' {2:配置 /etc/nova/nova.conf
$ ~" ~' k: a+ |把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,
3 Y, D4 e) g; V如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。0 B7 A, d( }% p
root@node6:~# cat /etc/nova/nova.conf
$ D2 u) W  _9 R0 w0 X& @( m1 B--dhcpbridge_flagfile=/etc/nova/nova.conf
- K5 S5 t$ i7 O' E--dhcpbridge=/usr/bin/nova-dhcpbridge
2 j' X5 h/ c" o2 h--logdir=/var/log/nova' \" S% i+ N$ ~7 R
--state_path=/var/lib/nova* I  n' ^9 T7 Y8 w% O0 H9 {0 b" \
--lock_path=/var/lock/nova( {9 g" z% {4 f. {$ D7 d
--allow_admin_api=true
9 O4 B% p3 F! b- H7 W--use_deprecated_auth=false& M# u! `, n% s4 x/ R, f0 U. E; ~
--auth_strategy=keystone
3 ^* a( H2 N8 ^2 E--scheduler_driver=nova.scheduler.simple.SimpleScheduler2 i: l. M  s: Z& a. D
--s3_host=10.42.0.6
& `9 P- t. y. s! M& d--ec2_host=10.42.0.6
$ n& {3 s3 U3 v4 {% A4 V; k--rabbit_host=10.42.0.6
4 z8 n8 i6 n: o6 @) y--cc_host=10.42.0.6
* w4 t2 |* y) A& w: ^--nova_url=http://10.42.0.6:8774/v1.1/) C9 ?7 q5 y" i+ b* n
--routing_source_ip=10.42.0.6, [% y! t# l+ H& W! d
--glance_api_servers=10.42.0.6:9292( ?* K) S9 C$ w  X' _5 c
--image_service=nova.image.glance.GlanceImageService/ ^) A0 P1 o6 W" P" o7 N- l  P' }
--iscsi_ip_prefix=192.168.22
( m9 [% Z3 _9 ^* P, {( v--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova3 n5 J' p. ~- X& \" `, b& a& k
--ec2_url=http://10.42.0.6:8773/services/Cloud
- ~0 H, X# E! ]4 s4 F% |--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens! ^. F/ ]- T, Y3 K* V
--api_paste_config=/etc/nova/api-paste.ini+ ^5 W2 Z. p8 j, \3 M0 {* K
--libvirt_type=kvm6 [, \9 J& i- ^. g6 H: M
#--libvirt_type=qemu
/ ~6 |1 U; G4 l; _- |9 u6 l5 {--libvirt_use_virtio_for_bridges=true& O0 T# t6 \) `; C# c
--start_guests_on_host_boot=true
7 ~7 v# ]' I; h" Z- T3 v4 M' F--resume_guests_state_on_host_boot=true
1 I% n) X  c3 A
. G. x+ s, C2 ?2 F! u. e1 X1 @) h1 C#novnc# Y0 \! B. M+ d2 n/ \  M3 Y  B$ N0 g
--novnc_enabled=true
) T9 J, i& @9 L9 j--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
1 F: _% s, n% s--vncserver_proxyclient_address=127.0.0.1
3 o, V; j. O* t% w  A- C* w- J--vncserver_listen=127.0.0.1$ j$ c6 D# U5 q4 n1 T

9 p/ U7 q. J+ u5 L8 G # network specific settings
  V8 Z% F4 V0 b7 }2 Z" R7 B0 a- x8 _
--network_manager=nova.network.manager.FlatDHCPManager
7 T. b1 A1 q  Q7 ]" z3 V--public_interface=eth0. k. d9 W1 X5 e
--flat_interface=eth1$ y& a7 [  L6 |4 T
--flat_network_bridge=br100
! A/ Z* V+ o+ u--fixed_range=192.168.22.32/27
1 S/ n& s' c; V( x9 [( k--floating_range=10.42.0.32/27
7 @4 i& I6 d4 U/ }& g--network_size=32. k) w! U- h! I) R7 K7 a
--flat_network_dhcp_start=192.168.22.33
! G/ V/ Q( r+ I2 r$ K--flat_injected=False
) n$ |4 }3 w# k9 a--force_dhcp_release
5 ?, S% U  B+ a/ O* w  s--iscsi_helper=tgtadm
! [! Z5 D5 @$ G- b/ D3 x--connection_type=libvirt1 i$ ~, M' Q5 `( x$ j
--root_helper=sudo nova-rootwrap/ ~; h6 V9 c/ v! r( u
#--verbose& Y# J' v* Z: O! E
--verbose=False

5 B$ G, r8 f# c0 q
3 ]" V* b( d1 W" _) W; [- X- j3:配置/etc/nova/api-paste.ini
; G! G( f, e$ W* y1 u; O也是修改文件最后3行,8 Z, ^5 j* \7 F; d
admin_tenant_name = %SERVICE_TENANT_NAME%* M3 i% }4 b; ^$ s! ^# `3 X- a+ D
admin_user = %SERVICE_USER%! i4 B2 i' Y0 Z, {8 O
admin_password = %SERVICE_PASSWORD%5 R1 {9 e) A8 D. J: f
改成7 a/ }6 v/ p; e- N6 D% Z
admin_tenant_name = admin
" U/ Q2 [! ]' K: R( F% ~admin_user = admin, D2 U. p9 c2 |0 e
admin_password = hastexo
. I/ o% G% a0 O1 F5 \4:停止和重启nova相关服务4 t, u  n0 c3 H0 X, l* ]
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
7 e, |$ ~* t/ p' y, G
) {& z5 o) [. Q/ M4 }& S  E( p: }5:同步数据库
7 }1 R# z; D1 q6 g: |  |4 v% P以前我运行同步数据库,如果正确, 当nova.conf
7 R) o2 `' ?3 q- M! L--verbose=False
* H0 _6 M& h* N$ ^' Q是没有任何的输出,否则有一堆是输出。
# K6 D" m) B0 ]) a8 Fnova-manage db sync
8 b  j& f3 P3 A" O2 R
2 b; q: `, N' ?& l( H; F% o" i$ {
d386ae19ebc4b74515d430adcffc1e178b821518.jpg   l% J  ]- G1 d" z" T

% X/ ?) L! F% N9 S5 K6 E创建网络* j) V+ f% ^/ p. \" R4 {- Q" Q
nova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32" P4 j$ q% u3 e1 [
d3a81f087bf40ad11f734058572c11dfabeccece.jpg
1 G, D" k, M. |设定floating IP
, H0 O3 {; M8 T8 M5 t+ rnova-manage floating create --ip_range=10.42.0.32/27
9 O' T' t1 Y0 r& p) t1 n% E  z; y
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg ! D. N# u. q/ T: }( |; G/ X% U7 U
设置权限
  s6 Y" N2 {  [* M0 F. ~4 V% wchown -R nova:nova /etc/nova
5 z4 |+ J  B6 x1 ?6 o再重启相关服务
, V% Q- p) R" a7 P) tfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done. q3 g3 h1 @; b! ?" ?& A5 b9 A

9 P8 w5 m* V8 r3 t8 Y7 y6 ^2 M1 h6:检查nova服务1 k# ^* c& W  N0 z4 e  G
nova list1 m  k* d7 g" v/ [3 }
nova image-list
( Q9 k  |, n. _' y- a: Inova floating-ip-create
6 {' U  x/ M* [, e  F( }8 d
  @7 Y( q# y& v- R3 ]/ u. f 3f1e66899e510fb330aef02cd933c895d0430c2d.jpg % w! F! u3 }7 H0 ~
六:创建第一个VM
0 z0 y" V0 T& t( a这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
+ P% y/ @9 [: Q  h( m1: 创建密钥- w8 [1 q/ J/ N8 a4 z5 d( a
# ssh-keygen. U) i( \3 ?$ C! f  o
一路回车,就可以了。
& R5 d6 L* u4 G0 a: e' F: r! I 9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg
  B/ b6 v& S; [3 i5 D5 }+ \2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1

) T' b2 G0 ]- O  ]* V7 ?8 N这个时候,就可以查看到上传的key* z1 R0 x/ q" w% V: K
root@node6:~# nova keypair-list
# ^" w; d2 m2 ^9 V+------+-------------------------------------------------+8 ]3 o; }# ]1 J: {% n5 J7 j
| Name |                   Fingerprint                   |. T5 d6 Q; ]& X
+------+-------------------------------------------------+# ~( T3 _+ p% m: x) i
| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |
5 J3 [- U  ?/ P  N+------+-------------------------------------------------+
& P- a, G) d: H, d- w) v0 z4:开始创建虚拟机
7 h7 n% ]5 s) I0 q% M3 n0 c8 y( w 查看image list
) j- u. t  }# S' w5 }' xnova image-list; L( B# }9 _, C  E: v

( l* _) B. I- t查看flavor-list
: m8 W# b3 l0 ~" ~! L- N+ \; o, l  k; H
nova flavor-list
4 C- a) a1 U5 E创建虚拟机* V8 [1 x/ u  @( ?) A( N
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
! W0 d% p6 Q0 i6 p6 {/ P2 r看图有真相
+ y$ H8 G4 F0 K5 |3 a4 m5 M8 m 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg
# H& h8 |9 c- a$ V6 Q: r% X 查看一下创建的虚拟机

( U+ Z% A6 N$ Q) l& E nova show superfrobnicator& ~& }$ t6 L8 N2 ?8 Q
61dd66ec54e736d1a27346b39b504fc2d4626979.jpg 9 e  |9 S/ d; g9 h! ?- D  g

+ S- b5 }7 `6 m" ?0 X5 assh 访问VM
# C" |  [8 b; L* w% Q& V
4 k. r7 l) k  k7 i& s8 T' T- n" _打开防火墙
1 V3 j+ H  O, }7 c9 Anova secgroup-add-rule default tcp 22 22 0.0.0.0/0
4 Y5 @2 q1 d3 ?5 I3 I% w. K( Pnova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
- R+ C- E, [9 N/ v& p, ?, }这个时候,就可以直接ssh到虚拟机上。
1 q: }  }7 z$ f  i% `4 Wssh -i .ssh/id_rsa ubuntu@192.168.22.35# l: J/ d& N7 X' X$ j
这样就可以登录服务器。
0 r0 w) g0 _6 u0 C: x5 R6 rFloating IP访问
, D8 z% T" o9 l# z* A如果希望访问floating IP
* |+ G" v0 x. V申请floating IP' B+ d! T6 l3 A/ C8 @6 |- P
nova floating-ip-create8 [8 C. h# J1 A7 h
关联vm* r" j- A; C! e* {! o3 ]7 L. `
# nova add-floating-ip superfrobnicator 10.42.0.36
* [, [: ^( x7 D7 [' c
) h+ P$ [6 b" d. ~ 查看虚拟机
6 k. |1 z7 f) w  T. Z& N3 p: E nova show superfrobnicator
% F; P& q% o7 ?ssh访问虚拟机
" q- {. z4 `* N* n3 Wssh -i .ssh/id_rsa ubuntu@10.42.0.366 I8 m$ P2 P( b& e. V
查看安全组和规则3 u3 y  {5 v& R
# nova secgroup-list
" D8 F* w6 Q/ Q% p! y" @6 n: d* ^# nova secgroup-list-rules default
' F  [' t' n7 R# x看图$ C& a  I# S- c
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg 9 s5 t! e% Y) S4 C" d% J

# @, X8 U1 y" n  s' j/ r看看结果
" K% c% b$ U; `+ ~3 f' l. M 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg 8 _6 F: p, J/ }  j
ssh访问vm
# _$ E* j* a2 n) M8 u+ X3 E: M; v6 [  @2 V# H, F0 E
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg
2 f4 j' a1 d; ]. x0 l- l6 C1 o' V- b$ B8 a( g
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg
' H3 ?# H+ G3 W; w! K# o# Q
  `& |: u4 r) G0 r8 V+ B7 G- O) v有用的命令
) b& q! {( e, |# m7 T查看keypair. s0 o/ t+ c) N9 Q" V
nova keypair-list, {* ^8 R& @, _7 y; ], l5 X
删除keypair5 u- g* F  z8 d* Z8 u1 R
nova keypair-delete
1 p- y7 Z5 ~# G1 y# s* `' K查看vm
* M1 A6 L; w0 ?5 a6 x$ Snova list2 |8 T8 d' Z; C% i) Y1 h- S
删除vm,vm的ID
& ^( b' U8 @8 \4 W2 u/ A" }. inova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f3432 @" L( j. _1 z
& S; v" P. R3 N* J6 B1 w) N7 P
: w5 B5 O1 ^6 e! U% \' x! N
七:安装和配置Dashbaord& h! ~& Q: S% W: _3 A  z) [3 z
1:安装dashbaord- g" r( r. ^; O5 Z
apt-get install libapache2-mod-wsgi openstack-dashboard, ?7 n" R0 {0 n/ R, `" b

7 H+ a8 W) ^, a. [
5 c8 G  W6 z7 j. j3 j# H& ]这个时候,你就可以登录dashboard" [* r" o5 D/ m: ]5 x, Z1 e  |
http://10.42.0.6
7 p! G. R6 f8 e, b8 H( o: duser:admin
5 x3 _% ?" l$ Q5 V8 _4 fpass:hastexo
* P/ `6 D# W4 x' {, s: }% K, {) b- H
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg : l* m3 X" `5 t9 l; ~# w

" C7 U' [$ b4 x/ U  e+ N# r 6982e5198618367ab223fa612e738bd4b21ce53c.jpg $ u* I0 w4 P' y$ l0 p
) Z5 z' V* O8 S$ P

- ^0 |% w1 s8 G8 k
) |( h0 v" I, j! g5:理解project和user关系4 w1 `, [8 X1 I
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。
0 \' ]  w5 W4 e6 N, X% K你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
5 E! b5 G2 @" ~我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行: h9 ^7 n( g- f4 A& d/ d" t/ E4 G
6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg
8 j; b% h) n. E4 v! V- w: J, z; E

9 X: f. \4 A. X2 [八:euca2ools 工作
; K8 p+ K( F: }1 h7 L& Peuca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。8 O& M! t" M2 o4 T* U$ L5 h4 s
1:安装euca2ools工具
$ g. A( i3 w6 S5 h* Oapt-get install -y euca2ools$ a1 H* ~& W  s+ H$ J& j! l) q9 W
2:设置环境变量, W. x- X) e+ ?: W3 k2 Z% ?9 q
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
% z) j( C6 }* x' q$ n# V2 Qexport CREDS=$(keystone ec2-credentials-create)4 d3 v  d3 d1 h8 X3 U
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }'), H1 C$ C2 L3 V; f" a1 ^
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
4 R0 h1 u+ u# _2 b3 a+ D$ }, q3:运行命令( p( B; s: V) V
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list
9 c* T5 O$ C- a; X* ^现在Essex对Euca的工具支持应该比Diablo好很多。
' [" ^' |6 S0 I9 O 96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg # E" R3 g" J. y* f) M- q
列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances
+ `% _1 P; H; `/ n' t9 @5 M2 \8 Z
4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg ! C: I" ?- O8 m6 F. H1 o+ L

0 s- v% X+ f/ R  \6 e6 T' b/ \9 W$ `0 }& J
Appendix A:  使用nova-volume
7 h% h0 A+ Q+ Z7 x/ X  {: REssex Dashboard可以管理nova-volume。有两种办法来实现3 n7 \( C3 p- G
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。4 P3 v: b+ f1 Z* _  a
* s2 i5 V& Z! W8 D! G6 L& F
1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,9 \/ B3 n6 ~1 y
新建一个文件来做 LVM:
. C! [- I, i/ |5 cDD一个设备2 v2 b1 k  N+ j) |+ k
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
9 S* E+ K7 R/ h, K1 o% c7 N加载一个设备
7 r! E6 e: n  T( y# losetup -f nova-volumes.img0 @' t7 Y9 ?7 m7 H2 Z) x
查看加载情况
8 }! ?. s* u3 D- B! d- P  ~# losetup -a5 a1 |3 ^7 s% w! B  n3 ?9 t3 v; I
/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)8 _. C' t. g4 a9 c$ Q
创建一个nova-volume的卷
# |# I. v* M: j/ j4 l- _8 f) V! o# vgcreate nova-volumes /dev/loop0, a  z( H4 J$ U# q) H. p( V
  No physical volume label read from /dev/loop0" ]7 p3 I5 r, r, e0 ~) X
  Physical volume "/dev/loop0" successfully created
* ~4 B7 ~- @6 u" X: a- g  Volume group "nova-volumes" successfully created
) @6 P: p+ R  Z8 t# H! D; H查看卷
- [( e! S$ a2 k( T6 x& M% ~4 L#vgdisplay
' T6 a- ?: X: T# ~& Y8 v( P就可以看到创建好的nova-volume。5 s) J% G1 Q. h3 p
创建一个5G的卷,名字为volume1
' [% x" ]" z; V( h: B& b; K* [4 Dnova volume-create --display_name "volume1" 5
* A/ x: Z( P, L: y1 D: m$ F# T9 m创建完后,可以7 j, t7 @9 `; I/ y% c( _6 T
nova volume-list
2 T+ z" p0 e+ u( y. q 08daaede9c82d15854a67711800a19d8bd3e42b9.jpg
2 V$ O3 E# L2 d" _) f6 S% B

" _$ @8 C" y  z7 R9 T9 Q; V! \4 H创建的过程非常慢,看status完成后,才能attach。' f6 x1 b0 j+ H2 D8 b, D3 w, v6 p2 D
如果希望删除创建的volume,目前我知道的就只能通过+ A7 b: n* F! V# a$ ]4 \1 Y
euca-describe-volumes: @: _. b% @/ A3 y8 r5 ]
euca-delete-volume vol-00000001
6 L# k+ u* g4 o9 d* {) V5 `' ?
% |/ f$ W! u* H- Y& r把卷添加给虚拟机,1,表示ID号
8 Q) w9 y8 x/ Jnova volume-attach superfrobnicator 1 /dev/vdb
, P2 s$ Y% m9 a/ o0 e* M! T8 D& j! ~' \* h" X
2:单独一块盘5 H$ g! t# v* \4 _, z! r
# pvcreate /dev/sdb14 j$ n: ?5 V" C% m' r! `
# pvdisplay
6 G2 Z# Y7 R% u3 f$ g#vgcreate nova-volumes /dev/sdb1, Y9 E2 R- t4 G9 X+ u
# vgdisplay9 L! q8 R6 E+ p- s
这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。
8 M  c7 n) F/ U2 p2 r
- a" z, ?. j& E) k" y& ?
* p7 A2 M* B9 ?参考下面文档
7 G4 h0 J. X1 [3 Hhttp://www.vpsee.com/2011/09/openstack-nova-storage-management/) ?8 I4 Y4 G; A# l# d
http://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html4 S) V' _3 U2 _; p+ k! u
lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html! I7 s% V) N: b1 j7 G* S7 ]
* `0 I2 R: S1 p
$ V9 Q6 ?, U, m) ~' ~
& E0 x( l7 e, Q" F. u" M

  |9 ?. Y6 N6 r' k
& @, }) \  m- U8 y+ \Appendix C: Dashboard 创建vm,允许ping,ssh登录
- e* |/ ?* L, j8 B& m  m对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
' _" {9 d8 q7 r; _1 G& c  O不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。
, m- j9 N6 d2 y6 n从ubuntu下载的image,只能用密钥登录,不能用密码登录。
( R0 B8 \5 I  @* [8 q- p! G1:设置安全组 Security group
/ O! g# |* d! `. Q) ^# M! w安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。% o7 v2 L& h# e1 Z
为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。
- s$ O- a. D+ k默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
9 \  ~& x) V+ m0 D6 Y3 s) h 9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg ! w2 b. u/ Z9 s7 l) r

; U1 F' Q# ]% Y" E
) r* m6 ~' v7 I$ G) n# {
2 L! C" V! Z! ]8 k2 R% |& m2:创建密钥
, m4 X# I% d; U6 ]  M1 o为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。; x; @% W% |. k" M% n! ]/ ~
这个时候,你如果有私钥,就可以直接登录。& l$ n: ]; r* j/ U

: C+ E4 u: i2 i3 ~; Q9 C) u% L" U 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
+ x' ~4 h/ x# R! f: S- V下载私钥  T, e5 A4 m2 ^" B* W$ d
点击create keypair,就会提示你下载私钥。私钥是pem后缀。
! t1 L/ n; B, O 7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg 5 }1 s0 @7 L! h/ n

. m6 k; D) x5 |$ G
5 X% N0 q: q+ ~7 @. \那么你就参考这个文档,就可以。
; G& s- t. V, A, a3:创建vm
4 P7 B6 j4 @! H/ N创建vm的时候,你会选择keypair,安全组。
  B. a; h8 e( j 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg $ G$ n! p3 i; G8 J3 e1 B. ?4 Z

. a; d* Y* T8 ~+ f8 g6 D. m: I9 E& B9 Q4 R- {6 F1 l
46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg
/ m1 Q4 u+ k# O, c1 z9 Y- E( X/ T
$ A' v/ K3 t& \, m) L) v创建完成后,得到其实是一个内网规定IP
. t+ R: [  J) x e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg
) J! N  U7 ~6 v2 X1 L

0 q$ ?9 _; p2 V+ a6 ]3 e) I$ J: f  A4:floating IP# w0 N& v; e  Y  c4 B
给虚拟机分配一个 floating IP,可以理解成是公网的IP+ ~6 ]6 v; p/ x
8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg
. Q  l& s0 l- Y1 A1 X! p1 M' V分配完
1 l2 x1 Y6 g; }- r: S5 |! v
60d25790f603738df2568f99b31bb051f919ec45.jpg
2 I4 p# ~5 l9 |3 F关联vm
0 Z5 `% x# z/ F+ M8 A
af15baefce1b9d161e8719daf3deb48f8d546419.jpg 9 Y! p. f9 L; _4 S" D1 d
7 A1 m. {( I% ]1 w& ?" p

( H. m, {- ]- m5 b2 c, F8 X8 z% w0 ^" e* d4 H* x
看看结果* M4 I. Y. W7 c$ ^' a6 Q3 s, i
3c0efa1190ef76c647bf78909d16fdfaae516774.jpg
3 w# o* G: d7 _  ~; G8 I- @& z
) n  K3 Z8 ?: S% E9 b
5:ssh 访问vm
+ v# g) `( b1 h' D这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。
0 Z) e9 a) I3 D, ]/ N* G/ V) b; ^对于ubuntu提供的image,ssh的用户名是:ubuntu,
" ~: c7 `; F7 D7 @9 v  T6 XSecureCRT 6.x版本
# H) ^4 k/ W$ Y/ Y  h' J对于6.x版本,已经可以直接使用pem后缀的密钥
/ Z8 i1 ^* J' x: f
+ s6 U$ \0 d% R8 M, `* `. ] e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg ; m9 z/ n) ~$ B! p6 {

7 T! v2 I  A2 eputty登录
/ l" G" R1 W# m8 A5 g对于putty,需要对密钥进行转换。* r! o4 p4 z) u" P9 v9 p$ `6 b
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html/ R- U6 @' q$ Y2 x. T0 U, U+ }
到官方网站下载:PuTTYgen这个工具: Y  U& Q- r0 N' S$ G, j
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以
/ i- N1 p, y9 @ 67da7663053a03280d33fa5f.jpg : [2 B1 ~9 R  O5 m9 z
6 Q! d' J" m9 ~% g/ T
存放到本地。1 L8 F8 @" E7 H* ]
设置putty使用密钥
9 p1 L: G  d2 G; m& w# E, Q 4e0ebc44ad345982731568290cf431adc9ef84c6.jpg
1 U7 U# R, p5 C8 J

! P8 t+ V5 D* ~% r1 r. A2 p6 ^ d520caca7bcb0a4664b806826b63f6246960afc3.jpg
" `2 b( \% K. t

$ X+ W+ y& [2 Y6 Z
  J- m' ]- g" s% c4 S! s6 F% X1 ulinux客户端ssh登录vm
  g- B5 r& v! a' A+ k1 }, k1 [如果你是linux服务器上,你可以上传密钥到服务器上
7 F- Q/ B- Y  o8 D6 o' f( J- ussh -i key_for_openstack.pem ubuntu@192.168.22.34
% A/ J. t% v( w2 D" T就可以直接登录虚拟机。
+ R" \0 D' t0 n; X) `: t  V6 V+ p. M6 r( ~

+ Y* i( k7 P2 B( v0 z& c+ m7 lAppendix D:FAQ9 a$ ^! S! D' F: P  H, T) w' D3 M- B
1:我登录服务器后,命令都无法运行
! H6 T' ^, y( }  T" k~# nova image-list
; M- r5 z( v/ p4 _0 |: SERROR: You must provide a username via either --os_username or env[OS_USERNAME]
" k4 K$ p! N% R% a+ s  S$ h- d+ P1 e& d0 ~
如何解决。
; t! w& d; U" k) G; V* F" k7 r
这个问题,其实还是你的环境变量导致的。" ~( p; e) j( [8 ^
export OS_TENANT_NAME=admin, x) Z$ ?+ \: {# ]
export OS_USERNAME=admin8 ~/ ]( R$ p( k+ [% h
export OS_PASSWORD=hastexo
2 G; x5 Q) M: Y4 Bexport OS_AUTH_URL="http://localhost:5000/v2.0/"( ~* w. s$ b0 {7 ~
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')% h; h/ F8 e8 L+ [! k% Y
export CREDS=$(keystone ec2-credentials-create)5 m7 b% B: \) U  ?" {
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')) Z& u6 \4 d* b- K7 q
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。2 \- n. ^- M! J
如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。
! ~& R" o# r- X2 Z. T; K3 `: Phttp://bbs.chinaunix.net/thread-1958386-1-1.html
: k: k( H/ ?- d3 g$ Y: \! h3 d* t0 r) F2 m
root@node6:~# nova image-list
* |  c( E8 u% g9 n. ~  a+--------------------------------------+-----------------------------+--------+--------+$ |0 O! |6 {" V# A
|                  ID                  |             Name            | Status | Server |
' i* a" k% h9 O% w) m6 H) _+--------------------------------------+-----------------------------+--------+--------+4 s$ [( K7 K0 Y: X) w4 r
| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |
( [( p9 t9 R5 g6 H/ m+--------------------------------------+-----------------------------+--------+--------+9 |5 a) [& T' I- r5 m
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg
2 i+ E8 u0 H/ `/ ^2 K; h2 A2 X- M6 J, o6 w1 c1 T4 P( f! d* E
2:如何用curl去测试keystone
/ S+ S+ h! G1 L6 c% U& Z替换红色部分,就可以了$ W, w  D3 A5 b# v
# 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
8 N: Y0 S- O# {( `& V8 w6 X# w% F0 G* U

( E8 f+ i" }+ e. I1 w" ?2 \博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb' s" ?8 S- l) p% F+ J: E! w, b
( J, N. a8 t# Q& K" C! }
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:% P, a1 m8 g1 }; z1 M% D
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
- w+ b" e9 @( j5 F1 X: ?8 E# S0 L5 V* j% z- e# B3 d9 x
解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。# F" m# s& Q5 ]& q; e
           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
% i3 C5 V8 x8 d注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:
# r! `3 d4 G3 b: A$ Wexport OS_TENANT_NAME=admin
* ?" @0 t( p" ?$ L) e# G6 Eexport OS_USERNAME=admin! m1 l  n1 ^0 @$ C" S6 T4 I
export OS_PASSWORD=hastexo
; C2 h$ K8 u3 z& ]export OS_AUTH_URL="http://localhost:5000/v2.0/"
' U" h, c- p. p) L, a1 ]export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
. e  ]" r" ^) N( M. texport CREDS=$(keystone ec2-credentials-create)4 A8 v9 c% _1 W* y" ]
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
, x; w( R+ o, K1 H0 z7 L, |! Iexport EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
, |1 t- @4 Y7 E
. s6 L" A( }' r9 d- U* Z8 o) F现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑
& d/ E7 y9 _- R/ R1 A" d+ D! j
# X: B6 S1 F, ~' @SSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:+ N6 Q- \* Q. K) H& R

1 U- S0 R: U( @1 MSSH Secure Shell Client工具密钥登录linux:
3 i7 L( [" P9 R. u5 l5 |  k& t' i# V" t7 `, A+ p5 k& g8 E
http://server.chinabyte.com/365/8835865.shtml4 W/ s/ t/ ?4 T$ ~3 E

! h' E3 A  p/ T! w* h6 ?- ]- T2 M8 v" D1 e; H
SSH Secure Shell Client用public key认证登录
1 c; K, p6 ?/ {; Uhttp://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html
1 F2 s  G  l$ L& P- H( k& w! D
" r. |! \, D" q1 M由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:
! X) {& K0 ~6 t/ c9 P( t) K' c

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

7 V) R/ H' P$ i% g
7 L8 a, _( c( h! i# c2 x+ T; [; a没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。# |3 i1 J7 s/ k( F, a9 n
vi /etc/ssh/sshd_config
0 d7 n0 D1 }/ d. ]+ z( }2 f! X将PasswordAuthentication no改为yes
) L. |  H) g: s- ~) Pservice ssh restart
' U  x1 x, V! T
: u7 `/ e' G9 Y! b) y* C" s这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。6 i3 J" p0 w2 e/ N7 ?  O; j
安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版
: V$ V0 ?5 D) a6 r/ ?$ b
" ^) R. U! j$ v' _虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题
+ G, s0 C9 E2 h( e5 o& _( \# c# x
$ t1 T8 o% t1 |, m5 k1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
7 Q! v& v  K2 T, I2 gvcpu.hotadd = "TRUE") B) _' y3 H2 t
变更为
( ~8 {/ D$ ?% [& X/ tvcpu.hotadd = "FALSE"
1 |5 D. \, L0 O6 {/ B0 e& b重新启动机器,如果执行命令: % R) @4 }; p6 `9 }  q
virsh
! o/ f5 }( c& x! ]4 R3 D1 q进入控制台就没有问题了。
& B0 g" s: \0 K$ t9 t. V' E- b5 `2. 修改nova配置文件/etc/nova/nova.conf5 t% W; X& Q* l- N1 B5 Z1 e* r
#--libvirt_type=kvm
/ C) q8 W( m9 e7 F: O更改为qemu2 X( K/ W& }/ X6 x  A2 p
--libvirt_type=qemu
7 H* F+ ~. i) H& P2 i4 y4 S/ N3. 修改/etc/nova/nova-compute.conf; N; b9 v$ m9 @1 i1 l1 Y
--libvirt_type=qemu
& g( y+ k. L- K8 x* @2 Y( f2 T4. 重新启动nova-compute,如果libvirt报错& k6 M) p+ z6 u; T0 H6 a# e+ ?! g
/var/log/libvirt/libvirtd.log
1 m+ j" h' |% k4 J8 }( E1 J" XCannot find 'pm-is-supported' in path: No such file or directory, Q" p+ Z/ w. m3 I/ x0 d; J
报错后需要安装
0 |. ~2 ^: T( s7 Iapt-get install pm-utils
, f4 F, u! s, }  K& ^2 }% w5. 重启libvirt和nova-compute就可以了6 {. Q# m2 d9 L  p) t. j& j
service libvirt-bin restart9 L9 p8 L( g! z& S  u$ H; f) F: J$ F
service nova-compute restart& r  f5 K! }; R- P# `
$ b0 h% x+ E& ^7 Y
6. 执行 nova-manage service list! g. J6 T1 l+ w: x
state都是笑脸的话,恭喜你,搞定了:->  W  X. h; W* j) Q2 z* k- f; R; S
; k$ Q  F0 E+ c: O: N8 N& y
感谢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人群已满)

返回顶部