跳转至

6. 安装计算服务nova

0. 介绍

# nova服务是openstack云计算中的最核心服务

# 常用组件
    nova-api:接收并响应所有的计算服务请求,管理虚拟机生命周期
    nova-compute(多个):真正管理虚拟机的生命周期
    nova-scheduler:nova调度器(挑选出最合适的nova-compute来创建虚拟机)
    nova-conductor:帮助nova-compute代理修改数据库中虚拟机的状态
    nova-network:早期openstack版本管理虚拟机的网络(已弃用,现在用neutron)
    nova-consoleauth:为web版的vnc提供访问令牌token
    novncproxy:web版vnc客户端
    nova-api-metadata:接收来自虚拟机发送的元数据请求
## 1.数据库创库授权
## 2.在keystone创建系统用户关联角色
## 3.在keystone创建服务,注册api
## 4.安装相应服务软件包
## 5.修改相应服务的配置文件
## 6.同步数据库
## 7.启动服务

控制节点安装

1.数据库创库授权

#controller
#1.登录数据库
mysql

#2.创建数据库(2个)
CREATE DATABASE nova_api;
CREATE DATABASE nova;

#3.创建用户并授权
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.在keystone创建系统用户关联角色

## 在keystone创建系统用户(glance,nova,neutron)关联角色
openstack user create --domain default --password NOVA_PASS nova
openstack role add --project service --user nova admin

3.在keystone创建服务,注册api

#1.创建服务
openstack service create --name nova --description "OpenStack Compute" compute 

#2.注册api
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.安装相应服务软件包

yum install openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler -y

5.修改相应服务的配置文件

#1.备份
cp /etc/nova/nova.conf{,.bak}

#2.去注释
grep '^[a-Z\[]' /etc/nova/nova.conf.bak >/etc/nova/nova.conf

#3.修改
openstack-config --set /etc/nova/nova.conf  DEFAULT enabled_apis  osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf  DEFAULT rpc_backend  rabbit
openstack-config --set /etc/nova/nova.conf  DEFAULT auth_strategy  keystone
openstack-config --set /etc/nova/nova.conf  DEFAULT my_ip  10.0.0.11    #这里改成自己的IP!
openstack-config --set /etc/nova/nova.conf  DEFAULT use_neutron  True
openstack-config --set /etc/nova/nova.conf  DEFAULT firewall_driver  nova.virt.firewall.NoopFirewallDriver

openstack-config --set /etc/nova/nova.conf  api_database connection  mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

openstack-config --set /etc/nova/nova.conf  database  connection  mysql+pymysql://nova:NOVA_DBPASS@controller/nova

openstack-config --set /etc/nova/nova.conf  glance api_servers  http://controller:9292

openstack-config --set /etc/nova/nova.conf  keystone_authtoken  auth_uri  http://controller:5000
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  auth_url  http://controller:35357
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  memcached_servers  controller:11211
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  auth_type  password
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  project_domain_name  default
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  user_domain_name  default
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  project_name  service
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  username  nova
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  password  NOVA_PASS

openstack-config --set /etc/nova/nova.conf  oslo_concurrency lock_path  /var/lib/nova/tmp

openstack-config --set /etc/nova/nova.conf  oslo_messaging_rabbit   rabbit_host  controller
openstack-config --set /etc/nova/nova.conf  oslo_messaging_rabbit   rabbit_userid  openstack
openstack-config --set /etc/nova/nova.conf  oslo_messaging_rabbit   rabbit_password  RABBIT_PASS

openstack-config --set /etc/nova/nova.conf  vnc vncserver_listen  '$my_ip'

openstack-config --set /etc/nova/nova.conf  vnc vncserver_proxyclient_address  '$my_ip'

#4.校验
md5sum /etc/nova/nova.conf
## (老师的校验值) 47ded61fdd1a79ab91bdb37ce59ef192  /etc/nova/nova.conf

