6. Nova(Rocky) - 计算服务

6.1 Nava说明

6.1.1 Nava是啥

OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台

类似 Amazon EC2 和 S3 的云基础架构服务

Nava 在 OpenStack 中提供云计算服务

6.1.2 组件说明

  • API

    • nova-api service

      接收并相应终端用户计算API调用;

      该服务支持 OpenStack 计算 API,Amazon EC2 和特殊的管理特权 API;

    • nova-api-metadata service

      接受从实例元数据发来的请求;

      该服务通常与 nova-network 服务在安装多主机模式下运行;

  • Core

    • nova-compute service

      一个守护进程,通过虚拟化层 API 接口创建和终止虚拟机实例;

      例如:XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware;

    • nova-scheduler service

      从队列中获取虚拟机请求实例,并确认由哪台计算机运行该虚拟机;

      负责虚拟机创建时候的,宿主机负载判断;

    • nova-conductor module

      协调 nova-compute 服务和 database 之间的交互数据;

      避免 nova-compute 服务直接访问云数据库;

      不要将该模块部署在 nova-compute 运行的节点上;

  • Networking

    • nova-network worker daemon

      类似于 nova-conpute 服务,接受来自队列的网络任务和操控网络;

      比如这只网卡桥接或改变iptables规则;

    • nova-consoleauth daemon

      在控制台代理提供用户授权令牌;

    • nova-novncproxy daemon

      提供了一个通过VNC连接来访问运行的虚拟机实例的代理;

      支持基于浏览器的 novnc 客户端;

    • nova-spicehtml5proxy daemon

      提供了一个通过spice连接老访问运行的虚拟机实例的代理;

      支持基于浏览器的 HTML5 客户端;

    • nova-xvpnvncproxy daemon

      提供了一个通过VNC连接来访问运行的虚拟机实例的代理;

      支持 OpenStack-Specific Java客户端;

    • nova-cert daemon

      x509 证书

  • Othor

    • nova-objectstore daemon

      一个 Amazon S3 的接口,用于将 Amazon S3 的镜像注册到 OpenStack euca2ools client 用于兼容 Amazon E2 接口的命令行工具;

    • nova client

      nova 命令行工具;

    • The queue

      在进程之间传递消息的队列;

      通常使用RabbitMQ;

    • SQL database

      保存云计算基础设置,建立和运行时的状态信息;

6.2 部署 Nova Controller

在Controller节点部署;

6.2.1 创建 Nova Controller 数据库

mysql -uroot -p

CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova';

FLUSH PRIVILEGES;

6.2.2 创建Nova Controller用户

加载 admin 凭证,来获取管理员命令的执行权限

source admin-openrc

创建 nova 用户

openstack user create --domain default --password-prompt nova
User Password:nova
Repeat User Password:nova
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | c373a827b3f243f7a7e00ff172170cb1 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

nova用户分配 admin 角色,并加入到 service 项目

openstack role add --project service --user nova admin

创建 nova 服务

openstack service create --name nova --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 4319f9d4c8b34fc09a066de1171d0c1e |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

创建 nova API 端点

openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 73777313e28a48758b50d4e279c0bb83 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 4319f9d4c8b34fc09a066de1171d0c1e |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+

openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 9b5e6398e7ff4d92aa81e48e5201a574 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 4319f9d4c8b34fc09a066de1171d0c1e |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+

openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | b1c1874e043b491ca87f98bbd103e2b2 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 4319f9d4c8b34fc09a066de1171d0c1e |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+

6.2.3 安装配置 Nova Controller

yum install -y openstack-nova-api openstack-nova-conductor \
  openstack-nova-novncproxy openstack-nova-scheduler
  
# 配置nova
vim /etc/nova/nova.conf

配置 compute 和 metadata APIs

[DEFAULT]
enabled_apis=osapi_compute,metadata

配置数据连接

[api_database]
connection = mysql+pymysql://nova:nova@controller.alec.com/nova_api

[database]
connection = mysql+pymysql://nova:nova@controller.alec.com/nova

配置RabbitMQ (如果RabbitMQ和Nova Controller不在同一节点,不能使用RabbitMQ的guest用户)

[DEFAULT]
transport_url = rabbit://alec:alec@controller:5672/

配置认证服务访问

[api]
auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova

配置管理IP

[DEFAULT]
my_ip=192.168.136.11

配置Neutron (装好Neutron后再配置,后面再说,这里先不改)

[neutron]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

配置vnc代理

