openstack (六) nova 计算组件部署
1.组件详解
功能:托管和管理虚拟主机
选主机: 用户请求 -> nova-api -> queue -> nova-scheduler -> nova-db(过滤+权重) -> nova-scheduler -> queue创建VM: nova-compute -> queue -> nova-conductor -> nava-db -> nova-conductor -> queue -> nova-compute -> 获取相应的资源 -> hypervisor -> 创建VM
访问VM:
命令行
浏览器:nova-console -> nova-cert -> nova-console
- 组件介绍
API组件:
nova-api:负责接收和响应外部的操作请求,RESTful格式的API,是外部访问Nova的唯一途径。
nova-api-metadata:是nova-api的一个子服务,为VM实例的创建提供metadata信息。
Compute Core组件:
nova-scheduler:负责VM实例的资源调度,通过过滤和权重计算,来决策VM实例创建在哪个计算节点上。
nova-compute:管理VM实例,通过消息队列接收请求,并承担操作工作。
nova-conductor:nova-compute借助nava-conductor实现对数据库的访问
Console Interface组件:
nova-cert:负责身份认证
nova-consoleauth:用户控制台的授权验证
nova-novncproxy:VNC代理,支持基于浏览器的vnc客户端
2.控制节点部署
- 数据库配置
$ mysql -u root -p MariaDB [(none)]> CREATE DATABASE nova_api; MariaDB [(none)]> CREATE DATABASE nova; MariaDB [(none)]> CREATE DATABASE nova_cell0; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘; 复制代码
- 软件安装
# yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api 复制代码
- 配置文件修改
修改nova.conf文件
vim /etc/nova/nova.conf [DEFAULT] # 开发nova服务的api接口,直接取消注释 enabled_apis = osapi_compute,metadata [api_database] # 配置nova-api的数据库连接地址 connection = mysql+pymysql://nova:/nova_api [database] # 配置nova的数据库链接地址 connection = mysql+pymysql://nova:/nova [DEFAULT] # 配置rabbitmq的链接地址 transport_url = rabbit://openstack: [api] # 配置api验证方式,取消注释 auth_strategy = keystone [keystone_authtoken] # 配置keystone的认证信息 auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = nova [DEFAULT] # 配置ip my_ip = 192.168.188.100 [DEFAULT] # 配置使用的网络信息,直接取消注释即可,关闭防火墙驱动 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver [vnc] enabled = true # 开启vnc功能,配置vnc的联系方式 server_listen = $my_ip server_proxyclient_address = $my_ip [glance] # 配置glance的联系地址 api_servers = http://controller:9292 [oslo_concurrency] # 配置锁文件路径 lock_path = /var/lib/nova/tmp [placement] # 配置资源跟踪用户placement的认证信息 os_region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://controller:5000/v3 username = placement password = placement 复制代码
修改placement-api的配置文件
vim /etc/httpd/conf.d/00-nova-placement-api.conf <Directory /usr/bin> = 2.4> Require all granted <IfVersion < 2.4> Order allow,deny Allow from all
重启http服务
systemctl restart httpd
- 信息同步
同步nova-api数据库信息和cell0数据库信息
# su -s /bin/sh -c "nova-manage api_db sync" nova # su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova 复制代码
创建cell1记录,同步nova数据库信息
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova # su -s /bin/sh -c "nova-manage db sync" nova 复制代码
- 权限配置
加载admin用户环境变量
source admin-openstack.sh
增加一个nova用户
openstack user create --domain default --password nova nova
将nova用户加入到service项目的admin角色组
openstack role add --project service --user nova admin
创建nova服务,配置api地址记录
openstack service create --name nova --description "OpenStack Compute" compute openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1 openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1 openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1 复制代码
创建placement用户,该用户用于资源的追踪记录。加入到service项目的admin角色组
$ openstack user create --domain default --password placement placement $ openstack role add --project service --user placement admin 复制代码
创建placement服务,配置api地址记录
$ openstack service create --name placement --description "Placement API" placement $ openstack endpoint create --region RegionOne placement public http://controller:8778 $ openstack endpoint create --region RegionOne placement internal http://controller:8778 $ openstack endpoint create --region RegionOne placement admin http://controller:8778 复制代码
- 验证效果
# systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service # systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service 复制代码
验证各服务的endpoint
openstack catalog list
日志记录
/var/log/nova
3.计算节点部署
- 准备工作
安装软件
yum install -y openstack-nova-compute sysfsutils libguestfs-tools
- 修改配置文件
修改nova.conf配置文件 vim /etc/nova/nova.conf [DEFAULT] # ... enabled_apis = osapi_compute,metadata [DEFAULT] # ... transport_url = rabbit://openstack: [api] # ... auth_strategy = keystone [keystone_authtoken] # ... auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = nova [DEFAULT] # ... my_ip = 192.168.188.101 #计算节点的IP地址 [DEFAULT] # ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver [vnc] # ... enabled = True server_listen = 0.0.0.0 server_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 [placement] # ... os_region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://controller:5000/v3 username = placement password = placement #Determine whether your compute node supports hardware acceleration for virtual machines: #If this command returns a value of one or greater, your compute node supports hardware acceleration which typically requires no additional configuration. #If this command returns a value of zero, your compute node does not support hardware acceleration and you must configure libvirt to use QEMU instead of KVM. [libvirt] # ... virt_type = qemu 复制代码
[DEFAULT] # 调整计算节点提供的资源参数(因为学习环境底层是VMware虚拟机) vif_plugging_is_fatal=false vif_plugging_timeout=10 复制代码
开启服务并设置开机自启
# systemctl enable libvirtd.service openstack-nova-compute.service # systemctl start libvirtd.service openstack-nova-compute.service 复制代码
- 效果测试
控制节点添加计算节点
source admin-openstack.sh oepnstack compute service list 复制代码
新增计算节点记录,添加到nova数据库中
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
验证所有API是否正常
nova-status upgrade check