前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenStack集群部署—Nova控制节点集群

OpenStack集群部署—Nova控制节点集群

作者头像
院长技术
发布于 2020-06-12 14:18:55
发布于 2020-06-12 14:18:55
1.9K00
代码可运行
举报
文章被收录于专栏:院长运维开发院长运维开发
运行总次数:0
代码可运行

nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的。

用途与功能 : 1) 实例生命周期管理 2) 管理计算资源 3) 网络和认证管理 4)REST 风格的 API 5) 异步的一致性通信 6)Hypervisor 透明:支持Xen,XenServer/XCP,KVM, UML,VMware vSphere and Hyper-V

部署 创建nova相关数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在任意控制节点创建数据库,后台数据自动同步,以controller01节点为例;
# nova服务含4个数据库,统一授权到nova用户;
# placement主要涉及资源统筹,较常用的api接口是获取备选资源与claim资源等
[root@controller01 ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 68
Server version: 10.2.29-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| glance             |
| information_schema |
| keystone           |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova_cell0;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova_placement;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_placement.* TO 'nova'@'localhost' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>  GRANT ALL PRIVILEGES ON nova_placement.* TO 'nova'@'%' IDENTIFIED BY '123456';     
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> exit; 
Bye

创建计算服务凭据 创建nova用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@controller01 ~]# . admin-openrc
[root@controller01 ~]# openstack user create --domain default --password=123456 nova   
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | de3f2e2741ec4fe594df50947b15c679 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller01 ~]# openstack user create --domain default --password=123456 placement        
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | b9c6f0054cbb4f84877eb285bef57ced |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

赋权

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@controller01 ~]# openstack role add --project service --user nova admin 
[root@controller01 ~]# openstack role add --project service --user placement admin

创建nova/placement服务实体

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@controller01 ~]# openstack service create --name nova --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | f3b0b1d757c7426bb2863a9128fef978 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
[root@controller01 ~]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | 94fd6d420f4348aaad3abd682c7b473b |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+

创建nova/placement-api

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 注意--region与初始化admin用户时生成的region一致;
# api地址统一采用vip,如果public/internal/admin分别使用不同的vip,请注意区分;
# nova-api 服务类型为compute,placement-api服务类型为placement;
# nova public api
[root@controller01 ~]# openstack endpoint create --region RegionOne compute public http://controller01:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | a22329b89cba44a997b50da400c0843d |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f3b0b1d757c7426bb2863a9128fef978 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller01:8774/v2.1    |
+--------------+----------------------------------+
[root@controller01 ~]# openstack endpoint create --region RegionOne compute internal http://controller01:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 38b56b4c5bf742fbbdbcee017b8d6eb7 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f3b0b1d757c7426bb2863a9128fef978 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller01:8774/v2.1    |
+--------------+----------------------------------+

[root@controller01 ~]# openstack endpoint create --region RegionOne compute admin http://controller01:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 978179c1c3a6453da009429d6e7017d2 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f3b0b1d757c7426bb2863a9128fef978 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller01:8774/v2.1    |
+--------------+----------------------------------+
[root@controller01 ~]# openstack endpoint create --region RegionOne placement public http://controller01:8778
[root@controller01 ~]# openstack endpoint create --region RegionOne placement internal http://controller01:8778
[root@controller01 ~]# openstack endpoint create --region RegionOne placement admin http://controller01:8778

安装nova

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在全部控制节点安装nova相关服务,以controller01节点为例
[root@controller01 ~]# yum install openstack-nova-api openstack-nova-conductor \
   openstack-nova-console openstack-nova-novncproxy \
   openstack-nova-scheduler openstack-nova-placement-api -y

