锋云网

 找回密码
 快速注册

QQ登录

只需一步,快速开始

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

在Ubuntu 12.04上安装配置OpenStack Essex

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

, v; ^, W6 B6 j8 i) c. P. d% `% y原文如下:
- O% @& S/ \3 T8 ?/ ~! @( v/ F8 Y! X3 q1 s
Ubuntu 12.04 (" Precise Pangolin") 安装 OpenStack Essex* ?8 Q, `7 f0 y$ V5 p, V
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。
; d/ A& G$ L. U* k& R* F1 H6 {原文/ D8 ~1 \9 A$ p' s; J
我下面的步骤,也就全部参考原文。
" w2 b, x) N) R, V/ A( c$ a$ `3月27日更新:基本完成文档内容
) ?8 |& g3 x" n$ r4 V% P4月5日更新:重新安装第三次,修改了文档一下小错误。
4 |7 f+ {1 O1 ]: V9 o4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖# z# l+ u5 p3 [, s* A
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。) H/ `6 r+ ]' ^
4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。. k+ Y7 Y- T; g: }" y5 o# T
4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。7 c5 P( R9 a' w: l; e1 h
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
% W1 v3 y# t* N$ S! o/ s) s 5月7号:用ubuntu 12.04,重新验证一次文档。我在虚拟机上安装,compute服务不正常。virtualbox和vmware都是一样的情况。
% [9 G4 H; L( M+ v* g6 b5月10号:用一台物理服务器安装,文档内容,全部通过。不过发现Dashboard默认已经是使用memcache,不需要对dashborad进行任何的修改,就可以使用。另外已经验证,vnc是可以使用。不过没测试volume服务。# D; k7 X0 H# e" j# V

9 H- H9 m* J8 W. ?0 L硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。% T. K% A3 v, h" _9 u4 \6 C) e
下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
1 K. [: d; u" ?% c为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
3 ~& j: J: n/ G* }7 l3 |, z0 s9 B目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。
% L9 l/ x, H( ~* Z
3 ]1 l4 T9 C- W* e2 t一:准备系统! t  h* f6 f3 y) [  m, `
1:下载ubuntu 12.04. 服务器版本1 w3 w. U) j$ B* v
ubuntu12.04正式版本,需要4月26号发布,目前是beta2# i. G+ B4 y( u& a: w0 _
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso
: w, d2 Q4 |5 g, c; w: X/ {+ s1 U/ g' N
2:安装OS
5 u1 _) f, ^2 t+ v5 \- u安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。
/ U) ~3 E) s) z1 s3 m& S7 KIP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。1 l& N1 J. D0 G% O: {/ r3 T
装完系统后。9 h3 N4 u% s* F8 C
apt-get update
( i/ O: K( V& I/ d% Napt-get upgrade
4 K5 l8 w  S- _1 q2 s更新源里的包,更新系统。确保你装的是最新版本的包。2 l% l1 K: s8 {5 m! k
1 A# E& c( V' f8 K' ]- W
3:设置root权限
/ b* i! M# {5 p$ e5 w- n为了简单,全部都是用root来运行。) q/ I; X6 [" M6 ?/ c" I9 A
sudo passwd
; Y* B3 O7 V3 T5 e4 x% N2 s$ i就可以给root设置一个密码。直接用root运行。7 c) P3 v2 M  J9 b2 |7 D
4:设置网络3 C6 u% p( p9 J& q
我的网络设置和文档是完全一样。这样也减少错误的几率。' d, ~9 B  i0 s6 U
root@node6:~# cat /etc/network/interfaces
0 I% t% E) i- ^) v, o# This file describes the network interfaces available on your system
- Y8 W, `6 V: i6 C: w# and how to activate them. For more information, see interfaces(5)./ C" o" L6 M" e7 |

/ H/ G0 R" |. A! k2 `0 X& z; p# The loopback network interface
0 S& B1 v" `, P/ _% s5 zauto lo
) j% z* T5 `/ U4 v9 Iiface lo inet loopback
3 s( C$ x6 h- t( l# _! E  B7 I; i& R7 x7 p
# The primary network interface
* _* \6 u) s8 N% Bauto eth0" h, @+ P  ~, a
iface eth0 inet static
' R! N$ R/ C8 @, W        address 10.42.0.6* m+ t  }9 l* L2 t
        netmask 255.255.255.0" p- C7 _6 O, f! n
        network 10.42.0.0
0 @# q5 K' H4 A) W" A! Y& X  S        broadcast 10.42.0.2554 s; M1 y' `" V
        gateway 10.42.0.1
+ g) ~2 q# W* |5 S# o0 W4 m2 l: ?: n        # dns-* options are implemented by the resolvconf package, if installed
+ q$ j9 b" K4 Q2 b        dns-nameservers 114.114.114.114& H+ c3 k3 \/ A* Q( I2 W& V
        dns-search test.com7 `$ u, O7 E3 S+ H% Z' ?$ i0 {) P
1 f# r! j# L' u1 R8 W1 l+ ]" p$ `  S
auto eth1
# S, X- y1 J/ e( K* |3 x; Kiface eth1 inet static7 o2 N0 V5 p7 S* i, Z0 Y1 D
address 192.168.22.1
& L+ V- \; h& B* I0 B- K: E' k$ Ynetwork 192.168.22.0
) I5 W+ b. J( c0 i5 dnetmask 255.255.255.0( h6 o, T5 q' D) V# i
broadcast 192.168.22.2555 f, B& u' W) x' o5 ]1 ]; m
8 |8 D1 f2 F4 B2 J9 Z/ g% r
重启网络,让修改生效7 S  {( X# N! k( z
/etc/init.d/networking restart. h$ B+ }* H, v1 K
5:安装bridge
% [& v: m: T2 ]  c5 y/ A$ G# Papt-get install bridge-utils; q" |9 v. u7 Y! n4 b7 k
重启网络或者重启一下机器都可以! B3 t9 [1 p" F$ u
/etc/init.d/networking restart
0 S+ r) s3 J" g+ \$ H) a6:设置NTP$ t7 J9 u% \# X, b( ?
apt-get install ntp4 T& n6 U9 Y8 x9 Q4 J- S
( s6 C+ v/ w* B8 h
编辑 /etc/ntp.conf 在末尾添加下面3行# M  c( g1 J8 o: O# O

1 S- d. V! U* F9 c! r6 Fserver ntp.ubuntu.com iburst6 j3 T  K: ^) W
server 127.127.1.0" k) s5 n9 t- P+ n$ I2 p7 U
fudge 127.127.1.0 stratum 10& \" L% c2 _& S* k

$ _' g2 O( z' m  s% C) [重启服务
/ n$ [  F3 Y$ i1 X' ?service ntp restart
* p/ ^: d2 O9 `; W0 I3 y7:设置Iscsi
7 s+ ~& t$ x: k8 Japt-get install tgt3 h  P9 O* t; w+ ^) c
重启服务. c6 P; n' i6 }; N1 ]
service tgt start1 i$ `7 W+ p' x. ~$ _+ q
安装iscsi客户端
& d7 Q) L! k) M$ ^& ~apt-get install open-iscsi open-iscsi-utils3 {  f" B. D) L6 {- ^" @3 k& W! A
8:安装rabbitmq
7 I: Z8 J- j9 e7 Papt-get install rabbitmq-server memcached python-memcache8 y- s6 L1 M, |. \- }4 [# \3 Q+ _
apt-get install kvm libvirt-bin
, Q7 y5 ]. W1 u- x# k1 J% r
; A) \: Y, Z' C' D二:安装mysql和创建相关数据库: _. e! @* x( D3 z+ R
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。
! j6 R+ k3 T$ Y' t- f4 Q1:安装mysql8 b- }5 n) R, {3 r' D6 t
过程中,会提示你输入root密码。# e. i2 |0 M" e% r; U9 K" D
apt-get install -y mysql-server python-mysqldb
% i) ^8 ~' T5 u" g/ N: Y1 G( h让mysql支持外部访问
, |1 b# j8 P3 Y6 a. |sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  
% d3 F4 m; @( X' R重启服务* |. z/ \* M% E3 X) x
service mysql restart
8 K1 ~+ \7 `# _' o2 u8 F2:安装phpmyadmin (可选)
+ ~6 a; q* l; R0 ~. r3 [为了方便,可以把phpmyadmin装上,可以比较方便管理数据库9 D/ j; [0 o' a- \
apt-get install phpmyadmin
0 y/ n9 k3 N+ l1 Y" x; d安装的时候,第一个提示是让你输入root的密码。+ |; q% a2 X, f
3:创建数据库+ [. P( c6 T8 [
nova数据库,   管理员:novadbadmin,密码是:dieD9Mie
4 v$ E! D8 u5 Rglance数据库,管理员:glancedbadmin,密码是:ohC3teiv* Q/ k) F, ?4 Q4 P, F
如果你修改密码,后面很多配置都需要相应更改。
! i* v: n- @: _* ~2 F8 O/ xmysql -uroot -p# c2 \9 X) J& f/ C- v0 H9 [
CREATE DATABASE nova;4 }. Q. e" q4 P* I  d( A3 p6 g/ G) x
GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
4 L1 o5 l5 i* |8 j& }CREATE DATABASE glance;+ V+ \3 }6 q/ {
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
' f; Y# r2 g3 g( oquit
. o8 w0 ^2 n( S1 o- H
4 M4 I; K. G2 p# C& V
6 o+ s9 c  ~+ j' ` 三:安装和配置keystone
9 @5 S. v' A; A- [/ }Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。
% ]# ]: [/ _: [3 X' G( l( K1:安装keystone: ^9 ~2 ^( ]- ?6 Y! ^
apt-get install keystone python-keystone python-keystoneclient
6 S% k1 m0 x8 O' Z9 u5 ~2:配置keystone
5 b: L$ A  L. H0 k需要修改 /etc/keystone/keystone.conf 两个地方5 C4 B& A6 V9 m2 F
默认定义的token就是ADMIN,我使用hastexo作为token" J' o9 ?- H0 j# _+ |3 l% ]
5 U" s! |. J9 \+ @; Y8 j, Y
[DEFAULT]6 V' b* n7 ]4 V! l
bind_host = 0.0.0.0( E# U, \% c9 s" D6 D* T% Z
public_port = 50002 [8 C" O% I7 g1 ^$ w( d6 [' o
admin_port = 35357
5 M5 c% k3 K7 I. ?* C, V#admin_token = ADMIN" v/ G. U9 {2 ^% K5 n; j! w
admin_token =hastexo另外一个地方是8 h6 P) g( `- Q: {8 X5 _+ u
[catalog]5 Q4 L& T$ q( u4 y6 T9 F- O9 ^
#driver = keystone.catalog.backends.sql.Catalog
( B1 N, R- A; ^: T5 ^* {5 Vdriver = keystone.catalog.backends.templated.TemplatedCatalog
3 Z2 n2 _9 a4 g! j, b# g: Ltemplate_file = /etc/keystone/default_catalog.templates
# ?! c3 T+ I) K; j# g/ L+ w; K- f. y; O, |# m
重启服务
1 \% w6 N* F4 u6 X. Z3 [service keystone restart
8 E$ ~8 o( L  W1 D- ~3: 导入数据9 d- d- c4 W# Z1 [) B
这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。9 j3 U# y' z& [
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt; U8 m- B- X& k
下载脚本! d) H3 B' ~9 W
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt6 G5 ]2 I8 F* n! j4 o
mv keystone_data.sh_.txt keystone_data.sh
9 x/ g1 H' u" l8 m) G+ y% u( G7 n/ T  m) y  h7 S8 p% _7 M! T
让脚本可运行
6 n$ g0 H  N$ @: Vchmod +x keystone_data.sh
. C5 T3 O2 X6 a* y" ~运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方* A2 M. _/ Z) D5 t. r
第一个是登录dashboard的admin的密码
" c! \, R/ {" x) ]+ t" q; [- |6 L第二个就是keystone的token
: ~" p' c* M5 ?8 d% F#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
1 j7 N. k$ |4 j$ D: sADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}- _/ z9 p. ?& S( `$ x
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}7 X* N' s! `8 B4 E6 S# f
#export SERVICE_TOKEN="hastexo"; f' P% K9 Q' x7 E
export SERVICE_TOKEN="Centrin"8 u6 T! K5 ~5 h! }9 r# d$ e
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"0 |/ N* J" F0 @2 P
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}; M4 f0 s1 j% Z' W
) a0 Y( r; h+ c% Y$ L1 }, N. ?

  O5 z0 f/ {4 o' \) L5 x# Y: E8 T./keystone_data.sh
+ l$ V9 A$ f& ?& B/ ~8 o* {: Z- Y顺利运行,会什么都没有输出
$ {0 R/ c' U' a7 B6 ^7 f5 }

$ T* |0 W0 b; _# `7 W; f6 I6 ]

keystone_data.sh 脚本

keystone_data.sh 脚本
( E" d4 l) _7 _. w: v) U
3 b# w  R9 E! I* q3 I

) x& O6 g6 U, S' G. N. H0 q#echo $?
+ }3 G: R% w3 J* b: u$ Q0 Y下面会输出0 ,表示正常。你就别再运行脚本8 X  x& k7 S; v  S" ^
keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
" T& o( }4 O! d  E看到这些,就说明keystone安装正常。
; C/ V* H; m% `& I& Q, m' l
9a7a9f26cffc1e179c7c4f954a90f603718de9a3.jpg export OS_TENANT_NAME=admin; e0 n! n/ N0 [- J
export OS_USERNAME=admin" Q2 T6 x- b% _
export OS_PASSWORD=hastexo
! l6 V) u1 y4 g# ]1 b  u6 |export OS_AUTH_URL="http://localhost:5000/v2.0/"
, f& H/ s% I  K; c' J4 R. j: H0 U检查检查/ o3 ~) r0 @! ^. a
# export | grep OS_
7 R9 S0 v- \3 {: Udeclare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
5 S3 [8 C0 U) D& u/ ~2 Gdeclare -x OS_PASSWORD="hastexo"! g2 a+ k. W% Q& A. l
declare -x OS_TENANT_NAME="admin"  p* {5 W4 T4 }6 t
declare -x OS_USERNAME="admin"3 `( I# W0 Y: w5 X; z* h4 I5 U
这个时候,直接运行
- b% @' }! Y4 x, H& A; z/ Troot@node6:~# keystone user-list
7 P7 F+ S$ a% O+----------------------------------+---------+--------------------+--------+. c8 i# [& j2 l4 r. {
|                id                | enabled |       email        |  name  |2 v5 F/ P. d* _# e, z9 s* q
+----------------------------------+---------+--------------------+--------+
7 [9 m8 Q" W/ Z8 _| 44f4b6f1fb254f50b3e690c396d9e513 | True    | demo@hastexo.com   | demo   |
; @# h5 u- o+ l9 F& N| 8e5965dbf92b41fda9d29ac1e8145f39 | True    | nova@hastexo.com   | nova   |4 b8 z8 G: k; m
| a06b9609c6f14cfdbd6ab66e149007b0 | True    | glance@hastexo.com | glance |
. m$ \. m: M6 n8 c% Z| a1ccefc17bd34be590e43cd7136bab5c | True    | admin@hastexo.com  | admin  |# v5 D% l1 U7 I5 H3 z( K/ j
+----------------------------------+---------+--------------------+--------+
- u2 N2 @4 h6 N, ~# B
1 c, D* J6 \& V" w7 }. M4 \# ^
- k1 K: i! L% S1 x% T- C( R7 B# x6 e5 U- n6 D0 m+ v9 h
四:安装和配置glance0 W# L. d" @6 n' M5 N' J) r' E
1:安装软件4 Y6 v  b/ j: ]  _
apt-get install glance glance-api glance-client glance-common glance-registry python-glance
4 ]2 j7 ~. y6 r' m7 H5 D4 ^3 |2:配置/etc/glance/glance-api-paste.ini , M; _$ W" A0 R9 l, a
修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
3 ]  R+ D( ?( f" B9 g; ?admin_tenant_name = %SERVICE_TENANT_NAME%/ h0 @2 _: m2 @, A5 S, K! ?
admin_user = %SERVICE_USER%5 e5 D4 ~6 T8 e* s% C, Q) o
admin_password = %SERVICE_PASSWORD%改成
, w* e/ t1 e' H  D( c1 J* M+ t6 R( Zadmin_tenant_name = admin
( i/ O' q. E) e, w; P# T' Z! nadmin_user = admin: I! x. I* K& U) O5 U/ @
admin_password = hastexo4 W5 m# @( s+ D$ i! l

5 t* T" I# T5 C# `7 V3:设置 /etc/glance/glance-registry-paste.ini
: A* Z. M* G/ O$ A/ i也是修改文件最后3行,和上面是一样的。4 e  J8 j- O4 o: B5 |- s" S3 D# p. Q
admin_tenant_name = %SERVICE_TENANT_NAME%, i$ U9 M' \! N4 Y* |
admin_user = %SERVICE_USER%
% W- E/ @1 q" P  I8 Gadmin_password = %SERVICE_PASSWORD%# e- M  b; ?' q, c
改成
" U+ k. O- r! O# H- d- Radmin_tenant_name = admin
9 z" Z" g! X7 \; ~admin_user = admin6 F8 r7 _) t! x
admin_password = hastexo( }4 Z- ?' [: ]8 t$ [: }
4:配置/etc/glance/glance-registry.conf4 i% E$ H, \) u6 H
修改8 t! ^8 T- ^( Q: F/ y
#sql_connection = sqlite:////var/lib/glance/glance.sqlite/ ?, S) u9 a/ g* P$ c2 g6 [6 V
sql_connection = mysql://glancedbadmin:hC3teiv@10.42.0.6/glance( G( c* T0 f% H" n" I  M  `
: S' ~6 N6 ~, [( L; J1 ~2 T) A
' r9 B! |5 W/ K6 B3 G' V  H, W3 {! R
在末尾添加两行! x$ Y# ?. I5 g
[paste_deploy]2 o- }6 r. [8 |- l3 n
flavor = keystone
) q8 R7 Q3 d, P& G. M
6 b9 N" z0 G# e. Y0 Q* s
5:配置/etc/glance/glance-api.conf6 D" C& Y& i+ R5 s$ n, V
在末尾添加两行  e2 j: L$ c5 `2 {2 A
[paste_deploy]
( ^* L6 m7 R8 Z9 u! v6 tflavor = keystone

( S5 m3 Z% x8 L7 P) m1 R2 |9 o$ x8 j
6:同步数据库
4 u! c* c1 ~) u, N/ Y目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
) G2 }' ~8 U) D. Y" W* r! ]# glance-manage version_control 08 R7 n' `$ I7 \9 I0 g& x7 u9 c
# glance-manage db_sync         
. |# P3 O. i% o- |2 ]/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.
$ a: F$ ^+ O' X" J8 K  useexisting=True)
1 O; H+ L0 m- b( h  H) s重启服务
5 C$ r3 A* n4 X6 h$ v8 t% T  e  K# service glance-api restart && service glance-registry restart
* ?: u1 G" R. m( [glance-api stop/waiting: c; m! c/ v$ e! B" w
glance-api start/running, process 13321) i/ ~6 k2 E9 ^- G: J2 ?0 V: T. W, K3 Z
stop: Unknown instance: # a: \+ d' a! F1 i
glance-registry start/running, process 13327
: j9 z) H( [5 l" j) O% I. O2 [5 O
7 k, g- A! L8 j: Z, f" x: P% o9 \$ f( o& g5 ?' x
7:验证glance服务是否正常. F) q+ r8 H7 K8 c( S- w2 K
下面的步骤照做就可以,具体原理可以看英文
) m/ T: E7 N7 z0 texport OS_TENANT_NAME=admin
9 n! I6 }/ k( bexport OS_USERNAME=admin
- D* ]0 c/ o$ }" L' ^export OS_PASSWORD=hastexo
: s! n* S: x& u- o7 pexport OS_AUTH_URL="http://localhost:5000/v2.0/"检查检查
) p# A0 d; D( `# export | grep OS_, F2 t. S- D: U" V  [* ~) Q, P: }' M
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
% p0 x; t9 N+ e( K, s. _declare -x OS_PASSWORD="hastexo"" x& a9 V6 O' Y* S. o
declare -x OS_TENANT_NAME="admin"
/ z5 v# g7 {, e, r. U  Tdeclare -x OS_USERNAME="admin", Q7 @9 c  \' G9 v" ?5 z
运行
2 l8 ^1 i3 a1 D8 C4 R! Vglance index
6 ?1 A- u, v2 e8 {$ `9 _没有任何的输出。表示正常。* |; g) r% a7 M, K" ^5 c
#echo $?
& t; k* W/ E  ]下面会输出0 ,表示正常。$ ^2 f) c; g+ }2 G5 _
# glance --version. r/ @' A! E7 z, I
glance 2012.1
4 H* S: F0 z4 Q- F# M7 o8:下载镜像并上传7 l" g. W8 k" Z4 S; k! a
ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意
" d) J. r6 u6 L; r; h# W这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。
9 Z' j* ^$ e6 f1 y下载镜像
0 A  W) e4 G% ~1 q) p+ H$ jhttp://cloud-images.ubuntu.com/precise/current/0 Q: ?* s5 e- P3 Z5 U9 E3 W
这应该是ubuntu提供的最新的稳定的镜像。
9 o2 G0 s) B: `) A  x( t, e6 ]. h* Twget http://cloud-images.ubuntu.com/p ... img-amd64-disk1.img
6 R  [" Z* \1 J8 n4 Z: N上传镜像% W; V" N) v0 \; Y' Q- s
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img; Z) _6 q9 x3 ~
这里还有一种方法上传,如果你没用环境变量。
6 Q7 S' J- A/ j) [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' |+ l3 c  Z; B5 P4 ^: n
上传完镜像后。在运行
. k; Z6 Z6 I7 i& p6 [/ y6 f6 Xglance index
5 P8 i1 E3 E# M& n0 t$ O' Q8 x3 u或者
* ]1 i) l# b  Z: B. lglance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
5 f# @: l; L0 W6 e就可以看到上传的image。
7 @6 X; {7 Z% l& Z5 n- w6 n8 D8 p
e4be48fbb2fb4316fd09fdc120a4462308f7d34f.jpg
: E* B& Z" y! g- y6 P五:安装配置nova
" i4 l* C) b9 G4 i$ @1:安装nova相关组件
2 N( N3 o/ ?" P  E+ Y) k/ Aapt-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
0 u+ I" j! j: c( p1 e2:配置 /etc/nova/nova.conf. ^! @+ n. K* A+ g; o
把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,; X5 t; v4 s! a+ U) v- N
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。
& s% r. V, |6 I4 ]root@node6:~# cat /etc/nova/nova.conf
8 I1 W' X4 l: N- ?$ f--dhcpbridge_flagfile=/etc/nova/nova.conf) H2 D% w2 {$ f* o5 j; f/ @! ~
--dhcpbridge=/usr/bin/nova-dhcpbridge' c1 t  b7 R" ?
--logdir=/var/log/nova
0 y$ v) B$ z0 F% z" d+ o& Z: A- S# q/ U2 X--state_path=/var/lib/nova
( Y/ {3 v" q. M( f& I3 \* Z* }--lock_path=/var/lock/nova# r) U: p3 J" t; U' t
--allow_admin_api=true
3 \: e; q9 s% f/ W: J& v* M--use_deprecated_auth=false
$ d4 O* R+ @+ d5 y% u+ D--auth_strategy=keystone
, {! |0 A3 v: s4 w6 l--scheduler_driver=nova.scheduler.simple.SimpleScheduler
& i0 {5 W* h! l/ B3 z--s3_host=10.42.0.6
" a" V. x- N$ N% L8 y' P  k: N9 t--ec2_host=10.42.0.6
7 |! p, p5 e7 Q; @--rabbit_host=10.42.0.66 K( [- Y' n# o6 P7 V3 \; ?; Q
--cc_host=10.42.0.6
% d& I! C0 P: t7 H; Z--nova_url=http://10.42.0.6:8774/v1.1/' w! @; K6 m1 A5 `$ t" x8 A
--routing_source_ip=10.42.0.6+ F* o3 t( w" E# G) F6 A/ M
--glance_api_servers=10.42.0.6:9292/ q! T0 L7 ]2 W. E5 @3 J
--image_service=nova.image.glance.GlanceImageService
$ {2 \% r8 {5 I% C--iscsi_ip_prefix=192.168.22
& a- V9 F4 \! r& y, U--sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
  a- H) v# \% {# I8 j( U--ec2_url=http://10.42.0.6:8773/services/Cloud7 j& n6 i# b7 H7 b
--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens) ?: M7 o2 {$ C
--api_paste_config=/etc/nova/api-paste.ini  _; \* e( D7 [
--libvirt_type=kvm
" _$ n- ]$ s9 T) v, L3 W#--libvirt_type=qemu, L) t* N+ j& u+ a- O4 ^/ Z+ G
--libvirt_use_virtio_for_bridges=true
2 Z% H7 w7 n! p" L--start_guests_on_host_boot=true
8 t* D! b6 r/ J- ]7 A--resume_guests_state_on_host_boot=true6 U  M: m! ]$ {2 g$ H6 n- C
* d6 c* {! S3 i; m# T
#novnc
) P. K) _- O' N% ~--novnc_enabled=true; w# V$ u$ q$ g; W
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
, A2 I% `' q. D! u--vncserver_proxyclient_address=127.0.0.1
, O, J& k* \5 E4 Y4 g9 A5 T/ P--vncserver_listen=127.0.0.1
- [/ N+ u7 l" j6 E: g
% l0 b1 w2 v- E. e) T  X3 o' N/ E% c # network specific settings# I. t* ^4 z1 I* a+ a! R% n

; ~  b8 p9 D$ K. ^* x- e--network_manager=nova.network.manager.FlatDHCPManager
/ w8 b4 e3 X1 n+ L' Q1 {( x- W  {--public_interface=eth0
, m( @% x5 y3 g4 E1 `' s--flat_interface=eth1
: ~5 ?6 @# q) y! k4 D1 o6 O7 P--flat_network_bridge=br100
+ ~% G, e: D8 I/ k2 S+ T--fixed_range=192.168.22.32/27
) j: ~0 V% _' s  \4 b6 h--floating_range=10.42.0.32/27
; w; x) J$ J% f0 a. c/ @--network_size=32" t; d, Y; P' Q! c1 M
--flat_network_dhcp_start=192.168.22.334 B$ H: P) \- |; c% [9 S: @
--flat_injected=False
5 V+ W6 z3 n; L8 {( n1 |--force_dhcp_release! M! ?& t4 G+ W9 p1 G! f
--iscsi_helper=tgtadm
8 M% f' d4 _1 q& m, ?& ]--connection_type=libvirt
' e$ u* U6 n3 @) w! r; Y1 W: ?--root_helper=sudo nova-rootwrap7 L3 z' D+ b9 U. p" n
#--verbose" D! ^  z4 f! Z
--verbose=False

8 L4 Q. @+ o* M# N& v. b
8 ^- h# Q4 I) f/ k# ^$ `3:配置/etc/nova/api-paste.ini9 @  v% P" v$ A: m' M
也是修改文件最后3行,0 f& M/ b7 ^5 }8 n
admin_tenant_name = %SERVICE_TENANT_NAME%+ c; ^: G  _8 ]2 u
admin_user = %SERVICE_USER%9 F5 r4 d3 I5 o: a
admin_password = %SERVICE_PASSWORD%4 Q* `/ t# L) l7 @, ]
改成
: m: @! @6 _  R: |, y  xadmin_tenant_name = admin
2 a0 `% @* H# {3 l+ j# vadmin_user = admin
+ H$ c5 x4 V9 r' Radmin_password = hastexo
( T/ c. b6 e# p6 ~! D4:停止和重启nova相关服务
6 |0 ^$ j! S9 R, |5 z2 lfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
  W1 ~1 A* o! T) X9 t9 h; A' `  E9 w0 [" r
5:同步数据库
8 |: ?; f* w, Y3 o! l以前我运行同步数据库,如果正确, 当nova.conf1 T7 v6 i. _' l" ~& R6 ]! M9 f
--verbose=False
* m1 C$ y- g1 B# _6 G+ H% [5 G是没有任何的输出,否则有一堆是输出。
# [- \8 Z; b+ ?' B* [- Fnova-manage db sync
7 N3 l5 g8 U; i  S+ A
4 ?: ^' s* U  o, @5 I$ V
d386ae19ebc4b74515d430adcffc1e178b821518.jpg $ C- `5 t! e5 J7 q

6 S6 T1 s) o" {9 ?% m创建网络
0 s; `1 w* _4 d! ?. y% Onova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=320 P% a! \9 b; s* e* F! J
d3a81f087bf40ad11f734058572c11dfabeccece.jpg
7 _2 n4 _  L! r9 ^. O设定floating IP
. @( T% X7 B+ L+ }4 jnova-manage floating create --ip_range=10.42.0.32/27
; v# ~3 g/ _3 T5 ~" d0 a0 q
4ef8c90735fae6cd47252cda0fb30f2440a70fcf.jpg
5 I( ~, |, T+ N( Q; T' ^. g设置权限
) j4 {. q+ x& t8 D* v# Schown -R nova:nova /etc/nova
, I4 n1 b9 ~" R) d- [8 Q/ P再重启相关服务
& q6 P: Y' J. Q8 _1 Nfor a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done( v0 i- }( w8 P; i8 N) c' b$ R
3 Z: P2 J8 K. [- z# J, n
6:检查nova服务$ f" w! d" r) y) c+ K
nova list: O$ O6 }' z) n) n
nova image-list
+ ?( P4 W( e4 h  G- e5 t$ vnova floating-ip-create8 n) G) Z; T/ Y

" R: w1 F+ i# h( f 3f1e66899e510fb330aef02cd933c895d0430c2d.jpg ! F3 \8 p4 i- K. K/ z
六:创建第一个VM
' J+ p$ ?" `3 S3 x7 H  M这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
5 J1 g& r8 v, S1: 创建密钥
- Z: w1 m1 u6 ]1 j- M# ssh-keygen
$ |# H$ L2 @1 {9 a4 n0 Q一路回车,就可以了。) t9 |% C4 Y6 E. E8 w
9a7a9f26cffc1e17739faa8d4a90f603728de9ba.jpg
: C7 z3 }0 Q7 m1 c2:上传密钥到数据库# # nova keypair-add --pub_key .ssh/id_rsa.pub key1

, S4 W. m' x% l这个时候,就可以查看到上传的key
- K; w( T8 e4 l0 t& troot@node6:~# nova keypair-list% v; X3 Y1 n! ^0 D0 V) l  a9 W9 w
+------+-------------------------------------------------+
8 W+ p1 ^% k9 G- M0 p| Name |                   Fingerprint                   |+ |1 i; C! H/ g( [3 f: w  U: f
+------+-------------------------------------------------+, N2 G" o( o* S3 \; N
| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |
2 q& @, Y+ Y: |' Y* Y/ }' m+------+-------------------------------------------------+
8 l$ l& ?9 x2 q( G: v4:开始创建虚拟机: {& G2 n' v$ M  A$ e/ r
查看image list, X* Z1 u- D1 d" K2 @
nova image-list
0 ]+ }  _. P: Q* ^
3 _& g8 c5 h8 c8 i# b' U查看flavor-list
8 b" _8 X/ O5 Q1 m! k7 t" K! m( f4 C( j- }: D# D) v
nova flavor-list
  p& e' `, C  I1 j2 V创建虚拟机
) e/ A+ M" Z% I  k# q/ D1 x~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
. J( H% x9 T! F7 r, p% ]看图有真相
, W6 C3 k  n; N$ |1 V- M 6b64cda20cf431adb5da89824b36acaf2fdd9851.jpg 3 M, }' M, U& e/ ~5 u
查看一下创建的虚拟机

, m2 o% r, j# z! T6 \8 c nova show superfrobnicator* w; q/ r  R! U, }
61dd66ec54e736d1a27346b39b504fc2d4626979.jpg
: y' b' l! _2 @5 W

' x, Z+ ?: R. Hssh 访问VM
1 M9 w8 d- C4 C" Y2 R( J. N) {6 M: E: Y
打开防火墙  S- L0 P$ ?0 x# O, i1 f+ P) Y) |& M
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
: M0 S5 M  c2 O4 nnova secgroup-add-rule default icmp -1 -1 0.0.0.0/0' y  N4 ?1 @  V6 N* j/ w% O
这个时候,就可以直接ssh到虚拟机上。
& F1 V. s- I( M  Gssh -i .ssh/id_rsa ubuntu@192.168.22.35
+ R+ b8 b' O) n" G2 U* r, S5 T$ ?这样就可以登录服务器。
4 U' {; G. Z9 M2 x. v/ BFloating IP访问
' _) o# n1 U3 [+ V如果希望访问floating IP; o9 \8 ~; N7 d5 ~6 A- Y( w
申请floating IP
/ B4 k7 E, u2 r( i; g+ x6 ^' ?nova floating-ip-create
2 H! c8 J! N9 U% `: K2 U关联vm
7 r6 ~1 h! H! S, A3 E# nova add-floating-ip superfrobnicator 10.42.0.36
2 M3 k2 i' D& I, c/ R* n/ K
  m  n* R5 v8 Y! U" T- C 查看虚拟机" O& q  U, v7 J, M: D
nova show superfrobnicator
  J% c( K9 }- G2 {) U! }ssh访问虚拟机
  O* h- U+ o7 [6 Fssh -i .ssh/id_rsa ubuntu@10.42.0.367 @6 y, j! @! R2 |* V. n
查看安全组和规则" R% K: G1 n. q
# nova secgroup-list
" s( a: l6 H$ l& e/ S# nova secgroup-list-rules default$ j% [2 Q* K1 L# [+ r# M
看图9 t% N" k/ }. ]) E- p% I5 I
ef00c839b6003af371e5f5dc352ac65c1138b606.jpg , b1 A& t( i. B

' K! V( v7 h; l- I1 [) Q+ S看看结果
0 W% Q1 m, ^9 u- Q5 G4 U& C7 @ 485cbdec08fa513d06f445623d6d55fbb3fbd907.jpg
7 d% j& o# \" t* y7 _$ n0 _ssh访问vm( S  k5 h0 ?* i" t

+ P8 c! S: A, `/ r2 B& `
46eee5dcd100baa17e426e074710b912c9fc2e77.jpg 3 l, `  X1 Q; _* X4 ]
  a. B1 c! y! U
837cb90f4bfbfbed49c81fc378f0f736adc31fc8.jpg
/ [2 X& B) R: j' ^7 b
( ^3 n: z9 B1 E% X- N9 E有用的命令3 q7 p# j4 m8 P
查看keypair
% T8 n: N0 J# ?% J& cnova keypair-list1 l" G0 G* M: w$ [, r6 k
删除keypair# |, i, u6 W3 }" Z/ ]$ c
nova keypair-delete. h+ f  x1 w% @
查看vm
$ R2 Q& K2 ^5 f; j0 snova list
& k- z( R. `2 w$ C% q8 [# b删除vm,vm的ID
1 h: U, Z6 s$ ]2 Mnova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f3438 f0 ~9 _3 K; R% ], @
7 W6 j* i) `9 Z% W

0 v- p6 r, V" ~& Q* c七:安装和配置Dashbaord; g: [. {9 `& [# m% G
1:安装dashbaord, x3 E, |' Y+ H5 L5 o9 o6 s
apt-get install libapache2-mod-wsgi openstack-dashboard
6 v, a. }- a( D/ l
5 F# Y, Z6 R( d) o3 l
; L6 K$ g( O2 w# k  Q( U( N这个时候,你就可以登录dashboard, y  C: i" t3 B
http://10.42.0.6
. k9 z) N/ q$ o9 H" B- `! Ouser:admin7 B' R0 j9 ^( \+ N
pass:hastexo! A' J  @+ h  m% j
( \" j% R% O* u+ ^$ y# s: h
29cc27292df5e0fe358f4ba55c6034a85cdf72d7.jpg % y7 m: b# E9 H( ?- p) E9 ]$ F

. T$ S+ f% [5 l+ Y 6982e5198618367ab223fa612e738bd4b21ce53c.jpg $ M* z/ y5 T( p( j# a4 K2 O" I
6 v; h* v: U% j3 Q
* V. i, C! r6 f: C4 [$ U4 x
# M4 Y& r5 a  H, j# W: r
5:理解project和user关系( _$ n6 I' L  B4 ]
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。+ T- d3 V( z" R' k: M
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
+ g8 d! j% J+ o/ ]$ g. `$ C% _我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行+ X5 a4 [6 E$ Y1 W0 Z* q# t
6a0d8182d158ccbf6d04338119d8bc3eb0354120.jpg 9 a. d- e2 m8 N+ H" ]+ v

# X' }. [9 I. y7 ?' M# k$ @八:euca2ools 工作7 F8 t, v$ x# D% O4 j( }, R
euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。
. L6 S3 B  ]7 k" u2 R* A( `8 H1:安装euca2ools工具
( W! o1 K4 J7 F% {8 l" Uapt-get install -y euca2ools" {4 E3 [9 ]4 g# ?
2:设置环境变量' V. X6 k+ [$ `
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
$ j6 k# @4 U: |5 ?export CREDS=$(keystone ec2-credentials-create)! {2 ?  ~( H7 D4 W3 X7 v: A
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
' Z! h/ ~& H6 c+ k  R  J* m6 j. }export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
9 Z, X$ E8 K; }7 ~2 Q: O, ~) \! _3:运行命令3 p; I, o4 w3 ]8 h& z  r+ `8 |
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list2 L6 m, s7 H3 u% a
现在Essex对Euca的工具支持应该比Diablo好很多。
6 r9 Q" P3 a; D4 i, y 96993da4462309f70ddd32a9720e0cf3d6cad62b.jpg
" B2 o2 v, V+ O. |. J% H5 l) ^列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances

/ h3 h6 ^) z  M' U5 i' Y 4ed92d4e251f95cac87f0d0dc9177f3e650952d2.jpg 7 ?7 m5 p. ^# `

) g7 y+ i3 N& U1 M1 M3 m- a/ F; j0 E. ?& S2 B. {( i7 p
Appendix A:  使用nova-volume
" [: S% {9 u' ], s; o% M6 oEssex Dashboard可以管理nova-volume。有两种办法来实现
  F; z. e" m- c' n) F6 q默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。+ [  b* f3 D% G) r

6 S& a0 e  k3 }' |6 }& V5 }1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,
1 W0 o: }7 }2 l% ~新建一个文件来做 LVM:- E5 ?# y2 V+ w0 I& v: s9 w7 c
DD一个设备/ H5 R+ F0 R# S: o  m5 B" v- [2 q) e
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0# O1 G8 ~1 h4 N' Z
加载一个设备
9 M  p6 V/ B7 j- H# d# losetup -f nova-volumes.img
" a2 T! w$ |  P. l: _+ V查看加载情况
' E( u: ?* x0 n0 U4 A& b0 a$ b/ [( o# losetup -a
, \+ |/ U6 {1 E# [8 d# F* o/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)2 o6 [8 q2 m2 P: }2 X
创建一个nova-volume的卷0 `9 J9 C$ U! x! E- F
# vgcreate nova-volumes /dev/loop0% F% l0 z& K. y3 M2 P: @. L
  No physical volume label read from /dev/loop0% g" x, M( ^, G# O
  Physical volume "/dev/loop0" successfully created) A; V# [( ^2 Z6 O/ F5 n
  Volume group "nova-volumes" successfully created* Z" G+ r1 a3 N
查看卷3 s" Y: O4 b. L# N: k3 W
#vgdisplay
& y+ v. d. }3 r) R就可以看到创建好的nova-volume。
7 ]* v- L8 ^: ?创建一个5G的卷,名字为volume1# X' M& D3 O. w% N. n
nova volume-create --display_name "volume1" 5
. h0 h: Q! }. K5 q7 X& ^! l9 a创建完后,可以
0 V$ {  ~% t2 ^' f' c' `7 lnova volume-list
3 \) _: h6 `: x) @ 08daaede9c82d15854a67711800a19d8bd3e42b9.jpg & s- ~  C# v+ ?
+ H0 w. w* z  K1 u( ^, b1 {
创建的过程非常慢,看status完成后,才能attach。
$ P1 t, R# s; [& ^如果希望删除创建的volume,目前我知道的就只能通过
" w8 @6 ~2 j% X9 q2 g9 beuca-describe-volumes$ z4 m2 \) H  h8 @" q% d2 J& N7 p, Y2 m5 f
euca-delete-volume vol-00000001: |8 B5 D3 d0 ^6 w1 d4 }/ g1 S+ p

2 G; i* x# W/ M4 m+ e# l把卷添加给虚拟机,1,表示ID号
- S7 [  u# N  ~0 ~+ E  mnova volume-attach superfrobnicator 1 /dev/vdb; ~: b- u# ]- t5 C
- Z8 \. G0 T+ ]% u0 d
2:单独一块盘7 M) v  g1 O% H
# pvcreate /dev/sdb17 t# J2 |* H; K% h( E, p% @7 N
# pvdisplay
% A4 k& ?6 a1 K#vgcreate nova-volumes /dev/sdb1
: ?6 ~3 A3 J9 R9 F% G# vgdisplay! W+ `2 t! L7 t( N
这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。% j6 q3 E+ K& O
) A0 u5 H+ K+ P* p. l

% n% r4 X3 Y* ~1 m- `参考下面文档
8 G8 F% F+ h- S' ?http://www.vpsee.com/2011/09/openstack-nova-storage-management/
0 T6 `# g: \' h/ e5 Z8 J9 thttp://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html$ ?; {) V. {% H$ O9 c: h
lvm 相关资料http://hi.baidu.com/chenshake/bl ... 95eb4e342acc60.html& n) J) q, a, `% q- Q9 y0 X0 G& ]  f
) `$ ]/ h! G0 p( I1 U8 N& b

0 I7 O& T4 V8 p7 K  H: ?6 U+ b4 l0 z/ [, a+ O

4 J5 i! f' t/ Q
  U7 f1 q) A2 F6 H8 w7 ~5 S( uAppendix C: Dashboard 创建vm,允许ping,ssh登录5 ]7 Z* E! Z3 u( a& b
对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
+ O! e; U/ X# ]1 j) t) t- T1 R1 J9 u不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。
4 y+ X- B! l# K2 M% G从ubuntu下载的image,只能用密钥登录,不能用密码登录。
( |/ `* L( h; P1:设置安全组 Security group8 i" L. X/ q4 i
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
& G" t- }0 b2 @8 S$ o' ?0 r为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。! E+ M( J6 f9 |: N3 K
默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。/ l' U0 q7 n6 W/ I
9611c8628535e5dd07b8236476c6a7efcc1b62cd.jpg
  b  U; }9 P3 w' k: k

/ q# z& P0 k6 C" t0 x1 e( @. G* ~! a# @1 `0 n

8 c# n* E& ]- X% D2:创建密钥/ b- E/ |* E9 p/ Q8 A
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。
; Z' B9 N9 E( M) d7 o1 c这个时候,你如果有私钥,就可以直接登录。
& [& j! P" A6 b% j& a8 \- _- [4 d
+ f2 Q1 y! I, W4 m8 t0 w. m 1a2ee1039245d688f15f331fa4c27d1ed31b247b.jpg
6 T/ F! @  G; [3 |! c下载私钥# D, F% Z; J% g
点击create keypair,就会提示你下载私钥。私钥是pem后缀。4 U# ?& f: v$ Z3 R4 f  h& {
7a1f61d98d1001e9eb6195b4b80e7bec55e79704.jpg 9 a: L+ E# d3 `. q( J
4 ^6 P7 K: U5 G8 r/ F$ i5 E" {
9 P  c0 d5 E2 w: D
那么你就参考这个文档,就可以。  r# F+ a3 s; ^6 {  U
3:创建vm
$ m# _1 U+ q% X2 h. }' \% U创建vm的时候,你会选择keypair,安全组。
" P" U) {8 W% w7 {; L 5ce6f8dde71190efa9df1164ce1b9d16fcfa60bd.jpg
2 [3 Z* \/ C7 A. d" N! c2 h% i3 ]0 Z) J

& m) c$ s1 D% t) G: X* W( J
2 L& ~6 E& Q8 p! h1 ] 46eee5dcd100baa1d7e8c7004710b912cafc2e9c.jpg & O3 d! R" o3 {: f& H+ G" L

. S: C: _0 c8 z; m& }1 z创建完成后,得到其实是一个内网规定IP+ O7 S( E3 T: u
e3fa30f5e0fe99255263eaeb34a85edf8cb17176.jpg 1 t4 B' o. K* y4 ~
" M  t8 k; K4 ~3 o; g
4:floating IP
2 ~! D/ o, A% Z6 s9 b给虚拟机分配一个 floating IP,可以理解成是公网的IP
  U4 m! x6 J, _ 8d342bd12f2eb938434ff949d5628535e4dd6fbb.jpg , n+ u5 [4 P4 `. h: _! z+ d& [" `
分配完
7 M9 l6 q7 F& B
60d25790f603738df2568f99b31bb051f919ec45.jpg 6 i; G% y4 D  D( G
关联vm

6 L5 d5 x0 s9 |* Q' ?' a$ g9 O# _0 R af15baefce1b9d161e8719daf3deb48f8d546419.jpg * M" D! \( h9 @  B" g
. l7 f" v3 O: R/ \8 G5 [

" F9 k/ Z4 w# L( u# R3 |2 F5 P* e# Z3 z  X
看看结果
$ p# d: x  j) L1 z4 s5 v3 w 3c0efa1190ef76c647bf78909d16fdfaae516774.jpg
8 l, Z' y3 U6 ?6 ]: ^  b6 `5 c% [
' {' B9 Y: m. J6 `
5:ssh 访问vm% d( k& i7 P( o. q  r8 k" I
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。! e3 @* ^. @. C; A3 \3 R
对于ubuntu提供的image,ssh的用户名是:ubuntu,1 i3 ~' v) F' J) X% `" S( d' y) Z5 n+ T4 P
SecureCRT 6.x版本/ G4 C5 f' d, D( y' p4 B
对于6.x版本,已经可以直接使用pem后缀的密钥8 ]7 H: i/ |/ p- o

/ ]. z( v& v6 m9 F! W: j e87ed6ef76094b3664fa9656a3cc7cd98c109d71.jpg + A: B* `1 y9 |; [* ^

' z  Y3 J" v) O# J! cputty登录6 @" Y+ a. h3 Q5 o
对于putty,需要对密钥进行转换。1 k; H0 z/ F) e4 [& B' o7 @! u
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html1 M* d# O# J  ^+ y# q/ {9 U
到官方网站下载:PuTTYgen这个工具
" s" C1 ~6 `' t) M+ Z! o0 NPUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以. I/ ~9 p' i: p0 M5 g( z, S
67da7663053a03280d33fa5f.jpg
) B; w9 j6 a# B; N: H: ?5 N$ o

) m$ ~" b2 M) f存放到本地。
& R* z6 U  B$ b$ W; G设置putty使用密钥& e/ _5 [6 C. |! d
4e0ebc44ad345982731568290cf431adc9ef84c6.jpg
4 v) _4 U" i+ ~( u/ x
8 I- p; q& Z$ \, {7 n# E2 Q# ?
d520caca7bcb0a4664b806826b63f6246960afc3.jpg
. X* j0 _) g" J3 T1 P% |
9 R3 \2 Q6 i0 E# h+ w
( X: |, K/ x9 e. P9 j
linux客户端ssh登录vm
  w) n) i1 r. p1 e如果你是linux服务器上,你可以上传密钥到服务器上. Y2 ~! v* y7 |8 X( n8 G
ssh -i key_for_openstack.pem ubuntu@192.168.22.347 K  }7 A/ o* \* T3 @& {- u. U  |) K
就可以直接登录虚拟机。
) w3 t: V. R2 Y9 u+ X3 [4 Q: [2 H6 e! g5 D0 _/ Q6 j4 z

5 g/ }- e4 P* m' h2 gAppendix D:FAQ7 J; ?0 b& A2 j0 u9 c, H) v
1:我登录服务器后,命令都无法运行
* ~' A3 \9 o) q- T4 {5 U~# nova image-list
& d! r0 ^* x0 r# I& e9 J6 S' LERROR: You must provide a username via either --os_username or env[OS_USERNAME]- |) r8 o9 g8 U% E2 z% |) }" S
" a; O: Z7 ?+ j% m3 z7 k4 i, [
如何解决。

/ D: I5 n4 ?& `3 r这个问题,其实还是你的环境变量导致的。/ T3 y$ W# t: H& s1 _- j7 X
export OS_TENANT_NAME=admin
% b: N! x" u0 K. W; B1 I6 q. V) ^export OS_USERNAME=admin
* ?& L& N; ^1 b; N- aexport OS_PASSWORD=hastexo
" f4 H1 i* @7 y' |9 R+ _( Jexport OS_AUTH_URL="http://localhost:5000/v2.0/"* B! s/ H+ L; @  |# @- R. `
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')" _# h+ m+ [& @' U4 }, J. e
export CREDS=$(keystone ec2-credentials-create)
' r, }% m/ ?6 |0 f( zexport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')( O* k7 S2 a: X& v) H% _
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')这样就可以了。ecua 和nova的命令都可以使用。
+ |3 _; [$ h# h* @: z0 I如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。3 ^+ Y2 F. x3 @0 \) k: r6 J- ]
http://bbs.chinaunix.net/thread-1958386-1-1.html
+ |% |5 ?  o# N. ~. d; `1 y% E
root@node6:~# nova image-list: q5 m- f, w# W* H3 j2 A3 B/ b
+--------------------------------------+-----------------------------+--------+--------+" Y+ d8 D! G/ ^4 `
|                  ID                  |             Name            | Status | Server |
+ n; F1 v$ c3 d! I; d+--------------------------------------+-----------------------------+--------+--------+. c% U% w+ L( _+ L2 g$ C, L: |
| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |
+ |+ X; |* M2 d! ?+--------------------------------------+-----------------------------+--------+--------+
$ Z, ]2 E' O5 Q6 v
036757ed2e738bd4c1612d8aa18b87d6267ff919.jpg : f6 X' ^! P; R  E/ `3 `$ V2 l
7 J  `$ {. C6 o2 y/ ]+ Y4 I( o$ K
2:如何用curl去测试keystone
3 E8 j" k, i4 B2 q/ H2 d! x1 G替换红色部分,就可以了& _8 m. L% z7 q, d# e1 D
# 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- g! v' q8 }( ]% D4 |

; X7 A) Y" S! a$ ~( {5 b( c
7 @2 \3 T" v# S9 M/ N博客原文网址:http://hi.baidu.com/chenshake/item/29a7b8c1b96fb82d46d5c0fb
! \3 U5 @5 j( y* x1 F3 w) \  O  I$ @7 ^3 Y1 p
学大数据 到大讲台
回复

使用道具 举报

 楼主| 发表于 2012-7-13 07:56:53 | 显示全部楼层
补充一:执行glance-manage version_control 0时,报错:% s% J2 Q5 l% }5 \" e4 d1 A
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 None1 f/ ~' m4 Y0 Z- G+ n+ `
& E" B7 \& G! w% W4 H* m8 P. z
解决:这个错误是由于数据库权限造成的,“Access denied for user 'glancedbadmin'@'ubuntu' (using password: YES)”,在数据库中添加用户权限。* h# ?# X+ @: G$ a" z. e% I2 t6 o
           GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'ubuntu' IDENTIFIED BY 'dieD9Mie'
' d% v- d- v, Q* g+ p( {- b( F注意,这里的ubuntu是你的主机名
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 08:10:45 | 显示全部楼层
本来要补充修改环境变量让重启后仍然有效,在/etc/profile后面加上以下几行代码:& I& |2 l! `3 L% ?$ z, X6 N: E
export OS_TENANT_NAME=admin
) j* i8 ^6 A1 ]' k' e; gexport OS_USERNAME=admin) T* x: a1 I1 _+ m
export OS_PASSWORD=hastexo
0 u& H- y6 K' ?8 fexport OS_AUTH_URL="http://localhost:5000/v2.0/") L, G! ~6 l' t7 B  c" [
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')5 T# t) \1 Q$ t( N/ w, q) T" w
export CREDS=$(keystone ec2-credentials-create)
: O* H% U: u5 i( ^3 r# D4 `# J2 texport EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')6 {1 R0 X; v% `3 P( W" P  s0 @
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')8 L$ O& m! o. }( B# B* I) G' }
1 P- y/ i. ^3 N& M9 {6 y6 F
现在发现沙克的Appendix D:FAQ中已经说了这个问题,那就提醒一下后面安装的人注意了
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 11:53:17 | 显示全部楼层
本帖最后由 aneit 于 2012-7-13 15:09 编辑 9 [& Q& o! @: Y9 V8 `

! E8 T! h; D9 ?5 y% aSSH访问VM,有些人习惯用SSH Secure Shell Client工具,如果不知道如何设置通过密钥登录,可以看看这里:0 v; d' C: w0 G+ W3 i7 Q
, o0 e: H! w$ V: w. ^+ w
SSH Secure Shell Client工具密钥登录linux:
+ K  Y. N8 i0 O: F- H; W0 |3 v% U3 z7 Y& y
http://server.chinabyte.com/365/8835865.shtml
- E! Q4 V3 y0 e. E0 D3 h  d: c* V9 d, {$ R5 M- Y' Y# g5 C9 g

( }" i2 r( b, \5 z* ^SSH Secure Shell Client用public key认证登录
- {" P$ b' V7 f& qhttp://blog.sina.com.cn/s/blog_4a0a8b5d01015r7p.html/ ]. h' P. Z) D8 C- A- B
: K) E6 G, b+ d4 n3 ~; |
由于不知道ubuntu的用户名和密码,因此无法按上述文档中的方法上传公钥,提示:% O: J: ], K8 ^: F1 G

SSH Secure Shell Client工具密钥登录linux

SSH Secure Shell Client工具密钥登录linux

* L  [# ?. P+ m) S: x+ k; U& P* t
没办法,我走了点弯路,先按沙克的文章中的方法通过putty登录进入系统,修改root密码,然后修改ssh的设置,让其支持密码登录,然后重启SSH服务。( L. ~% x4 \6 {' W. N  A
vi /etc/ssh/sshd_config
0 L9 u7 l3 N6 T; a, K- _. o将PasswordAuthentication no改为yes4 @" u4 n" R/ E' J5 J" v7 {
service ssh restart
* L1 ^$ c& O* Y9 ^. b% L+ p
$ z: @0 K; y  G" j这样就可以用root及修改的密码登录了,然后再上传公钥,OK,可能用密钥登录了。5 c9 T- B# x) p7 C
安全起见,回过来再把ssh设置改回来,以后就可以用SSH Secure Shell Client通过密钥登录了。虽然有点绕,但也解决了问题,如果谁有其它好办法麻烦说一声,谢谢
学大数据 到大讲台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-13 17:50:28 | 显示全部楼层
补充二:在虚拟机中安装OpenStack Essex版& ^' w" A' B+ T6 z

& c! e* N6 ~' q# r$ b虚拟机中安装和物理机上安装有些地方要注意,这是IT探路者整理的,我按此操作在虚拟机中安装无问题
+ o$ z4 E% r* [9 `! F
5 w' I+ O5 z. [7 ?2 b3 T1. 在vmware workstation上的虚拟机需要修改 *.vmx文件
1 A: \! u( d0 y0 C3 o9 q& w. T0 ]vcpu.hotadd = "TRUE"
+ J0 r+ F1 f8 d; U: D2 d$ \3 U变更为. a, s) @& X- `% Y; m
vcpu.hotadd = "FALSE"
, H7 o- Z4 ?8 G" h' P+ M重新启动机器,如果执行命令: ; D- I' t1 T- a
virsh
( J6 g% T: l. \/ L进入控制台就没有问题了。
. f+ j& I; u1 m  y' q3 ]7 s3 W2. 修改nova配置文件/etc/nova/nova.conf3 P+ L* A, g! \& j& @
#--libvirt_type=kvm/ |- C* y6 G/ I% J5 F; U5 `- X
更改为qemu
+ O( j% a7 D" e) `0 t2 W2 U--libvirt_type=qemu
, f. [' b$ V$ g1 `- d/ I& Z3. 修改/etc/nova/nova-compute.conf
; m% `% }3 f% ^5 `  Y4 _# i--libvirt_type=qemu0 ^( H% n& {( [; ]
4. 重新启动nova-compute,如果libvirt报错
5 k& H( v0 z3 s1 ^% k/var/log/libvirt/libvirtd.log
9 i0 Y7 U  c* o/ Y7 [8 |0 s  iCannot find 'pm-is-supported' in path: No such file or directory+ X; N1 k4 J4 e0 ~2 F& P
报错后需要安装
# s+ }9 L4 k8 f, J" |2 |apt-get install pm-utils
5 a* `5 r3 ~, y' S& H# B1 l% u) ]5. 重启libvirt和nova-compute就可以了
$ M' Q4 R+ r& Z$ _+ xservice libvirt-bin restart
7 a& @' L; z4 c% j% w$ p7 Sservice nova-compute restart
, f' s5 u: D  p$ N
6 g1 p& _+ }" R) x$ E6. 执行 nova-manage service list
- H: t/ W8 q7 y) M' _* Pstate都是笑脸的话,恭喜你,搞定了:->/ V1 b, z8 R% T0 S7 Q* |) F

. K5 @7 a- n5 C% |4 b' D感谢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人群已满)

返回顶部