【OpenStack】环境搭建- 配置Nova服务

129 阅读4分钟

image.png

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天,点击查看活动详情

Nova服务 -- 控制节点

mysql -u root -p

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

CREATE DATABASE placement;

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

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

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

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

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

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

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'D3LvC@F01xmR';

GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'D3LvC@F01xmR';

  • 确保数据库创建成功

image.png

  • 确保nova用户能够正常使用

image.png

创建nova用户

openstack user create --domain default --password-prompt nova

# D3LvC@F01xmR
  • 确保用户创建成功

image.png

将admin添加到nova用户,并创建服务实体

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

openstack service create --name nova --description "OpenStack Compute" compute
  • 确保服务和实体创建成功

image.png

创建 nova endpoint

openstack endpoint create --region RegionOne compute public http://10.8.4.38:8774/v2.1

openstack endpoint create --region RegionOne compute internal http://10.8.4.38:8774/v2.1

openstack endpoint create --region RegionOne compute admin http://10.8.4.38:8774/v2.1

image.png

创建placement用户和密码

openstack user create --domain default --password-prompt placement

# D3LvC@F01xmR

image.png

使用admin角色将Placement用户添加到服务项目

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


openstack service create --name placement --description "Placement API" placement

image.png

创建placement的endpoint


openstack endpoint create --region RegionOne placement public http://10.8.4.38:8778

openstack endpoint create --region RegionOne placement internal http://10.8.4.38:8778

openstack endpoint create --region RegionOne placement admin http://10.8.4.38:8778
  • 确保endpoint创建成功 image.png

安装nova

yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y
  • 确保nova服务正确安装

image.png

配置nova.conf

# 仅启用计算和元数据API  
[DEFAULT]  
enabled_apis = osapi_compute,metadata  
# 配置RabbitMQ消息队列访问  
transport_url = rabbit://openstack:D3LvC@F01xmR@10.8.4.38  
# 启用对网络服务的支持  
use_neutron = true  
firewall_driver = nova.virt.firewall.NoopFirewallDriver  
# 配置数据库访问  
  
[api_database]  
connection = mysql+pymysql://nova:D3LvC@F01xmR@10.8.4.38/nova_api  
  
[database]  
connection = mysql+pymysql://nova:D3LvC@F01xmR@10.8.4.38/nova  
  
[placement_database]  
connection = mysql+pymysql://placement:D3LvC@F01xmR@10.8.4.38/placement  
  
# 配置身份服务访问  
[api]  
auth_strategy = keystone  
  
[keystone_authtoken]  
auth_url = http://10.8.4.38:5000/v3  
memcached_servers = 10.8.4.38:11211  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
project_name = service  
username = nova  
password = D3LvC@F01xmR  
  
# 配置VNC代理以使用控制器节点的管理接口IP地址  
[vnc]  
enabled = true  
server_listen = 0.0.0.0  
server_proxyclient_address = 10.8.4.38  
novncproxy_base_url = http://10.8.4.38:6080/vnc_auto.html  
  
# 配置Image服务API的位置  
[glance]  
api_servers = http://10.8.4.38:9292  
  
# 配置锁定路径  
[oslo_concurrency]  
lock_path = /var/lib/nova/tmp  
  
# 配置Placement API  
[placement]  
region_name = RegionOne  
project_domain_name = Default  
project_name = service  
auth_type = password  
user_domain_name = Default  
auth_url = http://10.8.4.38:5000/v3  
username = placement  
password = D3LvC@F01xmR

修改nova http配置

# vi /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>

重启httpd服务

systemctl restart httpd

初始化数据库

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

# 73251374-1c8e-4dab-9b41-46f8bc55f3fd

su -s /bin/sh -c "nova-manage db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

验证数据库

mysql -unova -pD3LvC@F01xmR -e "use nova ; show tables;"
mysql -unova -pD3LvC@F01xmR -e "use nova_api ; show tables;"
mysql -unova -pD3LvC@F01xmR -e "use nova_cell0 ; show tables;"
mysql -uplacement -pD3LvC@F01xmR -e "use placement ; show tables;"
  • 确保正确访问数据库 image.png
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
  • 确保服务正常运行

image.png

报错

image.png

解决方案

# vim /etc/my.cnf.d/mariadb-server.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
# 添加最大连接数
max_connection = 4096
wait_timeout = 5
# !!!!! 未生效

方案2

# vi /usr/lib/systemd/system/mariadb.service


systemctl daemon-reload
systemctl restart  mariadb.service

执行后生效

MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 4096  |
+-----------------+-------+
1 row in set (0.00 sec)
  • 确保数据库能够正常连接

image.png

支持 nova 命令能够正常使用

