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

被折叠的 条评论
为什么被折叠?



