openstack 管理三十一 - rpm 方式部署 openstack [nova]

本文档详述了使用RPM包部署OpenStack组件Nova的步骤,包括配置vnc服务、keystone验证、连接glance、rabbitmq和neutron,设置虚拟机超配,启用metadata-proxy,支持ovs网络插件,数据库初始化,以及启动和验证所有服务的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用

1 响应云主机请求, 并把连接调度至对应的 compute 节点
2 提供 console 认证服务
3 提供 vnc 访问云主机功能

软件安装

# yum install -y openstack-nova-api openstack-nova-compute openstack-nova-conductor openstack-nova-scheduler python-cinderclient openstack-utils openstack-nova-novncproxy  openstack-nova-console

配置 vnc 服务

# openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_base_url  http://<你的ip>:6080/vnc_auto.html
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen <你的ip>
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address <你的ip>
# openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled true
# openstack-config --set /etc/nova/nova.conf DEFAULTvnc_keymap en-us
# openstack-config --set /etc/nova/nova.conf DEFAULT vpvncproxy_port 6081
# openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_host <你的ip>
# openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_port 6080

配置 keystone 验证

# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host  <keystone地址>
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http:// <keystone地址>:5000/
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken auth_host  <keystone地址>
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_tenant_name service
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_user nova
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_password nova
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken paste.filter_factory keystoneclient.middleware.auth_token:filter_factory

nova 连接 glance

# openstack-config --set /etc/nova/nova.conf DEFAULT glance_host <glance_地址>
# openstack-config --set /etc/nova/nova.conf DEFAULT glance_port 9292
# openstack-config --set /etc/nova/nova.conf DEFAULT glance_protocol http
# openstack-config --set /etc/nova/nova.conf DEFAULT glance_api_servers <glance_地址>:9292
# openstack-config --set /etc/nova/nova.conf DEFAULT image_service nova.image.glance.GlanceImageService
# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.neutronv2.api.API

nova 连接 rabbitmq

# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend nova.openstack.common.rpc.impl_kombu
# openstack-config --set /etc/nova/nova.conf DEFAULT rabbit_host <mq_地址>
# openstack-config --set /etc/nova/nova.conf DEFAULT rabbit_port 5672
# openstack-config --set /etc/nova/nova.conf DEFAULT rabbit_userid nova
# openstack-config --set /etc/nova/nova.conf DEFAULT rabbit_password <nova_mq_密码>
# openstack-config --set /etc/nova/nova.conf DEFAULT rabbit_virtual_host /

设定虚拟云主机超配

# openstack-config --set /etc/nova/nova.conf DEFAULT cpu_allocation_ratio 5.0
# openstack-config --set /etc/nova/nova.conf DEFAULT ram_allocation_ratio 1.0
# openstack-config --set /etc/nova/nova.conf DEFAULT reserved_host_memory_mb 1024
# openstack-config --set /etc/nova/nova.conf DEFAULT reserved_host_disk_mb 0

这里 cpu_allocation_ratio 为 CPU 的超配, 如果 24 核,会虚拟为 24 X 5 = 120 核
这里 ram_allocation_ratio 为内存超配,不建议超配内存,因此设定为 1.0

nova 节点启用 metadata-proxy 连接 metadata

# openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis ec2,osapi_compute,metadata
# openstack-config --set /etc/nova/nova.conf DEFAULT metadata_listen <本地地址>
# openstack-config --set /etc/nova/nova.conf DEFAULT metadata_workers 24
# openstack-config --set /etc/nova/nova.conf DEFAULT rootwrap_config /etc/nova/rootwrap.conf
# openstack-config --set /etc/nova/nova.conf DEFAULT use_forwarded_for False
# openstack-config --set /etc/nova/nova.conf DEFAULT service_neutron_metadata_proxy True
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_metadata_proxy_shared_secret 744ee65672684281
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_default_tenant_id default
# openstack-config --set /etc/nova/nova.conf DEFAULT metadata_host <本地地址>

nova 基本配置