[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

配置Glance API

[glance]
api_servers = http://controller:9292

配置锁路径

[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://controller:5000/v3
username = placement
password = placement

6.2.4 初始化数据库

# 初始化 nava_api 数据库
su -s /bin/sh -c "nova-manage api_db sync" nova

# 注册 cell0 数据库
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

# 创建 cell1 单元
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
fb8e991a-8c1b-4b73-9802-3fb125cf6335

# 初始化 nava 数据库
su -s /bin/sh -c "nova-manage db sync" nova

# 验证 cell0 和 cell1 是否正确注册
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+-------------------------------------+----------------------------------------------------------+
|  名称 |                 UUID                 |            Transport URL            |                        数据库连接                        |
+-------+--------------------------------------+-------------------------------------+----------------------------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 |                none:/               | mysql+pymysql://nova:****@controller.alec.com/nova_cell0 |
| cell1 | fb8e991a-8c1b-4b73-9802-3fb125cf6335 | rabbit://alec:****@controller:5672/ |    mysql+pymysql://nova:****@controller.alec.com/nova    |
+-------+--------------------------------------+-------------------------------------+----------------------------------------------------------+

6.2.5 启动服务

systemctl start openstack-nova-api
systemctl start openstack-nova-scheduler
systemctl start openstack-nova-conductor
systemctl start openstack-nova-novncproxy

systemctl enable openstack-nova-api
systemctl enable openstack-nova-scheduler
systemctl enable openstack-nova-conductor
systemctl enable openstack-nova-novncproxy

6.3 部署 Nova Compute

在Compute节点部署

6.3.1 安装配置Nova Compute

yum install -y openstack-nova-compute

# 解决qemu-kvm-rhev依赖,在/etc/yum.repos.d/Centos-7.repo1追加virt源
# 会安装qemu-kvm-ev
[virt]
name=centosvirt
baseurl=https://mirrors.aliyun.com/centos/$releasever/virt/$basearch/kvm-common/
gpgcheck=0
enabled=1

配置 compute 和 metadata APIs

[DEFAULT]
enabled_apis=osapi_compute,metadata

配置RabbitMQ (如果RabbitMQ和Nova Controller不在同一节点,不能使用RabbitMQ的guest用户)

[DEFAULT]
transport_url = rabbit://alec:alec@controller:5672/

配置认证服务访问

[api]
auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova

配置管理IP (配置为compute节点的管理网络IP)

[DEFAULT]
my_ip=192.168.136.13

配置Neutron (装好Neutron后再配置,后面再说)

[neutron]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

配置vnc代理

[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

配置Glance服务

[glance]
api_servers = http://controller:9292

配置 lock path

[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://controller:5000/v3
username = placement
password = placement

配置虚拟类型

# 确定conpute节点是否支持硬件加速
egrep -c '(vmx|svm)' /proc/cpuinfo
# 如果命令返回 1 或者 greater 可以略过这个配置;
# 如果返回 0,说明不支持硬件加速,需要配置libvirtd使用 qemu 而不是 kvm;

[libvirt]
virt_type = qemu

6.3.2 启动服务

systemctl start libvirtd openstack-nova-compute

systemctl enable libvirtd openstack-nova-compute

6.4 添加计算节点到单元数据库中(controller节点执行)

加载admin凭证

source admin-openrc 

确认数据库中计算节点的主机

openstack compute service list --service nova-compute

发现计算节点主机

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': fb8e991a-8c1b-4b73-9802-3fb125cf6335
Found 0 unmapped computes in cell: fb8e991a-8c1b-4b73-9802-3fb125cf6335

查看节点加入信息

openstack compute service list
+----+----------------+------------+----------+---------+-------+----------------------------+
| ID | Binary         | Host       | Zone     | Status  | State | Updated At                 |
+----+----------------+------------+----------+---------+-------+----------------------------+
|  4 | nova-scheduler | controller | internal | enabled | up    | 2020-07-18T18:08:30.000000 |
|  5 | nova-conductor | controller | internal | enabled | up    | 2020-07-18T18:08:33.000000 |
|  6 | nova-compute   | compute    | nova     | enabled | up    | 2020-07-18T18:08:25.000000 |
+----+----------------+------------+----------+---------+-------+----------------------------+

6.5 服务验证

加载admin凭证

source admin-openrc 

查看节点信息

openstack compute service list
+----+----------------+------------+----------+---------+-------+----------------------------+
| ID | Binary         | Host       | Zone     | Status  | State | Updated At                 |
+----+----------------+------------+----------+---------+-------+----------------------------+
|  4 | nova-scheduler | controller | internal | enabled | up    | 2020-07-18T18:08:30.000000 |
|  5 | nova-conductor | controller | internal | enabled | up    | 2020-07-18T18:08:33.000000 |
|  6 | nova-compute   | compute    | nova     | enabled | up    | 2020-07-18T18:08:25.000000 |
+----+----------------+------------+----------+---------+-------+----------------------------+

在认证服务中列出所有的API端点

+-----------+-----------+-----------------------------------------+
| Name      | Type      | Endpoints                               |
+-----------+-----------+-----------------------------------------+
| nova      | compute   | RegionOne                               |
|           |           |   public: http://controller:8774/v2.1   |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:8774/v2.1 |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:8774/v2.1    |
|           |           |                                         |
| keystone  | identity  | RegionOne                               |
|           |           |   public: http://controller:5000/v3/    |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:5000/v3/  |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:5000/v3/     |
|           |           |                                         |
| glance    | image     | RegionOne                               |
|           |           |   admin: http://controller:9292         |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:9292      |
|           |           | RegionOne                               |
|           |           |   public: http://controller:9292        |
|           |           |                                         |
| placement | placement | RegionOne                               |
|           |           |   admin: http://controller:8778         |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:8778      |
|           |           | RegionOne                               |
|           |           |   public: http://controller:8778        |
|           |           |                                         |
+-----------+-----------+-----------------------------------------+

检查 cell 和 Placement API 是否正常

nova-status upgrade check
+-------------------------------+
| 升级检查结果                  |
+-------------------------------+
| 检查: Cells v2                |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: Placement API           |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: Resource Providers      |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: Ironic Flavor Migration |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: API Service Version     |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354