openstack(五)组件部署Nova
一、环境简介:
OS:CentOS Linux release 7.7.1908 (Core)
openstack:train
环境有限当前只跑单台
mysql复用,rabbitmq和memcached
| 角色 | ip地址 | 主机名 |
|---|---|---|
| conroller1 | 192.168.39.239 | controller.local |
| conroller1 | 192.168.39.239 | controller.local |
| haproxy | 192.168.39.241 | haproxy.local vip 192.168.39.238 |
| node1 | 192.168.39.240 | node1.local |
| mysql | 192.168.39.242 | mysql.local |
nova 是 openstack 最早的组件之一,nova 分为控制节点和计算节点,计算节点通过 nova
computer 进行虚拟机创建,通过 libvirt 调用 kvm 创建虚拟机,nova 之间通信通过 rabbitMQ
队列进行通信,其组件和功能如下:
API:负责接收和响应外部请求。
Scheduler:负责调度虚拟机所在的物理机。
Conductor:计算节点访问数据库的中间件。
Consoleauth:用于控制台的授权认证。
Novncproxy:VNC 代理,用于显示虚拟机操作终端
分为安装分为计算节点和控制节点
二、计算节点部分
前提条件:在安装和配置Compute服务之前,必须创建数据库,服务凭证和API端点。
1、创建数据库:共三个数据库
MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.000 sec)MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.000 sec)MariaDB [(none)]> CREATE DATABASE nova_cell0;
Query OK, 1 row affected (0.000 sec)
2、授予对数据库的适当访问权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \-> IDENTIFIED BY 'nova123';
Query OK, 0 rows affected (0.000 sec)MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \-> IDENTIFIED BY 'nova123';
Query OK, 0 rows affected (0.000 sec)MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \-> IDENTIFIED BY 'nova123';
Query OK, 0 rows affected (0.000 sec)
3、创建nova用户:
[root@controller1 ~]# source /openstack.sh
[root@controller1 ~]# openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | dde84ed1ce684d7e958e0fb8025b004a |
| name | nova |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
4、admin向nova用户添加角色:
[root@controller1 ~]# openstack role add --project service --user nova admin
5、创建nova service实体:
[root@controller1 ~]# openstack service create --name nova \
> --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 8d4eb0b4c5af459aa19b43ada71f9ba0 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
5、创建Compute API服务端点:
[root@controller1 ~]# openstack endpoint create --region RegionOne \
> compute admin http://openstack-vip.local:8774/v2.1
[root@controller1 ~]# openstack endpoint create --region RegionOne \
> compute internal http://openstack-vip.local:8774/v2.1[root@controller1 ~]# openstack endpoint create --region RegionOne \
> compute public http://openstack-vip.local:8774/v2.1