# openstack-config --set /etc/nova/nova.conf DEFAULT  osapi_compute_listen <你IP>
# openstack-config --set /etc/nova/nova.conf DEFAULT  osapi_compute_listen_port 8774
# openstack-config --set /etc/nova/nova.conf DEFAULT  osapi_compute_workers   5
# openstack-config --set /etc/nova/nova.conf DEFAULT service_down_time 120
# openstack-config --set /etc/nova/nova.conf DEFAULT osapi_max_limit 10000
# openstack-config --set /etc/nova/nova.conf DEFAULT resize_confirm_window 10
# openstack-config --set /etc/nova/nova.conf DEFAULT reserved_host_disk_mb 10240
# openstack-config --set /etc/nova/nova.conf DEFAULT reserved_host_memory_mb 2048
# openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_default_filters AggregateInstanceExtraSpecsFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,CoreFilter,DiskFilter
# openstack-config --set /etc/nova/nova.conf DEFAULT vcpu_pin_set 2-$
# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
# openstack-config --set /etc/nova/nova.conf DEFAULT  dhcp_domain "''"
# openstack-config --set /etc/nova/nova.conf DEFAULT  max_pool_size 100
# openstack-config --set /etc/nova/nova.conf DEFAULT  max_overflow 60
# openstack-config --set /etc/nova/nova.conf DEFAULT connection_debug 100

# openstack-config --set /etc/nova/nova.conf DEFAULT 

nova 连接 neutron

# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.neutronv2.api.API
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_url http://<neutron_地址>:9696/
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_username neutron
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_password neutron
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_auth_url http://<keystone_地址>:35357/v2.0
# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api neutron
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_url http://<neutron_daddr>:9696
# openstack-config --set /etc/nova/nova.conf DEFAULT neutron_ovs_bridge  br-int
# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_drivernova.virt.firewall.NoopFirewallDriver

指定 libvirt 连接驱动

openstack-config --set /etc/nova/nova.conf libvirt vif_driver nova.virt.libvirt.vif.LibvirtGenericVIFDriver

支持 ovs 网络 plugin

openstack-config --set /etc/nova/nova.conf libvirt vif_driver nova.virt.libvirt.vif.LibvirtGenericVIFDriver
openstack-config --set /etc/nova/nova.conf libvirt vif_driver nova.virt.xenapi.vif.XenAPIBridgeDriver

nova 连接 db

openstack-config --set /etc/nova/nova.conf DEFAULT sql_connection mysql://nova:openstack@<db_地址>/nova

初始化数据

当数据库配置成功, 则下面命令能够在数据库上产生 108 个表

sudo -u nova nova-manage db sync

服务启动

# service openstack-nova-consoleauth restart
# service openstack-nova-novncproxy restart
# service messagebus restart
# service libvirtd restart
# service openstack-nova-api restart
# service openstack-nova-scheduler restart
# service openstack-nova-conductor restart

nova flavor (vm 规格定义)

默认状态会有下面几种 flavor

# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

如果不符合要求,可以自己重新创建一个 vm 规格模板

nova flavor-delete 1
nova flavor-delete 2
nova flavor-delete 3
nova flavor-delete 4
nova flavor-delete 5

创建自定义 flavor 方法 ( 8核 16G, 40GB 硬盘) ( 4C 8G 40GB 硬盘) exxample )

# nova flavor-create --swap 2 --is-public true 4c-8g 236a0fbf-7002-4049-8e89-aa25e16371ea 8192 40 4
+--------------------------------------+-------+-----------+------+-----------+------+-------+-------------+-----------+
| ID                                   | Name  | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+--------------------------------------+-------+-----------+------+-----------+------+-------+-------------+-----------+
| 236a0fbf-7002-4049-8e89-aa25e16371ea | 4c-8g | 8192      | 40   | 0         | 2    | 4     | 1.0         | True      |
+--------------------------------------+-------+-----------+------+-----------+------+-------+-------------+-----------+
# nova flavor-create --swap 2 --is-public true 8c-16g a4d57d25-71f0-4f52-b255-20571012689a 16384 40 8
+--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+
| ID                                   | Name   | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+
| a4d57d25-71f0-4f52-b255-20571012689a | 8c-16g | 16384     | 40   | 0         | 2    | 8     | 1.0         | True      |
+--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+

