开启掘金成长之旅!这是我参与「掘金日新计划 · 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';
- 确保数据库创建成功
- 确保nova用户能够正常使用
创建nova用户
openstack user create --domain default --password-prompt nova
# D3LvC@F01xmR
- 确保用户创建成功
将admin添加到nova用户,并创建服务实体
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
- 确保服务和实体创建成功
创建 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
创建placement用户和密码
openstack user create --domain default --password-prompt placement
# D3LvC@F01xmR
使用admin角色将Placement用户添加到服务项目
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
创建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创建成功
安装nova
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y
- 确保nova服务正确安装
配置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;"
- 确保正确访问数据库
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
- 确保服务正常运行
报错
解决方案
# 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)
- 确保数据库能够正常连接
支持 nova 命令能够正常使用
Nova 计算节点的安装 计算节点!!!!!
- 分别在39 40 节点输入
yum install -y openstack-nova-compute
报错
# 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
- 确保安装正确
计算节点修改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
- 确保不报错
在控制节点!!将计算节点加入集群,并运行命令发现主机
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
nova hypervisor-list
openstack compute service list