#5.查看配置文件
cat -n /etc/nova/nova.conf
[root@controller ~]# cat -n /etc/nova/nova.conf
     1  [DEFAULT]
     2  enabled_apis = osapi_compute,metadata
     3  rpc_backend = rabbit
     4  auth_strategy = keystone
     5  my_ip = 10.0.0.11   #这里改成自己的IP啊!!!!不能和老师一样!
     6  use_neutron = True
     7  firewall_driver = nova.virt.firewall.NoopFirewallDriver
     8  [api_database]
     9  connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
    10  [barbican]
    11  [cache]
    12  [cells]
    13  [cinder]
    14  [conductor]
    15  [cors]
    16  [cors.subdomain]
    17  [database]
    18  connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
    19  [ephemeral_storage_encryption]
    20  [glance]
    21  api_servers = http://controller:9292
    22  [guestfs]
    23  [hyperv]
    24  [image_file_url]
    25  [ironic]
    26  [keymgr]
    27  [keystone_authtoken]
    28  auth_uri = http://controller:5000
    29  auth_url = http://controller:35357
    30  memcached_servers = controller:11211
    31  auth_type = password
    32  project_domain_name = default
    33  user_domain_name = default
    34  project_name = service
    35  username = nova
    36  password = NOVA_PASS
    37  [libvirt]
    38  [matchmaker_redis]
    39  [metrics]
    40  [neutron]
    41  [osapi_v21]
    42  [oslo_concurrency]
    43  lock_path = /var/lib/nova/tmp
    44  [oslo_messaging_amqp]
    45  [oslo_messaging_notifications]
    46  [oslo_messaging_rabbit]
    47  rabbit_host = controller
    48  rabbit_userid = openstack
    49  rabbit_password = RABBIT_PASS
    50  [oslo_middleware]
    51  [oslo_policy]
    52  [rdp]
    53  [serial_console]
    54  [spice]
    55  [ssl]
    56  [trusted_computing]
    57  [upgrade_levels]
    58  [vmware]
    59  [vnc]
    60  vncserver_listen = $my_ip
    61  vncserver_proxyclient_address = $my_ip
    62  [workarounds]
    63  [xenserver]

6.同步数据库

#忽略警告信息
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova

#验证
mysql nova -e "show tables;"
mysql nova_api -e "show tables;"

7.启动服务

1.启动服务并开机自启

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  

2. 查看端口

netstat -tunlp|grep nova
[root@controller ~]# netstat -tunlp|grep python2
tcp        0      0 0.0.0.0:9292            0.0.0.0:*               LISTEN      46644/python2
tcp        0      0 0.0.0.0:6080            0.0.0.0:*               LISTEN      58159/python2
tcp        0      0 0.0.0.0:8774            0.0.0.0:*               LISTEN      58155/python2
tcp        0      0 0.0.0.0:8775            0.0.0.0:*               LISTEN      58155/python2
tcp        0      0 0.0.0.0:9191            0.0.0.0:*               LISTEN      46645/python2

8. 验证

openstack compute service list
[root@controller ~]# openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-conductor   | controller | internal | enabled | up    | 2021-12-03T01:36:34.000000 |
|  2 | nova-consoleauth | controller | internal | enabled | up    | 2021-12-03T01:36:35.000000 |
|  3 | nova-scheduler   | controller | internal | enabled | up    | 2021-12-03T01:36:35.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+

计算节点安装

9. 安装服务

#计算节点上:
#nova-compute调用libvirtd来创建虚拟机

yum install openstack-nova-compute -y
yum install openstack-utils.noarch -y

10. 修改配置文件

#1.备份
cp /etc/nova/nova.conf{,.bak}

#2.去注释
grep '^[a-Z\[]' /etc/nova/nova.conf.bak >/etc/nova/nova.conf

