Openstack Nova 二次开发之Nova-extend服务实现并启动验证

 Openstack Nova 二次开发之Nova-extend service 扩展

主要是讲如何启动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/

#!/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

# 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 配置

extend_manager=nova.extend.manager.ExtendManager

e) 创建openstack-nova-extend 启动服务脚步

#!/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服务

[[email protected] cmd]# service openstack-nova-extend restart
[[email protected] 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 消息队列信息

[[email protected] 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服务状态

[[email protected] 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 功能实现,谢谢大家,如有不明白的地方请留言,我会在中午时间一一帮助大家解答,欢迎点评

写的不好的地方还希望大牛们指点,共同学习

Openstack Nova 二次开发之Nova-extend服务实现并启动验证

时间: 2024-08-04 10:27:47

Openstack Nova 二次开发之Nova-extend服务实现并启动验证的相关文章

PDMS二次开发之PML开发一些常见查询语句

1.查找session 以及session number var !DBname DBname !db = object db(!DBname) !session = !db.lastsession() 下面是查询结果截图 q var !db q var !sessioon.number 2.从某个时间段到当前,模型的差异文件判断模型是否发生修改,并写入文件. alpha log /$!file  overwrite DIFFERENCE $!ojbName SINCE 15:36 14 May

Openstack 二次开发之:在windows 环境下编译Openstack-java-sdk

在windows环境下使用maven对openstack-java-sdk进行编译 编译源文件 下载源代码 git clonehttps://github.com/woorea/openstack-java-sdk.git 下载并安装gpg4win http://ftp.gpg4win.org/ 本次过程中下载的是gpg4win-2.2.2.exe 配置gpg 查看 F:\github\openstack-java-sdk>gpg --list-key gpg:C:/Users/Eric.sun

nagios二次开发之“依据分组绘制服务图”

背景:       在nagios3.2.0版本,曾将nagios.saltstack.Thinkphp进行整合.在整合的基础之上,进行了二次开发,新增分组出图.资产管理.服务器批量管理等功能.资产的增删改查借助的是Thinkphp框架:分组出图单独写分组页面,调用pnp的接口:服务器的批量管理,依靠的是saltstack的强大的API,如下图: 图1  按业务分组出图 图2  资产管理和服务器批量管理 上述系统已应用到线上环境.接下来我们要讲述的"依据分组绘制服务图"是在nagios

Nutch 二次开发之parse正文内容

关于nutch的基础知识能够參考lemo的专栏 nutch支持二次开发,为了满足搜索的准确率的问题,考虑只将网页正文的内容提取出来作为索引的内容,相应的是parse_text的数据.我使用的事nutch1.4 版本号,在cygwin下运行crawl命令进行爬取. bin/nutch crawl urls -dir crawl -depth 3 -topN 30 爬取的流程例如以下:inject :将urls下的url文档中的url注入到数据库,generate:从数据库中取得url获取须要爬取的

Ubuntu搭建Openstack平台(kilo)(四.nova)

一.nova环境 参考文档:http://www.aboutyun.com/thread-13089-1-1.html http://docs.openstack.org/mitaka/install-guide-ubuntu/nova-controller-install.html 1.创建nova数据库并授权 创建 mysql -u root -p CREATE DATABASE nova; 授权(自己设定密码,连接数据库时用,我的nova) GRANT ALL PRIVILEGES ON

OpenStack(i版)之Keystone,Glance,Nova,Neutron,Horizon

一.前期准备 1.1.linux-node1端: [[email protected]1 ~]# egrep '(vmx|svm)' /proc/cpuinfo ##有输出就支持虚拟化 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.8 (Final) [[email protected] ~]# uname -r 2.6.32-642.el6.x86_64 [[email protected] ~]# getenf

android软件开发之webView.addJavascriptInterface循环渐进【二】

说明 文章列表 android软件开发之webView.addJavascriptInterface循环渐进[一]: http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gradual-oneandroid软件开发之webView.addJavascriptInterface循环渐进[二]: http://www.sollyu.com/586 上一篇文章发布之后,得到

《4》CentOS7.0+OpenStack+kvm云平台部署—配置Nova

感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地址:http://blog.csdn.net/qq_21398167/article/details/46385651 初始化Nova (1).安装nova: [[email protected] ~]# yum -y installopenstack-nova (2).创建nova数据库: [[e

android控件开发之ExpandableListActivity(二)

android控件开发之ExpandableListActivity(二) 本博文主要讲述的是使用ExpandableListActivity创建一个类似QQ中好友列表的功能.下面我们直接来看实现的代码吧. 本实例中有一个Activity,和一个主布局文件.其他的一级目录和二级目录分别是通过重写ExpandableListActivity中的getGroupView()和getChildView()方法来实现的布局 MainActivity.java代码如下: 此Activity主要是exten