这个部分将描述如何在控制节点上安装和配置 Compute 服务,即 nova。
一、前提条件
在你安装和配置计算服务前,你必须创建数据库,服务凭证和API端点。
1.完成下面的步骤以创建数据库:
[root@Controller-Node ~]# mysql -uroot -p123456 MariaDB [(none)]> CREATE DATABASE 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)]> CREATE DATABASE nova_api; 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)]> CREATE DATABASE nova_cell0; 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'; MariaDB [(none)]> exit
2.获得 admin 凭证来获取只有管理员能执行命令的访问权限
[root@Controller-Node ~]# source admin-openrc.sh
3.要创建服务证书,完成这些步骤:
1.> 创建 nova 用户,设置密码为nova:
$openstack user create --domain default --password-prompt nova 执行如下: [root@Controller-Node ~]# openstack user create --domain default --password-prompt nova User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | c7fe14104af14064a862d45a8331837b | | name | nova | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ [root@Controller-Node ~]#
2.>添加admin 角色到 nova 用户:
[root@Controller-Node ~]# openstack role add --project service --user nova admin
3.>创建 nova 服务实体:
openstack service create --name nova \ --description "OpenStack Compute" compute 执行如下: [root@Controller-Node ~]# openstack service create --name nova \ > --description "OpenStack Compute" compute +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Compute | | enabled | True | | id | deec4fb34eb64f8f968d304a0bb85bd4 | | name | nova | | type | compute | +-------------+----------------------------------+ [root@Controller-Node ~]#
4.>创建计算服务API端点:
$ openstack endpoint create --region RegionOne \ compute public http://10.20.9.13:8774/v2/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ compute internal http://10.20.9.13:8774/v2/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ compute admin http://10.20.9.13:8774/v2/%\(tenant_id\)s 执行如下: [root@Controller-Node ~]# openstack endpoint create --region RegionOne \ > compute public http://10.20.9.13:8774/v2/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 1ba627fcb3d145569fbb83c32c9c1e16 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | deec4fb34eb64f8f968d304a0bb85bd4 | | service_name | nova | | service_type | compute | | url | http://10.20.9.13:8774/v2/%(tenant_id)s | +--------------+-----------------------------------------+ [root@Controller-Node ~]# openstack endpoint create --region RegionOne \ > compute internal http://10.20.9.13:8774/v2/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | efd5e04872954088b09f9474da5c46d5 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | deec4fb34eb64f8f968d304a0bb85bd4 | | service_name | nova | | service_type | compute | | url | http://10.20.9.13:8774/v2/%(tenant_id)s | +--------------+-----------------------------------------+ [root@Controller-Node ~]# openstack endpoint create --region RegionOne \ > compute admin http://10.20.9.13:8774/v2/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 0f21127572b94416bc6374edf6131c4b | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | deec4fb34eb64f8f968d304a0bb85bd4 | | service_name | nova | | service_type | compute | | url | http://10.20.9.13:8774/v2/%(tenant_id)s | +--------------+-----------------------------------------+ [root@Controller-Node ~]#
5.新建另一个用户,密码设为nova
[root@Controller-Node ~]# openstack user create --domain default --password-prompt placement User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | ab033f42e4064f898886447d07891d22 | | name | placement | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+
加入管理员组
[root@Controller-Node ~]# openstack role add --project service --user placement admin
6.在服务目录中创建Placement API条目
[root@Controller-Node ~]# openstack service create --name placement --description "Placement API" placement +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Placement API | | enabled | True | | id | cccfe79b58c346928b1c56c38fb3d4b3 | | name | placement | | type | placement | +-------------+----------------------------------+ [root@Controller-Node ~]#
7.创建Placement API服务端点:
[root@Controller-Node ~]# openstack endpoint create --region RegionOne placement public http://10.20.9.13:8778 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | d80c7e76ff8f4a69a36c0f9cd891f734 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | cccfe79b58c346928b1c56c38fb3d4b3 | | service_name | placement | | service_type | placement | | url | http://10.20.9.13:8778 | +--------------+----------------------------------+ [root@Controller-Node ~]# openstack endpoint create --region RegionOne placement internal http://10.20.9.13:8778 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | baafdcbb3cb2460e89b3dd62fbeeb9fc | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | cccfe79b58c346928b1c56c38fb3d4b3 | | service_name | placement | | service_type | placement | | url | http://10.20.9.13:8778 | +--------------+----------------------------------+ [root@Controller-Node ~]# openstack endpoint create --region RegionOne placement admin http://10.20.9.13:8778 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 3c621088b21247679ce071bab4296dd1 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | cccfe79b58c346928b1c56c38fb3d4b3 | | service_name | placement | | service_type | placement | | url | http://10.20.9.13:8778 | +--------------+----------------------------------+ [root@Controller-Node ~]#
查看catalog列表
[root@Controller-Node ~]# openstack catalog list +-----------+-----------+------------------------------------------------------------------------+ | Name | Type | Endpoints | +-----------+-----------+------------------------------------------------------------------------+ | nova | compute | RegionOne | | | | internal: http://10.20.9.13:8774/v2/6effb77cf0ba48a7a65a2c2235bbb726 | | | | RegionOne | | | | public: http://10.20.9.13:8774/v2/6effb77cf0ba48a7a65a2c2235bbb726 | | | | RegionOne | | | | admin: http://10.20.9.13:8774/v2/6effb77cf0ba48a7a65a2c2235bbb726 | | | | | | keystone | identity | RegionOne | | | | public: http://10.20.9.13:5000/v3/ | | | | RegionOne | | | | admin: http://10.20.9.13:35357/v3/ | | | | RegionOne | | | | internal: http://10.20.9.13:5000/v3/ | | | | | | placement | placement | RegionOne | | | | public: http://10.20.9.13:8778 | | | | RegionOne | | | | internal: http://10.20.9.13:8778 | | | | RegionOne | | | | admin: http://10.20.9.13:8778 | | | | | | glance | image | RegionOne | | | | admin: http://10.20.9.13:9292 | | | | RegionOne | | | | public: http://10.20.9.13:9292 | | | | RegionOne | | | | internal: http://10.20.9.13:9292 | | | | | +-----------+-----------+------------------------------------------------------------------------+ [root@Controller-Node ~]#
二、安装并配置组件
1.安装软件包:
$ yum install openstack-nova-api openstack-nova-cert \ openstack-nova-conductor openstack-nova-console \ openstack-nova-novncproxy openstack-nova-scheduler \ python-novaclient openstack-nova-placement-api
2.编辑/etc/nova/nova.conf文件并完成下面的操作:
1.> 在 [DEFAULT] 选项中,开启计算和元数据API
[DEFAULT]
# ...
enabled_apis=osapi_compute,metadata
2.> 在 [DEFAULT] 选项中,配置消息队列连接。
[DEFAULT] # ... transport_url=rabbit://openstack:openstack@10.20.9.13
3.> 在[DEFAULT]选项中,配置my_ip
[DEFAULT] # ... my_ip=10.20.9.13
4.> 在 [DEFAULT] 选项中开启对网络服务的支持
[DEFAULT] # ... use_neutron=True firewall_driver=nova.virt.firewall.NoopFirewallDriver
5.> 在 [api_database] 和 [database] 选项中,配置数据库连接
[api_database] # ... connection = mysql://nova:nova@10.20.9.13/nova_api [database] # ... connection = mysql://nova:nova@10.20.9.13/nova
6.> 在 [api] 和 [keystone_authtoken] 选项中配置如下
[api] # ... auth_strategy=keystone [keystone_authtoken] # ... auth_uri=http://10.20.9.13:5000 auth_url=http://10.20.9.13:35357 memcached_servers=10.20.9.13:11211 auth_type=password project_domain_name=default user_domain_name=default project_name=service username=nova password=nova
7.> 在 [vnc] 选项中,配置VNC代理
[vnc] # ... enabled=true vncserver_listen=$my_ip vncserver_proxyclient_address=$my_ip
8.> 在 [glance] 选项中,配置镜像服务API的位置。
[glance] # ... api_servers=http://10.20.9.13:9292
9.> 在 [oslo_concurrency] 选项中,配置锁定路径
[oslo_concurrency] # ... lock_path=/var/lib/nova/tmp
10.> 在 [placement] 选项中配置
[placement] # ... os_region_name=RegionOne project_domain_name=Default project_name=service auth_type=password user_domain_name=Default auth_url=http://10.20.9.13:35357/v3 username=placement password=nova
3.设置apache,在文件中追加如下内容,并重新启动服务
vim /etc/httpd/conf.d/00-nova-placement-api.conf <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory>
[root@Controller-Node ~]# systemctl restart httpd
4.填充nova-api数据库:
[root@Controller-Node ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
5.注册cell0数据库:
[root@Controller-Node ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
6.创建cell1单元格:
[root@Controller-Node ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova c57ab09d-7da7-4abb-af21-448b62548b43 [root@Controller-Node ~]#
7.填充nova数据库:
[root@Controller-Node ~]# su -s /bin/sh -c "nova-manage db sync" nova
8.验证nova cell0和cell1是否正确注册:
[root@Controller-Node ~]# nova-manage cell_v2 list_cells +-------+--------------------------------------+ | Name | UUID | +-------+--------------------------------------+ | cell0 | 00000000-0000-0000-0000-000000000000 | | cell1 | c57ab09d-7da7-4abb-af21-448b62548b43 | +-------+--------------------------------------+
9.完成安装,开启计算服务并设置开机启动;
$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 $systemctl status openstack-nova-api.service \ openstack-nova-consoleauth.service \ openstack-nova-scheduler.service \ openstack-nova-conductor.service \ openstack-nova-novncproxy.service
10.获取admin权限,并验证每个服务组件都是否成功运行
[root@Controller-Node ~]# source admin-openrc.sh [root@Controller-Node ~]# [root@Controller-Node ~]# openstack host list +-----------------+-------------+----------+ | Host Name | Service | Zone | +-----------------+-------------+----------+ | Controller-Node | consoleauth | internal | | Controller-Node | conductor | internal | | Controller-Node | scheduler | internal | +-----------------+-------------+----------+ [root@Controller-Node ~]# nova service-list +----+------------------+-----------------+----------+---------+-------+----------------------------+-----------------+ | Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | +----+------------------+-----------------+----------+---------+-------+----------------------------+-----------------+ | 1 | nova-consoleauth | Controller-Node | internal | enabled | up | 2018-10-10T09:06:01.000000 | - | | 2 | nova-conductor | Controller-Node | internal | enabled | up | 2018-10-10T09:06:02.000000 | - | | 3 | nova-scheduler | Controller-Node | internal | enabled | up | 2018-10-10T09:06:01.000000 | - | +----+------------------+-----------------+----------+---------+-------+----------------------------+-----------------+ [root@Controller-Node ~]# openstack endpoint list +----------------------------------+-----------+--------------+--------------+---------+-----------+-----------------------------------------+ | ID | Region | Service Name | Service Type | Enabled | Interface | URL | +----------------------------------+-----------+--------------+--------------+---------+-----------+-----------------------------------------+ | 168ce73846e84b51aceb1d9fc043786a | RegionOne | nova | compute | True | internal | http://10.20.9.13:8774/v2/%(tenant_id)s | | 19df26f63e994c8ba0c81fa263dc60cd | RegionOne | keystone | identity | True | public | http://10.20.9.13:5000/v3/ | | 3ca232fd709f4e95b5a74ea074c5d341 | RegionOne | glance | image | True | admin | http://10.20.9.13:9292 | | 47a41ccb37d94396bf1878b0b4bf4910 | RegionOne | glance | image | True | public | http://10.20.9.13:9292 | | 5c1683647fe64bd19ddeeca2f44b4d29 | RegionOne | keystone | identity | True | admin | http://10.20.9.13:35357/v3/ | | 67a2fddef3b64789a51d4f74183f3715 | RegionOne | nova | compute | True | public | http://10.20.9.13:8774/v2/%(tenant_id)s | | 7d6ca6665b1b46e195aef4b0e264daf6 | RegionOne | keystone | identity | True | internal | http://10.20.9.13:5000/v3/ | | c675270a56b545af97408788c63b89fd | RegionOne | glance | image | True | internal | http://10.20.9.13:9292 | | d04b4f1de2ff4e79ad97b0a18bee46da | RegionOne | nova | compute | True | admin | http://10.20.9.13:8774/v2/%(tenant_id)s | +----------------------------------+-----------+--------------+--------------+---------+-----------+-----------------------------------------+ [root@Controller-Node ~]#
三、在计算节点安装配置nova服务(10.20.9.14主机)
1.安装nova-compute软件包
[root@Compute-Node ~]# yum install openstack-nova-compute
2. 编辑/etc/nova/nova.conf文件.
1.> 在[DEFAULT]选项中,开启计算和元数据API
[DEFAULT]
#...
enabled_apis=osapi_compute,metadata
2.> 在[DEFAULT]选项中,配置消息队列权限
[DEFAULT] #... transport_url=rabbit://openstack:openstack@10.20.9.13
3.> 在[DEFAULT]选项中,配置my_ip参数,这个是本机IP地址
[DEFAULT] #... my_ip=10.20.9.14
4.> 在 [DEFAULT] 选项中,开启网络服务支持
[DEFAULT] #... use_neutron=True firewall_driver=nova.virt.firewall.NoopFirewallDriver
5.> 在 [api] 和 [keystone_authtoken] 选项中,配置认证服务权限
[api] #... auth_strategy=keystone [keystone_authtoken] #... auth_uri=http://10.20.9.13:5000 auth_url=http://10.20.9.13:35357 memcached_servers=10.20.9.13:11211 auth_type=password project_domain_name=default user_domain_name=default project_name=service username=nova password=nova
6.> 在 [vnc] 选项中,开启并配置远程控制台权限
[vnc] #... enabled=True vncserver_listen=0.0.0.0 vncserver_proxyclient_address=$my_ip novncproxy_base_url=http://10.20.9.13:6080/vnc_auto.html
7.> 在 [glance] 选项中,配置镜像服务API地址
[glance] #... api_servers=http://10.20.9.13:9292
8.> 在 [oslo_concurrency] 选项,配置锁定路径
[oslo_concurrency] #... lock_path=/var/lib/nova/tmp
9.> 在 [placement] 段添加如下参数.
[placement] #... os_region_name=RegionOne project_domain_name=Default project_name=service auth_type=password user_domain_name=Default auth_url=http://10.20.9.13:35357/v3 username=placement password=nova
3. 检查是否需要硬件加速
[root@Compute-Node ~]# egrep -c '(vmx|svm)' /proc/cpuinfo 0 [root@Compute-Node ~]#
如果为0则需要修改 #vi /etc/nova/nova.conf文件,[libvirt]段添加如下内容.
[libvirt]
# ...
virt_type=qemu
4.启动服务,并查看服务状态
# systemctl enable libvirtd.service openstack-nova-compute.service # systemctl start libvirtd.service openstack-nova-compute.service # systemctl status libvirtd.service openstack-nova-compute.service
三、验证操作,在主控节点(10.20.9.13)上面操作.
1.获取admin权限
[root@Controller-Node ~]# source admin-openrc.sh
2.将计算节点添加到单元数据库,在控制节点上进行操作.
[root@Controller-Node ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova Found 2 cell mappings. Skipping cell0 since it does not contain hosts. Getting compute nodes from cell 'cell1': c57ab09d-7da7-4abb-af21-448b62548b43 Found 1 computes in cell: c57ab09d-7da7-4abb-af21-448b62548b43 Checking host mapping for compute host 'Compute-Node': 911f9117-ec3f-43fd-930e-b8571f04400f Creating host mapping for compute host 'Compute-Node': 911f9117-ec3f-43fd-930e-b8571f04400f [root@Controller-Node ~]#
3.查看 compute 节点
[root@Controller-Node ~]# openstack compute service list +----+------------------+-----------------+----------+---------+-------+----------------------------+ | ID | Binary | Host | Zone | Status | State | Updated At | +----+------------------+-----------------+----------+---------+-------+----------------------------+ | 1 | nova-consoleauth | Controller-Node | internal | enabled | up | 2018-10-11T02:59:37.000000 | | 2 | nova-conductor | Controller-Node | internal | enabled | up | 2018-10-11T02:59:35.000000 | | 3 | nova-scheduler | Controller-Node | internal | enabled | up | 2018-10-11T02:59:31.000000 | | 6 | nova-compute | Compute-Node | nova | enabled | up | 2018-10-11T02:59:38.000000 | +----+------------------+-----------------+----------+---------+-------+----------------------------+ [root@Controller-Node ~]#
4.查看catalog
[root@Controller-Node ~]# openstack catalog list +-----------+-----------+------------------------------------------------------------------------+ | Name | Type | Endpoints | +-----------+-----------+------------------------------------------------------------------------+ | | | | | nova | compute | RegionOne | | | | internal: http://10.20.9.13:8774/v2/6effb77cf0ba48a7a65a2c2235bbb726 | | | | RegionOne | | | | public: http://10.20.9.13:8774/v2/6effb77cf0ba48a7a65a2c2235bbb726 | | | | RegionOne | | | | admin: http://10.20.9.13:8774/v2/6effb77cf0ba48a7a65a2c2235bbb726 | | | | | | keystone | identity | RegionOne | | | | public: http://10.20.9.13:5000/v3/ | | | | RegionOne | | | | admin: http://10.20.9.13:35357/v3/ | | | | RegionOne | | | | internal: http://10.20.9.13:5000/v3/ | | | | | | placement | placement | RegionOne | | | | admin: http://10.20.9.13:8778 | | | | RegionOne | | | | internal: http://10.20.9.13:8778 | | | | RegionOne | | | | public: http://10.20.9.13:8778 | | | | | | glance | image | RegionOne | | | | admin: http://10.20.9.13:9292 | | | | RegionOne | | | | public: http://10.20.9.13:9292 | | | | RegionOne | | | | internal: http://10.20.9.13:9292 | | | | | +-----------+-----------+------------------------------------------------------------------------+ [root@Controller-Node ~]#
5.列出Image服务中的图像以验证与Image服务的连接性:
[root@Controller-Node ~]# openstack image list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | f7041b87-bd78-475c-a877-919543886dc0 | cirros | active | +--------------------------------------+--------+--------+ [root@Controller-Node ~]#
6.检查单元格和放置API正在成功工作:
[root@Controller-Node ~]# nova-status upgrade check +---------------------------+ | Upgrade Check Results | +---------------------------+ | Check: Cells v2 | | Result: Success | | Details: None | +---------------------------+ | Check: Placement API | | Result: Success | | Details: None | +---------------------------+ | Check: Resource Providers | | Result: Success | | Details: None | +---------------------------+ [root@Controller-Node ~]#
至此,主控和计算节点的nova服务都已经部署完成,两者的互通都没问题..
参考文档:https://www.cnblogs.com/liang2580/articles/8157963.html