主要是讲如何启动openstack nova-extend services,该服务用于Openstack 二次扩展及部分需求开发,例如 ,节点巡检,动态迁移(基于FUSE 文件系统实现,分布式系统,如MooseFS),文件注入,Nova 服务的自身修复,instances IO 控制,instances CPU 隔离技术实现等其他需求开发
第一章:如何create openstack nova-extend service
a) 创建python-extend 文件
cp -fr /usr/bin/python /usr/bin/python-extend
用于启动openstack nova-extend 服务,Python 服务启动nova-extend ,socket 模块不能正常果子,具体原因在于协程分装,无法使用socket,threading等模块属性
b)创建启动程序python-extend 文件,保留在/usr/bin/
|
1
2
3
4
5
6
7
|
import
sys
from
nova.cmd.extend
import
main
if
__name__
=
=
"__main__"
:
sys.exit(main())
|
c) 创建from nova.cmd.extend import main 程序,调用nova.services.py
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import
sys
from
oslo.config
import
cfg
from
nova
import
config
from
nova
import
objects
from
nova.openstack.common
import
log as logging
from
nova
import
service
from
nova
import
utils
CONF
=
cfg.CONF
CONF.import_opt(
'topic'
,
'nova.extend.api'
, group
=
'extend'
)
def
main():
objects.register_all()
config.parse_args(sys.argv)
logging.setup(
"nova"
)
utils.monkey_patch()
server
=
service.Service.create(binary
=
'nova-extend'
,
topic
=
CONF.extend.topic,
manager
=
CONF.extend.manager)
service.serve(server, workers
=
CONF.extend.workers)
service.wait()
|
d) /etc/nova.conf 配置
|
1
|
extend_manager
=
nova.extend.manager.ExtendManager
|
e) 创建openstack-nova-extend 启动服务脚步
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#!/bin/sh
.
/etc/rc
.d
/init
.d
/functions
suffix=extend
prog=openstack-nova-$suffix
exec
=
"/usr/bin/nova-$suffix"
config=
"/etc/nova/nova.conf"
pidfile=
"/var/run/nova/nova-$suffix.pid"
logfile=
"/var/log/nova/$suffix.log"
[ -e
/etc/sysconfig/
$prog ] && .
/etc/sysconfig/
$prog
lockfile=
/var/lock/subsys/
$prog
start() {
[ -x $
exec
] ||
exit
5
[ -f $config ] ||
exit
6
echo
-n $
"Starting $prog: "
daemon --user nova --pidfile $pidfile
"$exec --logfile $logfile &>/dev/null & echo \$! > $pidfile"
retval=$?
echo
[ $retval -
eq
0 ] &&
touch
$lockfile
return
$retval
}
stop() {
echo
-n $
"Stopping $prog: "
killproc -p $pidfile $prog
retval=$?
echo
[ $retval -
eq
0 ] &&
rm
-f $lockfile
return
$retval
}
restart() {
stop
start
}
reload() {
restart
}
force_reload() {
restart
}
rh_status() {
status -p $pidfile $prog
}
rh_status_q() {
rh_status >
/dev/null
2>&1
}
case
"$1"
in
start)
rh_status_q &&
exit
0
$1
;;
stop)
rh_status_q ||
exit
0
$1
;;
restart)
$1
;;
reload)
rh_status_q ||
exit
7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q ||
exit
0
restart
;;
*)
echo
$
"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit
2
esac
exit
$?
|
f) 启动openstack-nova-extend服务
|
1
2
3
4
5
6
7
8
9
|
[root@athController cmd]
[root@athController cmd]
2014
-
08
-
04
23
:
18
:
58.325
47419
INFO nova.openstack.common.service [
-
] Caught SIGTERM, exiting
2014
-
08
-
04
23
:
19
:
00.151
45666
INFO nova.openstack.common.periodic_task [
-
] Skipping periodic task _periodic_update_dns because its interval
is
negative
2014
-
08
-
04
23
:
19
:
00.183
45666
AUDIT nova.service [
-
] Starting extend node (version
2013.2
.
1
-
1.el6
)
2014
-
08
-
04
23
:
19
:
00.513
45666
INFO nova.openstack.common.rpc.common [req
-
d6b00731
-
baaa
-
47fa
-
bfa2
-
75f9ec4ef568
None
None
] Connected to AMQP server on
192.168
.
8.180
:
5672
|
g) openstack-nova-extend 消息队列信息
|
1
2
3
4
5
6
7
8
9
|
[root@athController cmd]
extend
0
extend.athCloud.
8.180
.
abs
.com.cn
0
extend_fanout_6dbb351ab48445cfaadc9de37e87d68f
0
extend_fanout_e870b14296354eddba09389319a9c590
0
|
h) nova-manager service list 查看nova-extend服务状态
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@athController cmd]
Binary Host Zone Status State Updated_At
nova
-
conductor athController.
8.180
.
abs
.com.cn internal enabled :
-
)
2014
-
08
-
04
15
:
22
:
20
nova
-
consoleauth athController.
8.180
.
abs
.com.cn internal enabled :
-
)
2014
-
08
-
04
15
:
22
:
19
nova
-
cert athController.
8.180
.
abs
.com.cn internal enabled :
-
)
2014
-
08
-
04
15
:
22
:
20
nova
-
scheduler athController.
8.180
.
abs
.com.cn internal enabled :
-
)
2014
-
08
-
04
15
:
22
:
18
nova
-
network athController.
8.180
.
abs
.com.cn internal enabled :
-
)
2014
-
08
-
04
15
:
22
:
11
nova
-
compute athController.
8.180
.
abs
.com.cn nova enabled :
-
)
2014
-
08
-
04
15
:
22
:
10
nova
-
console athController.
8.180
.
abs
.com.cn internal enabled :
-
)
2014
-
08
-
04
15
:
22
:
17
nova
-
extend athController.
8.180
.
abs
.com.cn internal enabled :
-
)
2014
-
08
-
04
15
:
22
:
10
|
i) 总结
openstack开发其实并不是很难,只要了解nova-compute,nova-api启动过程,参照文档基本都能实现
到此openstack Nova extend 服务启动实现完毕,下一章节将会在下周一撰写openstack nova-extend nova.extend.manager 功能实现,谢谢大家,如有不明白的地方请留言,我会在中午时间一一帮助大家解答,欢迎点评
写的不好的地方还希望大牛们指点,共同学习
本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1535750