三、安装和配置组件
1、安装软件包
root@controller1 ~]# yum install openstack-nova-api openstack-nova-conductor \
> openstack-nova-novncproxy openstack-nova-scheduler
2、编辑/etc/nova/nova.conf文件并完成以下操作:
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:openstack123@openstack-vip.local:5672/
use_neutron = true ##启用对网络服务的支持:
firewall_driver = nova.virt.firewall.NoopFirewallDriver[api_database]
connection = mysql+pymysql://nova:nova123@openstack-vip.local/nova_api[database]
connection = mysql+pymysql://nova:nova123@openstack-vip.local/nova[api]
auth_strategy = keystone[keystone_authtoken]## 配置身份服务访问:
www_authenticate_uri = http://openstack-vip.local:5000/
auth_url = http://openstack-vip.local:5000/
memcached_servers = openstack-vip.local:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova#在该[vnc]部分中,将VNC代理配置为使用控制器节点的管理接口IP地址:
[vnc]
enabled = true
server_listen = 192.168.39.209
server_proxyclient_address = 192.168.39.209#在该[glance]部分中,配置图像服务API的位置:
[glance]
api_servers = http://openstack-vip.local:9292#在该[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp#在该[placement]部分中,配置对展示位置服务的访问权限:
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://openstack-vip.local:5000/v3
username = placement
password = placement
3、初始化数据库:
[root@controller1 ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@controller1 ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
[root@controller1 ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
bcb81a83-6d7e-41d2-b277-25bba89d53c4
[root@controller1 ~]# su -s /bin/sh -c "nova-manage db sync" nova
#查看是否注册成功:
[root@controller1 ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+---------------------------------------------------+----------------------------------------------------------+----------+
| Name | UUID | Transport URL | Database Connection | Disabled |
+-------+--------------------------------------+---------------------------------------------------+----------------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 | none:/ | mysql+pymysql://nova:****@openstack-vip.local/nova_cell0 | False |
| cell1 | bcb81a83-6d7e-41d2-b277-25bba89d53c4 | rabbit://openstack:****@openstack-vip.local:5672/ | mysql+pymysql://nova:****@openstack-vip.local/nova | False |
+-------+--------------------------------------+---------------------------------------------------+----------------------------------------------------------+----------+
4、启动数据库:
systemctl enable
openstack-nova-api.service
openstack-nova-scheduler.service
openstack-nova-conductor.service
openstack-nova-novncproxy.service
systemctl start
openstack-nova-api.service
openstack-nova-scheduler.service
openstack-nova-conductor.service
openstack-nova-novncproxy.service
主要查看日志又没有报错。
[root@controller1 ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 100 *:6080 *:*
控制节点会重新监听一个端口:同样也要把他加到haproxy

四、计算节点安装:
1、安装基础环境:
yum install centos-release-openstack-train.noarch
yum install https://rdoproject.org/repos/rdo-release.rpm
yum install python-openstackclient openstack-selinux
2、安装软件包:
[root@node1 yum.repos.d]# yum install openstack-nova-compute
3、编辑/etc/nova/nova.conf文件并完成以下操作
#在此[DEFAULT]部分中,仅启用计算和元数据API:
[DEFAULT]
enabled_apis = osapi_compute,metadata#在该[DEFAULT]部分中,配置RabbitMQ消息队列访问:
[DEFAULT]
transport_url = rabbit://openstack:openstack123@openstack-vip.local
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver#在[api]和[keystone_authtoken]部分中,配置身份服务访问:
[api]
# ...
auth_strategy = keystone[keystone_authtoken]
# ...
www_authenticate_uri = http://openstack-vip.local:5000/
auth_url = http://openstack-vip.local:5000/
memcached_servers = openstack-vip.local:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova#在该[vnc]部分中,启用和配置远程控制台访问:
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = 192.168.39.240
novncproxy_base_url = http://openstack-vip.local:6080/vnc_auto.html#在该[glance]部分中,配置图像服务API的位置:
[glance]
# ...
api_servers = http://openstack-vip.local:9292#在该[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp#在该[placement]部分中,配置Placement API:
[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://openstack-vip.local:5000/v3
username = placement
password = placement
确定启动安装:
确定您的计算节点是否支持虚拟机的硬件加速:
[root@node1 yum.repos.d]# egrep -c ‘(vmx|svm)’ /proc/cpuinfo
2
计算节点也要对vip域名能解析
[root@node1 yum.repos.d]# systemctl enable libvirtd.service openstack-nova-compute.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-compute.service to /usr/lib/systemd/system/openstack-nova-compute.service.
[root@node1 yum.repos.d]# systemctl start libvirtd.service openstack-nova-compute.service
##获取管理员凭据以启用仅管理员的CLI命令,然后确认数据库中有计算主机
[root@controller1 ~]# source /openstack.sh
[root@controller1 ~]# openstack compute service list --service nova-compute
+----+--------------+-------+------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+--------------+-------+------+---------+-------+----------------------------+
| 5 | nova-compute | node1 | nova | enabled | up | 2020-04-22T03:22:39.000000 |
+----+--------------+-------+------+---------+-------+----------------------------+
2、发现主机:
[root@controller1 ~]# 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 computes from cell 'cell1': bcb81a83-6d7e-41d2-b277-25bba89d53c4
Checking host mapping for compute host 'node1': a98cb4c7-a704-475b-9ed5-c26bd2bd7058
Creating host mapping for compute host 'node1': a98cb4c7-a704-475b-9ed5-c26bd2bd7058
Found 1 unmapped computes in cell: bcb81a83-6d7e-41d2-b277-25bba89d53c4
添加新的计算节点时,必须在控制器节点上运行以注册这些新的计算节点。另外,您可以在中设置适当的间隔 :nova-manage cell_v2 discover_hosts/etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300
验证操作:
1、列出服务组件以验证每个进程的成功启动和注册:
[root@controller1 ~]# openstack compute service list+----+----------------+-------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+----------------+-------------+----------+---------+-------+----------------------------+
| 3 | nova-conductor | controller1 | internal | enabled | up | 2020-04-22T03:27:10.000000 |
| 4 | nova-scheduler | controller1 | internal | enabled | up | 2020-04-22T03:27:16.000000 |
| 5 | nova-compute | node1 | nova | enabled | up | 2020-04-22T03:27:09.000000 |
+----+----------------+-------------+----------+---------+-------+----------------------------+
2、列出身份服务中的API端点以验证与身份服务的连接性:
[root@controller1 ~]# openstack catalog list
+-----------+-----------+--------------------------------------------------+
| Name | Type | Endpoints |
+-----------+-----------+--------------------------------------------------+
| keystone | identity | RegionOne |
| | | admin: http://openstack-vip.local:5000/v3/ |
| | | RegionOne |
| | | public: http://openstack-vip.local:5000/v3/ |
| | | RegionOne |
| | | internal: http://openstack-vip.local:5000/v3/ |
| | | |
| glance | image | RegionOne |
| | | internal: http://openstack-vip.local:9292 |
| | | RegionOne |
| | | public: http://openstack-vip.local:9292 |
| | | RegionOne |
| | | admin: http://openstack-vip.local:9292 |
| | | |
| nova | compute | RegionOne |
| | | public: http://openstack-vip.local:8774/v2.1 |
| | | RegionOne |
| | | admin: http://openstack-vip.local:8774/v2.1 |
| | | RegionOne |
| | | internal: http://openstack-vip.local:8774/v2.1 |
| | | |
| placement | placement | RegionOne |
| | | internal: http://openstack-vip.local:8778 |
| | | RegionOne |
| | | admin: http://openstack-vip.local:8778 |
| | | RegionOne |
| | | public: http://openstack-vip.local:8778 |
| | | |
+-----------+-----------+--------------------------------------------------+
3、在图像服务中列出图像以验证与图像服务的连接性
[root@controller1 ~]# openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| a902089f-2a05-416b-9e38-15e976e13134 | cirros | active |
| 04724f5c-ea06-4fa7-88a3-431422bd2097 | cirros | queued |
| 5e8a544f-8bbb-4545-b73b-334aea515eba | cirros | queued |
| 963436bf-bdb7-44a4-a689-5b64e270cb1f | cirros | queued |
| f827705a-432c-4ff8-bed4-ec5c0081a82c | cirros | queued |
| ebfd2353-e10d-4eec-876a-927eb45cb6f8 | cirros | queued |
+--------------------------------------+--------+--------+
4、检查单元格和展示位置API是否正常运行,以及其他必要的前提条件是否到位:
[root@controller1 ~]# nova-status upgrade check
+--------------------------------+
| Upgrade Check Results |
+--------------------------------+
| Check: Cells v2 |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Placement API |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Ironic Flavor Migration |
| Result: Success |
| Details: None |
+--------------------------------+
| Check: Cinder API |
| Result: Success |
| Details: None |
+--------------------------------+
5、nova service-list
+--------------------------------------+----------------+-------------+----------+---------+-------+----------------------------+-----------------+-------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | Forced down |
+--------------------------------------+----------------+-------------+----------+---------+-------+----------------------------+-----------------+-------------+
| b004f15a-d72a-4173-b4e9-56ffe363e298 | nova-conductor | controller1 | internal | enabled | up | 2020-04-22T03:34:20.000000 | - | False |
| 23204776-16a0-4900-b099-c33a1f35bb6a | nova-scheduler | controller1 | internal | enabled | up | 2020-04-22T03:34:26.000000 | - | False |
| 637d878c-2890-42e5-a326-3b2e8e4ccb90 | nova-compute | node1 | nova | enabled | up | 2020-04-22T03:34:19.000000 | - | False |
+--------------------------------------+----------------+-------------+----------+---------+-------+----------------------------+-----------------+-------------+
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
