1. 概述
官方文档链接:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova.html
OpenStack计算服务组件所构成示意图:
- nova-api 服务:是计算的唯一入口,所有的计算请求均从nova-api进来
- nova-api-metadata 服务
接受来自虚拟机发送的元数据请求。 - nova-compute服务
一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例 - nova-scheduler服务
拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。 - nova-cert 守护进程
X509 证书 - nova客户端
用于用户作为租户管理员或最终用户来提交命令。 - nova-consoleauth 守护进程
授权控制台代理所提供的用户令牌 - nova-novncproxy 守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端 - 队列
一个在守护进程间传递消息的中央集线器。常见实现有RabbitMQ http://www.rabbitmq.com/, 以及如Zero MQ http://www.zeromq.org/等AMQP消息队列。 - SQL数据库
存储构建时和运行时的状态,为云基础设施
2. 安装并配置控制节点
1) 先决条件
##1. 创建数据库
##用数据库连接客户端以 root 用户连接到数据库服务器:
[root@controller ~]# mysql -pwestos
####创建 nova_api 和 nova 数据库
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
##对数据库进行正确的授权:
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';
##2. 创建服务证书
## 创建 nova 用户:
[root@controller ~]# openstack user create --domain default --password nova nova
##给 nova 用户添加 admin 角色:
[root@controller ~]# openstack role add --project service --user nova admin
##创建 nova 服务实体:
[root@controller ~]# openstack service create --name nova --description "OpenStack Compute" compute
##3. 创建 Compute 服务 API 端点 :
[root@controller ~]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller ~]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller ~]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s
2) 安全并配置组件
## 1. 安装软件包:
[root@controller ~]# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler -y
## 2. 编辑``/etc/nova/nova.conf``文件并完成下面的操作:
[root@controller ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata ##只启用计算和元数据API
rpc_backend = rabbit ##配置 “RabbitMQ” 消息队列访问
auth_strategy = keystone ##配置认证服务访问
my_ip = 192.168.0.1 ##配置``my_ip`` 来使用控制节点的管理接口的IP 地址
use_neutron = True ##使能 Networking 服务
firewall_driver = nova.virt.firewall.NoopFirewallDriver
##在``[api_database]``和``[database]``部分,配置数据库的连接:
[api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api
[database]
connection = mysql+pymysql://nova:nova@controller/nova
##在 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
##在 “[keystone_authtoken]” 部分,配置认证服务访问:
[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 = nova
##在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
##在 [glance] 区域,配置镜像服务 API 的位置:
[glance]
api_servers = http://controller:9292
##在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
##3.同步Compute 数据库:
[root@controller ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova
3) 完成安装
[root@controller ~]# systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
[root@controller ~]# systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
3. 安装和配置计算节点
这部分描述如何在计算节点上安装并配置计算服务。计算服务支持多种虚拟化方式 hypervisors to deploy instances or VMs. For simplicity, this configuration uses the QEMU hypervisor with the :term:KVM <kernel-based VM (KVM)>
计算节点需支持对虚拟化的硬件加速。对于传统的硬件,本配置使用generic qumu的虚拟化方式。
1) 计算节点初始化部署
[root@server2 ~]# hostnamectl set-hostname compute1
[root@compute1 ~]# vim /etc/hosts
[root@compute1 ~]# cat /etc/hosts
192.168.0.1 controller
192.168.0.2 compute1
192.168.0.3 block1
[root@compute1 ~]# cd /etc/sysconfig/network-scripts/
[root@compute1 network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@compute1 network-scripts]# vim ifcfg-eth1
[root@compute1 network-scripts]# cat ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1
ONBOOT=yes
[root@compute1 network-scripts]# ifup eth1
[root@compute1 network-scripts]# ip addr
[root@controller ~]# scp /etc/yum.repos.d/openstack.repo 192.168.0.2:/etc/yum.repos.d/
[root@compute1 ~]# yum repolist
[root@compute1 ~]# yum install -y chrony
[root@compute1 ~]# vim /etc/chrony.conf
server 192.168.0.100 iburst
[root@compute1 ~]# systemctl enable --now chronyd
2) 安全并配置组件
[root@compute1 ~]# yum install openstack-nova-compute -y ##安装软件包:
[root@compute1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
2
[root@compute1 ~]# vim /etc/nova/nova.conf
[DEFAULT]
rpc_backend = rabbit ##配置``RabbitMQ``消息队列的连接
auth_strategy = keystone ##配置认证服务访问
my_ip = 192.168.0.2 ##配置 my_ip 选项
use_neutron = True ##使能 Networking 服务
firewall_driver = nova.virt.firewall.NoopFirewallDriver
##配置``RabbitMQ``消息队列的连接:
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
##配置认证服务访问:
[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 = nova
##启用并配置远程控制台访问:
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
##配置镜像服务 API 的位置:
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[libvirt]
virt_type=kvm
3) 完成安装
##1. 确定计算节点是否支持虚拟机的硬件加速
[root@compute1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
2
## 2. 启动计算服务及其依赖,并将其配置为随系统自动启动:
[root@compute1 ~]# systemctl enable --now libvirtd.service openstack-nova-compute.service
[root@compute1 ~]# systemctl start libvirtd.service openstack-nova-compute.service
4. 验证操作
[root@controller ~]# openstack compute service list