设为首页 收藏本站
查看: 923|回复: 0

[经验分享] OpenStack版本升级之Nova

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-9 08:16:39 | 显示全部楼层 |阅读模式
F版对依赖库的变化
  F版Nova对依赖库的变化比较大,官网文档就提到了5点,另外还增加和去掉了一些依赖,详情如下:

[ugyn@localhost nova]$ git diff origin/stable/essex:tools/pip-requires origin/stable/folsom:tools/pip-requires
diff --git a/origin/stable/essex:tools/pip-requires b/origin/stable/folsom:tools/pip-requires
index 3359f64..d1a2bcf 100644
--- a/origin/stable/essex:tools/pip-requires
+++ b/origin/stable/folsom:tools/pip-requires
@@ -1,27 +1,23 @@
-SQLAlchemy>=0.7.3
+SQLAlchemy>=0.7.8,<=0.7.9
Cheetah==2.4.4
amqplib==0.6.1
anyjson==0.2.4
boto==2.1.1
-carrot==0.10.5
-eventlet
+eventlet>=0.9.17
kombu==1.0.4
-lockfile==0.8
-lxml==2.3
-python-daemon==1.5.5
-python-gflags==1.3
-python-novaclient
+lxml>=2.3,<=2.3.5
routes==1.12.3
WebOb==1.0.8
-wsgiref==0.1.2
greenlet>=0.3.1
PasteDeploy==1.5.0
paste
sqlalchemy-migrate>=0.7.2
netaddr
-glance>=2011.3.1
suds==0.4
paramiko
-feedparser
Babel>=0.9.6
iso8601>=0.1.4
+httplib2
+setuptools_git>=0.4
+python-quantumclient>=2.0
+python-glanceclient>=0.5.0,<2

备份配置文件及数据库

[iyunv@stack1 update_nova]# cp -R /etc/nova ./nova-etc
[iyunv@stack1 update_nova]# mysqldump -h10.61.2.12 -unova -p nova > nova.sql

下载相关升级软件
  考虑到nova的升级涉及多个节点,所以最好把这些包都下载到本地然后写一个简单的脚本安装比较合适。用pip下载依赖包时容易出现timeout重新运行命令即可。

[iyunv@stack1 update_nova]# pip install -d ./ --no-install SQLAlchemy eventlet httplib2 setuptools_git python-quantumclient python-glanceclient
[iyunv@stack1 update_nova]# ll *gz *zip
-rw-r--r-- 1 root root   69297 Nov 19 16:11 argparse-1.2.1.tar.gz
-rw-r--r-- 1 root root  123636 Nov 19 16:10 cliff-1.3.tar.gz
-rw-r--r-- 1 root root   21147 Nov 19 16:20 cmd2-0.6.4.tar.gz
-rw-r--r-- 1 root root  638335 Nov 19 16:18 distribute-0.6.30.tar.gz
-rw-r--r-- 1 root root  262991 Nov 19 16:04 eventlet-0.9.17.tar.gz
-rw-r--r-- 1 root root   72790 Nov 19 16:10 greenlet-0.4.0.zip
-rw-r--r-- 1 root root  116500 Nov 19 16:04 httplib2-0.7.7.zip
-rw-r--r-- 1 root root    9621 Nov 19 16:20 jsonschema-0.2.zip
-rw-r--r-- 1 root root   22779 Nov 19 16:11 prettytable-0.6.1.zip
-rw-r--r-- 1 root root 1418892 Nov 19 16:17 pyparsing-1.5.6.tar.gz
-rw-r--r-- 1 root root   64924 Nov 19 16:09 python-glanceclient-0.5.1.tar.gz
-rw-r--r-- 1 root root   57538 Nov 19 16:17 python-keystoneclient-0.1.3.tar.gz
-rw-r--r-- 1 root root   43397 Nov 19 16:05 python-quantumclient-2.1.tar.gz
-rw-r--r-- 1 root root    3646 Nov 19 16:04 setuptools-git-0.4.2.tar.gz
-rw-r--r-- 1 root root   53228 Nov 19 16:12 simplejson-2.6.2.tar.gz
-rw-r--r-- 1 root root 2649932 Nov 19 16:03 SQLAlchemy-0.7.9.tar.gz
-rw-r--r-- 1 root root    6717 Nov 19 16:18 warlock-0.5.0.tar.gz
[iyunv@stack1 update_nova]# git clone git://github.com/openstack/nova.git
[iyunv@stack1 update_nova]# cd nova
[iyunv@stack1 nova]# git checkout -b folsom origin/stable/folsom

配置Nova
  将F的配置文件拷入到你的升级目录下(如update_nova)并修改nova.conf和api-paste.ini,注意,我这里用eth1作为public_interface,如果只有一个网卡的话public_interface设为br100即可,另外,我这里使用ccip代表控制节点ip,nodeip代表本地节点ip便于后面运行升级脚本:

[iyunv@stack1 nova]# cp -R etc/nova ../etc
[iyunv@stack1 nova]# cd ..
[iyunv@stack1 update_nova]# cat etc/nova.conf
[DEFAULT]
# LOGS/STATE
#verbose=True
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
# ROOTWRAP
rootwrap_config=/etc/nova/rootwrap.conf
# AUTHENTICATION
auth_strategy=keystone
# SCHEDULER
compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
# VOLUMES
volume_group=nova-volumes
#volume_name_template=volume-%08x
iscsi_helper=tgtadm
# DATABASE
sql_connection=mysql://nova:nova@ccip/nova
# COMPUTE
libvirt_type=kvm
compute_driver=libvirt.LibvirtDriver
instances_path=/var/lib/nova/instances
instance_name_template=instance-%08x
api_paste_config=/etc/nova/api-paste.ini
allow_resize_to_same_host=True
#resume_guests_state_on_host_boot=True
#start_guests_on_host_boot=True
# APIS
osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions
cc_host=ccip
metadata_host=ccip
metadata_listen=0.0.0.0
ec2_host=ccip
ec2_dmz_host=ccip
ec2_url=http://ccip:8773/services/Cloud
keystone_ec2_url = http://ccip:5000/v2.0/ec2tokens
nova_url=http://ccip:8774/v1.1/
s3_host=ccip
s3_dmz=ccip
# RABBITMQ
# rabbit_host=ccip
# rabbit_userid=guest
# rabbit_password=service123
# QPID
rpc_backend=nova.rpc.impl_qpid
qpid_hostname=ccip
# GLANCE
image_service=nova.image.glance.GlanceImageService
glance_host=ccip
glance_api_servers=ccip:9292
# NETWORK
network_manager=nova.network.manager.FlatDHCPManager
force_dhcp_release=True
dhcp_release_time=1200
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
auto_assign_floating_ip=True
routing_source_ip=ccip
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
my_ip=nodeip
public_interface=eth1
vlan_interface=eth0
flat_network_bridge=br100
flat_interface=eth0
fixed_range=10.0.0.0/24
# NOVNC CONSOLE
novncproxy_base_url=http://ccip:6080/vnc_auto.html
xvpvncproxy_base_url=http://ccip:6081/console
vncserver_proxyclient_address=nodeip
vncserver_listen=0.0.0.0
[iyunv@stack1 update_nova]# tail -n 9 etc/api-paste.ini
[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
auth_host = ccip
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = service123
signing_dirname = /tmp/keystone-signing-nova

创建升级脚本

[iyunv@stack1 update_nova]# cat install.sh
#!/usr/bin/env bash
TOP_DIR=$(cd $(dirname "$0") && pwd)
nodeip=${1:-null}
ccip=${2:-10.61.2.12}
if [[ "$nodeip" == "null" ]]; then
echo "Usage: `basename $0` nodeip [ccip]"
exit 1
fi
pip install --upgrade  simplejson-2.6.2.tar.gz prettytable-0.6.1.zip argparse-1.2.1.tar.gz httplib2-0.7.7.zip
pip install jsonschema-0.2.zip pyparsing-1.5.6.tar.gz
pip install cmd2-0.6.4.tar.gz distribute-0.6.30.tar.gz warlock-0.5.0.tar.gz python-keystoneclient-0.1.3.tar.gz cliff-1.3.tar.gz greenlet-0.4.0.zip
pip install python-glanceclient-0.5.1.tar.gz python-quantumclient-2.1.tar.gz setuptools-git-0.4.2.tar.gz eventlet-0.9.17.tar.gz SQLAlchemy-0.7.9.tar.gz
file=$(find /usr/lib -name "subprocess.py")
sed -i 's/0.01)/0.01, timeout=None)/' $file
if [[ -f /etc/tgt/targets.conf ]] && ! grep -q 'volumes' /etc/tgt/targets.conf
then
sed -i 's;\(#include.*\);\1\ninclude /var/lib/nova/volumes/\*;' /etc/tgt/targets.conf
fi
cd nova/
python setup.py install > $TOP_DIR/../install.info
cd ..
rm -fr /etc/nova/*
cp -R etc/* /etc/nova/
sed -i -e "s/ccip/$ccip/g" -e "s/nodeip/$nodeip/g" /etc/nova/nova.conf /etc/nova/api-paste.ini

升级各节点
  使用如下命令将文件传输到各节点,停止节点的nova服务,然后运行升级脚本升级nova。全部升级完成后用命令nova-manage db sync同步数据库,然后就可以启动各服务了。

[iyunv@stack1 update_nova]# cd ..
[iyunv@stack1 ~]# rsync -az --exclude=update_nova/.git update_nova root@10.61.2.5:/root/
[iyunv@stack1 ~]# ssh root@10.61.2.5
[iyunv@stack5 ~]# cd update_nova/
[iyunv@stack5 update_nova]# service nova-compute stop
[iyunv@stack5 update_nova]# ./install.sh 10.61.2.5

注意事项
  建议仔细阅读Nova的Upgrade Notes

1.nova-volume到cinder的迁移,这个打算全部升级完成后再搞

2.配置targets.conf,见上面的升级脚本

3.rootwrap的配置,由于我是用root运行nova的(尝试过用nova用户运行,但是在libvirt这一个的权限没搞好,后面就没弄了),只简单的设置了rootwrap_config来代替原来的root_helper


4.nova.conf中用compute_driver=libvirt.LibvirtDriver代替了connection_type=libvirt

5.flavors的变化。。。

升级时遇到的一些问题
  1.同步数据库失败,报:CRITICAL nova [-] /usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/db/sqlalchemy/migrate_repo


我刚开始打算用命令wget https://github.com/openstack/nova/archive/stable/folsom.zip从github直接获取源码安装,可是这样获取的源码缺少文件,导致上述问题。解决办法:使用git clone git://github.com/openstack/nova.git获取源码


2.启动nova-network、nova-compute时报:CRITICAL nova [-] wait() got an unexpected keyword argument 'timeout'


这是老问题了,在E版就有,因为升级了eventlet的原故把原来的修改覆盖了(详情),解决办法见上面的脚本。

3.启动nova-volume报: CRITICAL nova [-] %x format: a number is required, not unicode

这是由于沿用了E版中的一些配置造成的,注释掉volume_name_template=volume-%08x即可。
  北方工业大学 |
云计算研究中心 | 姜永

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-162039-1-1.html 上篇帖子: 【OpenStack】 Grizzly中的nova-conductor 下篇帖子: OpenStack版本升级之Keystone
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表