#3.修改
openstack-config --set /etc/nova/nova.conf  DEFAULT enabled_apis  osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf  DEFAULT rpc_backend  rabbit
openstack-config --set /etc/nova/nova.conf  DEFAULT auth_strategy  keystone
openstack-config --set /etc/nova/nova.conf  DEFAULT my_ip  10.0.0.31    #这里改成自己的IP!
openstack-config --set /etc/nova/nova.conf  DEFAULT use_neutron  True
openstack-config --set /etc/nova/nova.conf  DEFAULT firewall_driver  nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf  glance api_servers  http://controller:9292
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  auth_uri  http://controller:5000
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  auth_url  http://controller:35357
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  memcached_servers  controller:11211
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  auth_type  password
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  project_domain_name  default
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  user_domain_name  default
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  project_name  service
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  username  nova
openstack-config --set /etc/nova/nova.conf  keystone_authtoken  password  NOVA_PASS
openstack-config --set /etc/nova/nova.conf  oslo_concurrency lock_path  /var/lib/nova/tmp
openstack-config --set /etc/nova/nova.conf  oslo_messaging_rabbit   rabbit_host  controller
openstack-config --set /etc/nova/nova.conf  oslo_messaging_rabbit   rabbit_userid  openstack
openstack-config --set /etc/nova/nova.conf  oslo_messaging_rabbit   rabbit_password  RABBIT_PASS
openstack-config --set /etc/nova/nova.conf  vnc enabled  True
openstack-config --set /etc/nova/nova.conf  vnc vncserver_listen  0.0.0.0
openstack-config --set /etc/nova/nova.conf  vnc vncserver_proxyclient_address  '$my_ip'
openstack-config --set /etc/nova/nova.conf  vnc novncproxy_base_url  http://controller:6080/vnc_auto.html

#4.校验
md5sum /etc/nova/nova.conf
#(老师的校验值)45cab6030a9ab82761e9f697d6d79e14  /etc/nova/nova.conf

#5.查看
cat -n /etc/nova/nova.conf
[root@compute1 ~]# cat -n /etc/nova/nova.conf
     1  [DEFAULT]
     2  enabled_apis = osapi_compute,metadata
     3  rpc_backend = rabbit
     4  auth_strategy = keystone
     5  my_ip = 10.0.0.31   #这里改成自己的啊!!!不能和老师的md5一样
     6  use_neutron = True
     7  firewall_driver = nova.virt.firewall.NoopFirewallDriver
     8  [api_database]
     9  [barbican]
    10  [cache]
    11  [cells]
    12  [cinder]
    13  [conductor]
    14  [cors]
    15  [cors.subdomain]
    16  [database]
    17  [ephemeral_storage_encryption]
    18  [glance]
    19  api_servers = http://controller:9292
    20  [guestfs]
    21  [hyperv]
    22  [image_file_url]
    23  [ironic]
    24  [keymgr]
    25  [keystone_authtoken]
    26  auth_uri = http://controller:5000
    27  auth_url = http://controller:35357
    28  memcached_servers = controller:11211
    29  auth_type = password
    30  project_domain_name = default
    31  user_domain_name = default
    32  project_name = service
    33  username = nova
    34  password = NOVA_PASS
    35  [libvirt]
    36  [matchmaker_redis]
    37  [metrics]
    38  [neutron]
    39  [osapi_v21]
    40  [oslo_concurrency]
    41  lock_path = /var/lib/nova/tmp
    42  [oslo_messaging_amqp]
    43  [oslo_messaging_notifications]
    44  [oslo_messaging_rabbit]
    45  rabbit_host = controller
    46  rabbit_userid = openstack
    47  rabbit_password = RABBIT_PASS
    48  [oslo_middleware]
    49  [oslo_policy]
    50  [rdp]
    51  [serial_console]
    52  [spice]
    53  [ssl]
    54  [trusted_computing]
    55  [upgrade_levels]
    56  [vmware]
    57  [vnc]
    58  enabled = True
    59  vncserver_listen = 0.0.0.0
    60  vncserver_proxyclient_address = $my_ip
    61  novncproxy_base_url = http://controller:6080/vnc_auto.html
    62  [workarounds]
    63  [xenserver]
## 重启服务
systemctl restart openstack-nova-api.service \
  openstack-nova-consoleauth.service openstack-nova-scheduler.service \
  openstack-nova-conductor.service openstack-nova-novncproxy.service

11. 启动服务

systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service

12. 最终验证

#controller
openstack compute service list
# 发现计算节点也加进来了!!!
[root@controller ~]# openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-conductor   | controller | internal | enabled | up    | 2021-12-03T01:42:07.000000 |
|  2 | nova-consoleauth | controller | internal | enabled | up    | 2021-12-03T01:42:00.000000 |
|  3 | nova-scheduler   | controller | internal | enabled | up    | 2021-12-03T01:42:00.000000 |
|  6 | nova-compute     | compute1   | nova     | enabled | up    | 2021-12-03T01:42:00.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+

最后更新: 2022-02-20 04:00:12