配置nova.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在全部控制节点操作,以controller01节点为例;
# 注意”my_ip”参数,根据节点修改;
# 注意nova.conf文件的权限:root:nova
[root@controller01 ~]# cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
[root@controller01 ~]# egrep -v "^$|^#" /etc/nova/nova.conf
[DEFAULT]
my_ip=10.21.0.36
use_neutron=true
firewall_driver=nova.virt.firewall.NoopFirewallDriver
enabled_apis=osapi_compute,metadata
osapi_compute_listen=$my_ip
osapi_compute_listen_port=8774
metadata_listen=$my_ip
metadata_listen_port=8775
# 前端采用haproxy时,服务连接rabbitmq会出现连接超时重连的情况,可通过各服务与rabbitmq的日志查看;
# # transport_url=rabbit://openstack:rabbitmq_pass@controller:5673
# # rabbitmq本身具备集群机制,官方文档建议直接连接rabbitmq集群;但采用此方式时服务启动有时会报错,原因不明;如果没有此现象,强烈建议连接rabbitmq直接对接集群而非通过前端haproxy
transport_url=rabbit://openstack:123456@controller01:5672,controller02:5672
[api]
auth_strategy=keystone
[api_database]
connection=mysql+pymysql://nova:123456@controller01/nova_api
[barbican]
[cache]
backend=oslo_cache.memcache_pool
enabled=True
memcache_servers=controller01:11211,controller02:11211
[cells]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[crypto]
[database]
connection = mysql+pymysql://nova:nova_d&OmJVoX@controller01/nova
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://controller01:9292
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken]
auth_url = http://controller:5000/v3
#auth_url = http://controller:35357
memcached_servers = controller01:11211,controller02:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
[libvirt]
[matchmaker_redis]
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
lock_path=/var/lib/nova/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_middleware]
[oslo_policy]
[pci]
[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
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled=true
server_listen=$my_ip
server_proxyclient_address=$my_ip
novncproxy_base_url=http://$my_ip:6080/vnc_auto.html
novncproxy_host=$my_ip
novncproxy_port=6080
[workarounds]
[wsgi]
[xenserver]
[xvp]

配置00-nova-placement-api.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在全部控制节点操作,以controller01节点为例;
# 注意根据不同节点修改监听地址
[root@controller01 ~]# cp /etc/httpd/conf.d/00-nova-placement-api.conf /etc/httpd/conf.d/00-nova-placement-api.conf.bak
[root@controller01 ~]# sed -i "s/Listen\ 8778/Listen\ 192.168.182.131:8778/g" /etc/httpd/conf.d/00-nova-placement-api.conf
[root@controller01 ~]# sed -i "s/*:8778/192.168.182.131:8778/g" /etc/httpd/conf.d/00-nova-placement-api.conf
[root@controller01 ~]# echo "

#Placement API
<Directory /usr/bin>
   <IfVersion >= 2.4>
      Require all granted
   </IfVersion>
   <IfVersion < 2.4>
      Order allow,deny
      Allow from all
   </IfVersion>
</Directory>
" >> /etc/httpd/conf.d/00-nova-placement-api.conf
# 重启httpd服务,启动placement-api监听端口
[root@controller01 ~]# systemctl restart httpd

同步nova相关数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 任意控制节点操作;
# 同步nova-api数据库
[root@controller01 ~]# su -s /bin/sh -c "nova-manage api_db sync" nova

# 注册cell0数据库
[root@controller01 ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

# 创建cell1 cell
[root@controller01 ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

# 同步nova数据库;
# 忽略”deprecated”信息
[root@controller01 ~]# su -s /bin/sh -c "nova-manage db sync" nova

补充:

此版本在向数据库同步导入数据表时,报错:/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) [‘use_tpool’] not supported

exception.NotSupportedWarning

解决方案如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bug:https://bugs.launchpad.net/nova/+bug/1746530
pacth:https://github.com/openstack/oslo.db/commit/c432d9e93884d6962592f6d19aaec3f8f66ac3a2

验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Verify nova cell0 and cell1 are registered correctly:

# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+
| Name  | UUID                                 |
+-------+--------------------------------------+
| cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
| cell0 | 00000000-0000-0000-0000-000000000000 |
+-------+--------------------------------------+

启动服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在全部控制节点操作,以controller01节点为例;
# 开机启动
[root@controller01 ~]# systemctl enable openstack-nova-api.service \
  openstack-nova-consoleauth.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

# 启动
[root@controller01 ~]# systemctl restart openstack-nova-api.service
[root@controller01 ~]# systemctl restart openstack-nova-consoleauth.service
[root@controller01 ~]# systemctl restart openstack-nova-scheduler.service
[root@controller01 ~]# systemctl restart openstack-nova-conductor.service
[root@controller01 ~]# systemctl restart openstack-nova-novncproxy.service

# 查看状态
[root@controller01 ~]# systemctl status openstack-nova-api.service \
openstack-nova-consoleauth.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

# 查看端口
[root@controller01 ~]# netstat -tunlp | egrep '8774|8775|8778|6080'

验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@controller01 ~]# . admin-openrc

# 列出各服务组件,查看状态;
# 也可使用命令” nova service-list”
[root@controller01 ~]# openstack compute service list
# 展示api端点
[root@controller01 ~]# openstack catalog list
# 检查cell与placement api运行正常
[root@controller01 ~]# nova-status upgrade check
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
openstack系列-nova节点部署
如果此命令返回值 zero,则您的计算节点不支持硬件加速,您必须配置 libvirt 为使用 QEMU 而不是 KVM。
cuijianzhe
2022/06/14
1.2K0
Opensack-T版脚本安装
配置 ;/etc/my.cnf.d/openstack.cnf``/etc/my.cnf.d/
误入歧途
2024/05/08
1330
OpenStack运维之安装Nova服务
  Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的。
王先森sec
2023/04/24
1.5K0
OpenStack运维之安装Nova服务
使用openstack搭建私有云[通俗易懂]
CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.el7.x86_64
全栈程序员站长
2022/09/14
39.2K0
使用openstack搭建私有云[通俗易懂]
OpenStack集群部署—Nova计算节点
初始化 在所有计算节点,关闭防火墙,selinux,配置hosts,并安装openstack客户端包
院长技术
2020/06/12
1.2K0
Centos7上部署openstack ocata配置详解
之前写过一篇《openstack mitaka 配置详解》然而最近使用发现阿里不再提供m版本的源,所以最近又开始学习ocata版本,并进行总结,写下如下文档
yaohong
2019/09/11
1.7K0
Centos7上部署openstack ocata配置详解
Ubuntu 20.04 搭建OpenStack Yoga(allinone)
很多文章都是devstack安装的allinone,我这里使用源码组件手动安装。
全栈程序员站长
2022/11/17
3.8K0
(五)OpenStack---M版---双节点搭建---Nova安装和配置
↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ 》》》》》》传送门 1.创建nova 和 nova_api数据库 2.获得 admin 凭证来获取只有管理员能执行的命令的访问权限 3.创建服务证书,用户和角色 4.创建 Compute 服务 API 端点 5.Controller节点安装软件包,并配置文件 6.同步数据库 7.启动Nova服务并设置开机启动 8.Compute节点安装计算服务并配置 9.查看计算节点是否支持虚拟硬件加速 10.计算节点启动nova服务并设置开机启动 11.验证操作(cont
指剑
2022/07/15
3330
(五)OpenStack---M版---双节点搭建---Nova安装和配置
OpenStack踩坑之路(3)
使用OpenStack Compute来托管和管理云计算系统。OpenStack Compute是基础架构即服务(IaaS)系统的重要组成部分。主要模块是用Python实现的。
没有故事的陈师傅
2019/07/28
1.6K0
OpenStack集群部署—Cinder控制节点集群
Cinder架构原理 当有用户或Nova compute提供创建卷的请求时,首先由Cinder API接收请求,然后以消息队列的形式发送给Cinder Scheduler来调用,Cinder Scheduler 侦听到来自Cinder API的消息队列后,到数据库中取查询当前存储节点的状态信息,并根据预定策略选择卷的最佳volume service节点,然后将调度的结果发布出来给volume service来调用,当volume service收到volume scheduler 的调度结果后,会去查找volume providers, 从而在特定存储节点上创建相关的卷,然后将相关结果返回给用户,同时将修改的数据写入到数据库中。
院长技术
2020/06/12
1.1K0
OpenStack集群部署—glance集群
Glance的概述 Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。
院长技术
2020/06/12
1.2K0
从零开始搭建Openstack-Pike(Ubuntu 16.04桌面版)
找一个服务器(自己的电脑也行),使用 Ubuntu-16.04.7 的镜像创建两个虚拟机。
奇门水镜
2021/12/23
2.2K1
从零开始搭建Openstack-Pike(Ubuntu 16.04桌面版)
OpenStack集群部署—Keystone集群
概述 Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证、服务访问规则和服务令牌功能的组件。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。Keystone 类似一个服务总线, 或者说是整个 Openstack 框架的注册表,OpenStack 服务通过 Keystone 来注册其 Endpoint(服务访问的URL),任何服务之间的相互调用,都需要先经过 Keystone 的身份验证,获得目标服务的 Endpoint ,然后再调用。
院长技术
2020/06/12
1.7K0
openstarck及OpenNebula对比(附一键安装openstarck脚本)
作用: OpenStack 是一个开源的云计算平台,用于构建和管理公有云和私有云环境。它提供了一组丰富的服务,包括计算、存储、网络和身份认证等,以支持虚拟机管理、对象存储、网络连接和身份验证等功能。
IT运维技术圈
2023/09/07
1.2K0
openstarck及OpenNebula对比(附一键安装openstarck脚本)
openstack安装(21)
[root@controller ~]# mysql -u root -p123456
陈不成i
2021/05/07
2550
Openstack运维常见问题记录(4)
在一台计算节点创建虚拟机,若是第一次在该节点创建次虚拟机,会先将镜像文件复制到该计算节点目录/var/lib/nova/instances/_base。长期下来,该目录会占用比较大的磁盘空间而要清理。
后端云
2020/02/12
2.5K0
OpenStack集群部署—Neutron集群
Neutron概述 ​ Neutron是 OpenStack项目中负责提供网络服务的组件,它基于软件定义网络的思想,实现了网络虚拟化下的资源管理。Neutron 的设计目标是实现“网络即服务(Networking as a Service)”,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。
院长技术
2020/06/12
1.1K0
完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建
公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务。 以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人实际经验而述,如有不当,敬请指出~ ******************************************************************************************************************************** 1 OpenSt
洗尽了浮华
2018/01/22
12.9K2
完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建
OpenStack集群部署—Neutron计算节点
部署 安装neutron-linuxbridge # 在全部计算节点安装neutro-linuxbridge服务,以compute01节点为例 [root@compute01 ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y 配置neutron.conf # 在全部计算节点操作,以computer01节点为例; # 注意”bind_host”参数,根据节点修改; # 注意neutron.conf文件的权限:root:neutron
院长技术
2020/06/12
8320
OpenStack集群部署—Cinder存储节点
部署cinder存储节点 安装cinder 存储节点为ceph的节点,一般会安装在mon所在的节点上
院长技术
2020/06/12
1.5K0
相关推荐
openstack系列-nova节点部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验