OpenStack——nova安装

本文详细介绍OpenStack的部署步骤,包括Keystone、Glance、Nova等核心组件的安装配置过程,以及解决常见问题的方法。

1、OpenStack部署前准备
2、OpenStack——keystone安装
3、OpenStack——glance安装
4、OpenStack——nova安装

安装环境

Ubuntu14.04 +OpenStack(M版)

Compute服务概览

OpenStack的Compute服务和Identity服务的验证相联系,和Image服务的磁盘和服务镜像相联系,和dashboard使用的可视化接口相关。Compute组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

初认Compute的几大重要组建

  • nova-api服务:接收和响应来自最终用户的计算API请求
  • nova-api-metadata服务:接受来自虚拟机发送的元数据请求。
  • nova-compute服务:一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。
  • nova-scheduler模块:从对列中接受一个虚拟机实例的请求,根据调度算法选择哪个计算节点执行。
  • nova-conductor模块:位于nova-compute服务与数据库之间。它排除了由nova-compute服务对云数据库的直接访问。不应该部署在nova-compute所在节点
  • nova-consoleauth,nova-network worker,nova-novncproxy等守护进程

初始化数据库

1、创建nova_api和nova数据库

    mysql -u root -p
    CREATE DATABASE nova_api;
    CREATE DATABASE nova;

    GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost'   IDENTIFIED BY 'NOVA_DBPASS';
    GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%'      IDENTIFIED BY 'NOVA_DBPASS';
    GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost'    IDENTIFIED BY 'NOVA_DBPASS';
    GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'      IDENTIFIED BY 'NOVA_DBPASS';

2、创建nova用户和实例

    source  admin.rc
    openstack user create --domain default     --password-prompt nova
    openstack role add --project service --user nova admin
    #创建nova服务实例
    openstack service create --name nova     --description "OpenStack Compute" compute

3、创建Compute的计算节点

    openstack endpoint create --region RegionOne    compute public http://controller:8774/v2.1/%\(tenant_id\)s
    openstack endpoint create --region RegionOne    compute internal http://controller:8774/v2.1/%\(tenant_id\)s
    openstack endpoint create --region RegionOne    compute admin http://controller:8774/v2.1/%\(tenant_id\)s

4、安装和配置组建
安装包

    apt-get install nova-api nova-conductor nova-consoleauth   nova-novncproxy nova-scheduler

配置文件/etc/nova/nova.conf

[DEFAULT]
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
force_dhcp_release=True
libvirt_use_virtio_for_bridges=True
verbose=True
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=osapi_compute,metadata
backend = rabbit
auth_strategy = keystone
my_ip=10.0.0.10
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api_database]
connection = mysql+pymysql://nova:123@controller/nova_api

[database]
connection = mysql+pymysql://nova:123@controller/nova

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 123

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123

[vnc]#远程控制台服务
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

[glance]
api_servers = http://controller:9292

[oslo_concurrency]
lock_path = /var/lib/nova/tmp


同步数据库

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova

完成安装

service nova-api restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart

在compute 节点上安装和配置

1、在compute节点(10.0.0.30)安装nova-compute

apt-get install install   nova-compute

2、修改/etc/nova/nova.conf

[DEFAULT]
dhcpbridge=/usr/bin/nova-dhcpbridge
state_path=/var/lib/nova
lock_path=/var/lock/nova
force_dhcp_release=True
libvirt_use_virtio_for_bridges=True
verbose=True
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=ec2,osapi_compute,metadata
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 10.0.0.30
use_neutron = True
logdir = /var/log/nova
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

[glance]
api_servers = http://controller:9292

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password =123 

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 123

官方教程说要把从[DEFAULT]中去掉logdir,但是如果去掉,就不能通过日志(/var/log/nova)文件来排除错误,所以我还是加上了。

3、完成安装

运行:egrep -c '(vmx|svm)' /proc/cpuinfo 查看主机是否支持硬件加速。如果返回值是0,表示不支持。那么需要修改
/etc/nova/nova-compute.conf

[libvirt]
...
virt_type = qemu


重启服务

service nova-compute restart

在controller的确认操作

1、获得管理源凭证

source admin.rc

2、查看计算服务列表

openstack compute service list

nova-compute无法启动怎么办

  • 在controller节点查/var/log/rabbitmq/rabbit@controller下的日志文件。查看是否接受过compute的请求。
  • 在compute节点查看/var/log/nova/nova-compute.log文件。查看是否发送过请求。一开始发送给localhost的请求可以忽略。如果遇到
 2014-10-19 01:49:20.686 2993 AUDIT nova.service [-] Starting compute node (version 2014.1.2)
2014-10-19 01:50:15.141 2993 WARNING nova.virt.libvirt.driver [-] URI qemu:///system does not support events: Cannot write data: Broken pipe
2014-10-19 01:50:15.147 2993 ERROR nova.openstack.common.threadgroup [-] internal error: client socket is closed
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup Traceback (most recent call last):
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/openstack/common/threadgroup.py", line 117, in wait
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup x.wait()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/openstack/common/threadgroup.py", line 49, in wait
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup return self.thread.wait()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/eventlet/greenthread.py", line 168, in wait
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup return self._exit_event.wait()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/eventlet/event.py", line 116, in wait
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup return hubs.get_hub().switch()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 187, in switch
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup return self.greenlet.switch()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/eventlet/greenthread.py", line 194, in main
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup result = function(*args, **kwargs)
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/openstack/common/service.py", line 483, in run_servic
e
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup service.start()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/service.py", line 163, in start
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup self.manager.init_host()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1030, in init_host
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup self.driver.init_host(host=self.host)
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 658, in init_host
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup self._do_quality_warnings()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 641, in _do_quality_warnings
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup caps = self.get_host_capabilities()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 2870, in get_host_capabilities
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup xmlstr = self._conn.getCapabilities()
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/eventlet/tpool.py", line 179, in doit
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup result = proxy_call(self._autowrap, f, *args, **kwargs)
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/eventlet/tpool.py", line 139, in proxy_call
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup rv = execute(f,*args,**kwargs)
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/eventlet/tpool.py", line 77, in tworker
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup rv = meth(*args,**kwargs)
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/dist-packages/libvirt.py", line 3303, in getCapabilities
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup if ret is None: raise libvirtError ('virConnectGetCapabilities() failed', conn=self)
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup libvirtError: internal error: client socket is closed
2014-10-19 01:50:15.147 2993 TRACE nova.openstack.common.threadgroup

这样的日志错误,可是试试先开启compute服务,再开启libvirt服务。
如果还是不行,恩(>_<),计算节点换ubuntu16.04。不要问我为什么,博主在这折腾了好几天。
可以看这个bug描述nova-compute is started before libvirt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值