Openstack Nova 二次开发之Nova-extend服务实现

简介:

主要是讲如何启动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
#!/usr/bin/python-extend
# PBR Generated from 'console_scripts'
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
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#    Copyright 2012 IBM Corp.
#
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.
"""Starter script for Nova Extend."""
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
#
# openstack-nova-extend  OpenStack Nova Compute DB Access service
#
# chkconfig:   - 98 02
# description: Implementation of an S3-like storage server based on local files.
### BEGIN INIT INFO
# Provides:
# Required-Start: $remote_fs $network $syslog
# Required-Stop: $remote_fs $syslog
# Default-Stop: 0 1 6
# Short-Description: OpenStack Nova Compute DB Access service
# Description: Service to handle database access for compute nodes
### END INIT INFO
/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] # service openstack-nova-extend restart
[root@athController cmd] # tar -xzf /var/log/nova/extend.log
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] # rabbitmqctl list_queues|grep extend
 
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] # nova-manage service list
 
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


相关文章
|
4月前
|
存储 消息中间件 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
82 0
|
4月前
|
运维 数据可视化 Linux
云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)
67 0
|
4月前
|
存储 关系型数据库 MySQL
云计算|OpenStack|社区版OpenStack安装部署文档(四 --- 镜像服务glance安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(四 --- 镜像服务glance安装部署---Rocky版)
93 0
|
4月前
|
Linux 网络安全 API
云计算|OpenStack|社区版OpenStack安装部署文档(五 --- 计算服务nova安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(五 --- 计算服务nova安装部署---Rocky版)
109 0
|
4月前
|
关系型数据库 MySQL 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(三 --- 身份认证服务keystone安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(三 --- 身份认证服务keystone安装部署---Rocky版)
58 0
|
11月前
|
云计算 虚拟化 开发者
Openstack架构构建及详解(4)--Nova组件
Openstack架构构建及详解(4)--Nova组件
420 0
|
存储 算法 API
3.2.3存储服务开源 Openstack|学习笔记
快速学习3.2.3存储服务开源 Openstack
594 0
3.2.3存储服务开源 Openstack|学习笔记
|
存储 弹性计算 API
3.1.3计算服务开源 OpenStack|学习笔记(二)
快速学习3.1.3计算服务开源 OpenStack
132 0
3.1.3计算服务开源 OpenStack|学习笔记(二)
|
存储 消息中间件 缓存
金鱼哥RHCA回忆录:CL210描述OPENSTACK控制平面--识别overclound控制平台服务+章节实验
第二章 描述OPENSTACK控制平面--识别overclound控制平台服务+章节实验
190 0
金鱼哥RHCA回忆录:CL210描述OPENSTACK控制平面--识别overclound控制平台服务+章节实验
|
消息中间件 运维 Linux
金鱼哥RHCA回忆录:CL210描述OPENSTACK控制平面--通过API描述服务访问+通过MQ描述服务通信
第二章 描述OPENSTACK控制平面--通过API描述服务访问+通过MQ描述服务通信
212 0
金鱼哥RHCA回忆录:CL210描述OPENSTACK控制平面--通过API描述服务访问+通过MQ描述服务通信