控制节点计算服务
离线下载
add-apt-repository cloud-archive:caracal
apt install --download-only nova-api nova-conductor nova-scheduler nova-novncproxy python3-nova
mkdir /controller/nova
mv /var/cache/apt/archives/*.deb /controller/nova/
dpkg -i /controller/nova/*.deb
在一个控制节点操作
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
FLUSH PRIVILEGES;
source ~/admin-openrc
openstack user create --domain default --password NOVA_PASS nova
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
openstack endpoint create --region RegionOne compute public http://<VIP>:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://<VIP>:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://<VIP>:8774/v2.1
在三个控制节点操作
vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://nova:NOVA_PASS@ip1,ip2,ip3
my_ip = <ip1>
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
block_device_allocate_retries = 600
resume_guests_state_on_host_boot = true
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@<VIP>/nova_api
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@<VIP>/nova
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://<VIP>:5000/v3
username = placement
password = PLACEMENT_PASS
[keystone_authtoken]
www_authenticate_uri = http://<VIP>:5000/v3
auth_url = http://<VIP>:5000/v3
memcached_servers = ip1:11211,ip2:11211,ip3:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
service_token_roles_required = true
service_token_roles = admin
region_name = RegionOne
[vnc]
enabled = true
server_listen = <management_network>
server_proxyclient_address = $my_ip
novncproxy_base_url = http://<VIP>:6080/vnc_auto.html
[glance]
api_servers = http://<VIP>:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = nova
rbd_secret_uuid = <Ceph RBD Secret UUID>
virt_type = kvm
cpu_mode = host-model
[neutron]
auth_url = http://<VIP>:5000
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = true
metadata_proxy_shared_secret = Os
[cinder]
os_region_name = RegionOne
使libvirt识别nova密钥
- 确保文件在节点可用:
- /etc/ceph/ceph.conf
- /etc/ceph/client.nova.keyring
chown nova:nova /etc/ceph/ceph.client.nova.keyring
chmod 640 /etc/ceph/ceph.client.nova.keyring
uuidgen
vim secret.xml
<secret ephemeral='no' private='no'>
<uuid>上面的uuid</uuid>
<usage type='ceph'>
<name>client.nova secret</name>
</usage>
</secret>
virsh secret-define --file secret.xml
ceph auth get-key client.nova
virsh secret-set-value --secret <uuid> --base64 <nova.key>
在一个节点执行
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
su -s /bin/sh -c "nova-manage db sync" nova
在三个控制节点操作
systemctl start nova-api nova-scheduler nova-conductor nova-novncproxy
systemctl enable nova-api nova-scheduler nova-conductor nova-novncproxy
source ~/admin-openrc
openstack compute service list
openstack catalog list
计算节点计算服务
离线下载
apt-get --download-only install nova-compute libvirt-daemon-system libvirt-clients qemu-kvm qemu-utils
mkdir /compute/nova
mv /var/cache/apt/archives/*.deb /compute/nova/
dpkg -i /compute/nova/*.deb
在计算节点操作
vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://nova:NOVA_PASS@ip1,ip2,ip3
my_ip = ip1
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
resume_guests_state_on_host_boot = true
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://<VIP>:5000/v3
memcached_servers = ip1:11211,ip2:11211,ip3:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
service_token_roles_required = true
service_token_roles = admin
region_name = RegionOne
[vnc]
enabled = true
server_listen = <management_network>
server_proxyclient_address = $my_ip
novncproxy_base_url = http://<VIP>:6080/vnc_auto.html
[glance]
api_servers = http://<VIP>: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://<VIP>:5000/v3
username = placement
password = PLACEMENT_PASS
[libvirt]
virt_type = kvm
cpu_mode = host-passthrough
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = nova
rbd_secret_uuid = <Ceph RBD Secret UUID>
disk_cachemodes="network=writeback"
live_migration_flag = VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_TUNNELLED
hw_disk_discard = unmap
[cinder]
os_region_name = RegionOne
[neutron]
auth_url = http://<VIP>:5000
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = true
metadata_proxy_shared_secret = Os
使libvirt识别nova密钥
- 确保文件在节点可用:
- /etc/ceph/ceph.conf
- /etc/ceph/client.nova.keyring
chown nova:nova /etc/ceph/ceph.client.nova.keyring
chmod 640 /etc/ceph/ceph.client.nova.keyring
vim secret.xml
<secret ephemeral='no' private='no'>
<uuid>与控制节点的nova的uuid相同</uuid>
<usage type='ceph'>
<name>client.nova secret</name>
</usage>
</secret>
virsh secret-define --file secret.xml
ceph auth get-key client.nova
virsh secret-set-value --secret <uuid> --base64 <nova.key>
systemctl start nova-compute && systemctl enable nova-compute
在控制节点操作
source ~/admin-openrc
openstack compute service list
cat /var/log/nova/nova-compute.log