image.png

Nova 计算节点的安装 计算节点!!!!!

  • 分别在39 40 节点输入
yum install -y openstack-nova-compute

报错

image.png

# download
http://mirror.centos.org/centos/7/os/x86_64/Packages/cyrus-sasl-lib-2.1.26-23.el7.x86_64.rpm

# !!!! 很危险的动作 一定先下载好之后,导入到服务器
# 删除这个依赖会导致ssh出问题!!!
rpm -e --nodeps cyrus-sasl-lib-2.1.26-24.el7_9.x86_64
rpm -e --nodeps kpartx-0.4.9-135.el7_9.x86_64

rpm -ivh cyrus-sasl-lib-2.1.26-23.el7.x86_64.rpm

yum install -y openstack-nova-compute
  • 确保安装正确

image.png

计算节点修改nova.conf文件

  • 两个节点 vi /etc/nova/nova.conf

compute01

[DEFAULT]  
enabled_apis = osapi_compute,metadata  
transport_url = rabbit://openstack:D3LvC@F01xmR@10.8.4.38  
use_neutron = true  
firewall_driver = nova.virt.firewall.NoopFirewallDriver  
  
[api]  
auth_strategy = keystone  
  
[keystone_authtoken]  
auth_url = http://10.8.4.38:5000/v3  
memcached_servers = 10.8.4.38:11211  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
project_name = service  
username = nova  
password = D3LvC@F01xmR  
  
  
[vnc]  
enabled = true  
server_listen = 0.0.0.0  
server_proxyclient_address = 10.8.4.40  
novncproxy_base_url = http://10.8.4.40:6080/vnc_auto.html  
  
[glance]  
api_servers = http://10.8.4.38:9292  
  
  
[oslo_concurrency]  
lock_path = /var/lib/nova/tmp  
  
[placement]  
region_name = RegionOne  
project_domain_name = Default  
project_name = service  
auth_type = password  
user_domain_name = Default  
auth_url = http://10.8.4.38:5000/v3  
username = placement  
password = D3LvC@F01xmR  
  
[libvirt]  
images_type=rbd  
images_rbd_pool=volumes_sata  
images_rbd_ceph_conf = /etc/ceph/ceph.conf  
virt_type = kvm  
  
[neutron]  
url = http://10.8.4.38:9696  
auth_url = http://10.8.4.38:5000  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
region_name = RegionOne  
project_name = service  
username = neutron  
password = D3LvC@F01xmR  
service_metadata_proxy = true  
metadata_proxy_shared_secret = D3LvC@F01xmR

compute02

[DEFAULT]  
enabled_apis = osapi_compute,metadata  
transport_url = rabbit://openstack:D3LvC@F01xmR@10.8.4.38  
use_neutron = true  
firewall_driver = nova.virt.firewall.NoopFirewallDriver  
  
[api]  
auth_strategy = keystone  
  
[keystone_authtoken]  
auth_url = http://10.8.4.38:5000/v3  
memcached_servers = 10.8.4.38:11211  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
project_name = service  
username = nova  
password = D3LvC@F01xmR  
  
  
[vnc]  
enabled = true  
server_listen = 0.0.0.0  
server_proxyclient_address = 10.8.4.40  
novncproxy_base_url = http://10.8.4.40:6080/vnc_auto.html  
  
[glance]  
api_servers = http://10.8.4.38:9292  
  
  
[oslo_concurrency]  
lock_path = /var/lib/nova/tmp  
  
[placement]  
region_name = RegionOne  
project_domain_name = Default  
project_name = service  
auth_type = password  
user_domain_name = Default  
auth_url = http://10.8.4.38:5000/v3  
username = placement  
password = D3LvC@F01xmR  
  
[libvirt]  
images_type=rbd  
images_rbd_pool=volumes_sata  
images_rbd_ceph_conf = /etc/ceph/ceph.conf  
virt_type = kvm  
  
[neutron]  
url = http://10.8.4.38:9696  
auth_url = http://10.8.4.38:5000  
auth_type = password  
project_domain_name = default  
user_domain_name = default  
region_name = RegionOne  
project_name = service  
username = neutron  
password = D3LvC@F01xmR  
service_metadata_proxy = true  
metadata_proxy_shared_secret = D3LvC@F01xmR

启动 compute 节点nova服务

systemctl enable libvirtd.service openstack-nova-compute.service

systemctl start libvirtd.service openstack-nova-compute.service

  • 确保不报错

image.png

在控制节点!!将计算节点加入集群,并运行命令发现主机

openstack compute service list --service nova-compute

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

image.png

image.png

nova hypervisor-list

image.png

openstack compute service list

image.png