查询当前 flavor

# nova flavor-list
+--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+
| ID                                   | Name   | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+
| 236a0fbf-7002-4049-8e89-aa25e16371ea | 4c-8g  | 8192      | 40   | 0         | 2    | 4     | 1.0         | True      |
| a4d57d25-71f0-4f52-b255-20571012689a | 8c-16g | 16384     | 40   | 0         | 2    | 8     | 1.0         | True      |
+--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+

创建防火墙

[root@hh-yun-compute-130025 ~(keystone_admin)]# nova agent-list
+----------+------------+----+--------------+---------+---------+-----+
| Agent_id | Hypervisor | OS | Architecture | Version | Md5hash | Url |
+----------+------------+----+--------------+---------+---------+-----+
+----------+------------+----+--------------+---------+---------+-----+

检测服务状态

[root@hh-yun-compute-130025 ~(keystone_admin)]# nova service-list
+------------------+-----------------------------------+----------+---------+-------+----------------------------+-----------------+
| Binary           | Host                              | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+------------------+-----------------------------------+----------+---------+-------+----------------------------+-----------------+
| nova-consoleauth | hh-yun-compute-130030.vclound.com | internal | enabled | up    | 2014-10-11T02:36:15.000000 | -               |
| nova-scheduler   | hh-yun-compute-130030.vclound.com | internal | enabled | up    | 2014-10-11T02:36:16.000000 | -               |
| nova-conductor   | hh-yun-compute-130030.vclound.com | internal | enabled | up    | 2014-10-11T02:36:16.000000 | -               |
| nova-compute     | hh-yun-compute-130030.vclound.com | nova     | disabled| down  | 2014-10-11T02:36:16.000000 | -               |
+------------------+-----------------------------------+----------+---------+-------+----------------------------+-----------------+

检测网络

[root@hh-yun-compute-130025 ~(keystone_admin)]# nova network-list
+--------------------------------------+---------+------+
| ID                                   | Label   | Cidr |
+--------------------------------------+---------+------+
| b26b81fc-bda9-4882-950c-614e9546bcd1 | ext_net | -    |
+--------------------------------------+---------+------+

检测安全组

[root@hh-yun-compute-130025 ~(keystone_admin)]# nova secgroup-list
+--------------------------------------+---------+-------------+
| Id                                   | Name    | Description |
+--------------------------------------+---------+-------------+
| 9caa0d6f-c063-46f9-ab3b-845962ac836b | default | default     |
+--------------------------------------+---------+-------------+

检测规则

[root@hh-yun-compute-130025 ~(keystone_admin)]# nova secgroup-list-rules default
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
|             |           |         |           | default      |
|             |           |         |           | default      |
+-------------+-----------+---------+-----------+--------------+

为 default 安全组加添规则

# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 > /dev/null
# nova secgroup-add-rule default tcp  22 22 0.0.0.0/0 > /dev/null
# nova secgroup-add-rule default udp 53 53 0.0.0.0/0 > /dev/null

验证

[root@hh-yun-compute-130025 ~(keystone_admin)]# nova secgroup-list-rules default
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
|             |           |         |           | default      |
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
| udp         | 53        | 53      | 0.0.0.0/0 |              |
|             |           |         |           | default      |
+-------------+-----------+---------+-----------+--------------+

创建新的安全组

# nova secgroup-create terry_test_rule "allow ping and ssh" > /dev/null
# nova secgroup-add-rule terry_test_rule icmp -1 -1 0.0.0.0/0 > /dev/null
# nova secgroup-add-rule terry_test_rule tcp  22 22 0.0.0.0/0 > /dev/null
# nova secgroup-add-rule terry_test_rule udp 53 53 0.0.0.0/0 > /dev/null

验证

[root@hh-yun-compute-130025 ~(keystone_admin)]# nova secgroup-list-rules terry_test_rule
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
| udp         | 53        | 53      | 0.0.0.0/0 |              |
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

故障提示

openstack-nova-novncproxy 无法启动

# systemctl status openstack-nova-novncproxy.service  -l
● openstack-nova-novncproxy.service - OpenStack Nova NoVNC Proxy Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-novncproxy.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2025-02-12 15:21:08 CST; 1min 33s ago
  Process: 20168 ExecStart=/usr/bin/nova-novncproxy --web /usr/share/novnc/ $OPTIONS (code=exited, status=1/FAILURE)
 Main PID: 20168 (code=exited, status=1/FAILURE)

Feb 12 15:21:08 ns-yun-020038.vclound.com nova-novncproxy[20168]: File "/usr/lib/python2.7/site-packages/nova/cmd/novncproxy.py", line 87, in main
Feb 12 15:21:08 ns-yun-020038.vclound.com nova-novncproxy[20168]: wrap_cmd=None)
Feb 12 15:21:08 ns-yun-020038.vclound.com nova-novncproxy[20168]: File "/usr/lib/python2.7/site-packages/nova/console/websocketproxy.py", line 38, in __init__
Feb 12 15:21:08 ns-yun-020038.vclound.com nova-novncproxy[20168]: ssl_target=None, *args, **kwargs)
Feb 12 15:21:08 ns-yun-020038.vclound.com nova-novncproxy[20168]: File "/usr/lib/python2.7/site-packages/websockify/websocketproxy.py", line 231, in __init__
Feb 12 15:21:08 ns-yun-020038.vclound.com nova-novncproxy[20168]: websocket.WebSocketServer.__init__(self, RequestHandlerClass, *args, **kwargs)    <-- 参考这里
Feb 12 15:21:08 ns-yun-020038.vclound.com nova-novncproxy[20168]: TypeError: __init__() got an unexpected keyword argument 'no_parent'
Feb 12 15:21:08 ns-yun-020038.vclound.com systemd[1]: openstack-nova-novncproxy.service: main process exited, code=exited, status=1/FAILURE
Feb 12 15:21:08 ns-yun-020038.vclound.com systemd[1]: Unit openstack-nova-novncproxy.service entered failed state.
Feb 12 15:21:08 ns-yun-020038.vclound.com systemd[1]: openstack-nova-novncproxy.service failed.

验证 wbsockify 包版本

 rpm -qa | grep python-websockify
 python-websockify-0.6.0-2.el7.noarch

降级改软件即可解决问题

# yum downgrade python-websockify-0.5.1-1.el7.noarch -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package python-websockify.noarch 0:0.5.1-1.el7 will be a downgrade
---> Package python-websockify.noarch 0:0.6.0-2.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package                           Arch                   Version                      Repository                Size
======================================================================================================================
Downgrading:
 python-websockify                 noarch                 0.5.1-1.el7                  epel-old                  57 k

Transaction Summary
======================================================================================================================
Downgrade  1 Package

Total download size: 57 k
Downloading packages:
python-websockify-0.5.1-1.el7.noarch.rpm                                                       |  57 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python-websockify-0.5.1-1.el7.noarch                                                               1/2
  Cleanup    : python-websockify-0.6.0-2.el7.noarch                                                               2/2
  Verifying  : python-websockify-0.5.1-1.el7.noarch                                                               1/2
  Verifying  : python-websockify-0.6.0-2.el7.noarch                                                               2/2

Removed:
  python-websockify.noarch 0:0.6.0-2.el7

Installed:
  python-websockify.noarch 0:0.5.1-1.el7

Complete!

# systemctl restart openstack-nova-novncproxy.service

# systemctl status openstack-nova-novncproxy.service
● openstack-nova-novncproxy.service - OpenStack Nova NoVNC Proxy Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-novncproxy.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2025-02-12 15:35:07 CST; 5s ago
 Main PID: 7699 (nova-novncproxy)
    Tasks: 1
   Memory: 38.0M
   CGroup: /system.slice/openstack-nova-novncproxy.service
           └─7699 /usr/bin/python /usr/bin/nova-novncproxy --web /usr/share/novnc/

Feb 12 15:35:07 ns-yun-020037.vclound.com systemd[1]: Started OpenStack Nova NoVNC Proxy Server.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值