目录:
0 实验环境
1 概述
2 控制节点配置
2.1 先决条件
2.2 安装和配置
2.3 验证
3 计算节点配置
3.1 安装组件
3.2 配置
3.3 验证
4 验证计算节点状态
4.1 查看计算服务节点列表
4.2 发现计算主机
0 实验环境
openstack版本:train
实验平台:vmware workstation 15.1
实验虚拟机:控制节点(centos 7.6,2核,4G内存),计算节点(centos 7.6,2核,2G内存)
操作节点:控制节点和计算节点
本文涉及的帐号密码:
RabbitMQ服务用户:openstack:rabbitpass
Placement服务用户:placement:ppass
mysql数据库管理员:root:samplepass
nova数据库用户:nova:dbpass
nova服务用户:nova:npass
1 概述
Compute组件用于托管和管理云计算系统。它是基础设施即服务(IaaS)系统的主要组成部分。主要模块用Python实现。
compute组件通过keystone服务进行认证,使用placement服务对资源进行跟踪和选择,使用glance服务管理镜像,使用控制面板组件UI方式进行管理。
2 控制节点配置
2.1 先决条件
a)数据库配置,创建了3个数据库nova_api,nova,nova_cell0:
# mysql -u root -p MariaDB [(none)]> CREATE DATABASE nova_api; MariaDB [(none)]> CREATE DATABASE nova; MariaDB [(none)]> CREATE DATABASE nova_cell0; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'dbpass'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'dbpass'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'dbpass'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'dbpass'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'dbpass'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'dbpass'; MariaDB [(none)]>quit;
b)服务用户和权限设置
# . admin-openrc # openstack user create --domain default --password-prompt nova //新建用户nova,并设置密码,我设置的是npass # openstack role add --project g_service --user nova admin //设置用户nova在项目g_service中,角色为admin # openstack service create --name nova --description "OpenStack Compute" compute //为openstack创建计算服务
c)配置服务API端点
# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1 # openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1 # openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
2.2 安装和配置
a)软件包安装
# yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
b)编辑配置文件/etc/nova/nova.conf,完成以下几点配置:
在[default]节点:
[DEFAULT] enabled_apis = osapi_compute,metadata #使用安装rabbitMQ时创建的用户和密码 transport_url = rabbit://openstack:rabbitpass@controller:5672/ #指定节点的ip地址 my_ip = 192.168.223.11 use_neutron = True #默认计算服务自带防火墙,但是网络也带有防火墙,所以通过这个设置禁止计算服务的防火墙 firewall_driver = nova.virt.firewall.NoopFirewallDriver
在[api_database]节点:
[api_database]
# ...
connection = mysql+pymysql://nova:dbpass@controller/nova_api
在[database]节点:
[database]
# ...
connection = mysql+pymysql://nova:dbpass@controller/nova
在[api]节点:
[api]
# ...
auth_strategy = keystone
在[keystone_authtoken]节点:
[keystone_authtoken] www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = g_service username = nova password = npass
在[vnc]节点:
[vnc] enabled = True server_listen = $my_ip server_proxyclient_address = $my_ip
在[glance]节点:
[glance] api_servers = http://controller:9292
在[oslo_concurrency]节点:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
在[placement]节点:
[placement] os_region_name = RegionOne project_domain_name = Default project_name = g_service auth_type = password user_domain_name = Default auth_url = http://controller:5000/v3 username = placement password = ppass
c)初始化nova-api数据库
# su -s /bin/sh -c "nova-manage api_db sync" nova
d)配置cell数据库
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova //注册cell0数据库 # su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova //创建cell1
检查操作是否成功:
# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
e)初始化nova数据库,可能会有warning和deprecated等信息,不用理会:
# su -s /bin/sh -c "nova-manage db sync" nova
2.3 配置服务状态
# systemctl enable --now openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
3 计算节点配置
计算服务安装在计算节点,支持多种管理程序和虚拟机类型,比如QEMU和KVM。
3.1 安装组件
a)安装openstack源配置
# yum install centos-release-openstack-train
b)安装客户端管理工具和自动配置selinux的软件包:
# yum install python-openstackclient openstack-selinux
c)安装nova软件包:
# yum install openstack-nova-compute
3.2 配置
编辑配置文件/etc/nova/nova.conf,完成以下几点配置:
在[default]节点:
[DEFAULT] enabled_apis = osapi_compute,metadata #使用安装rabbitMQ时创建的用户和密码 transport_url = rabbit://openstack:rabbitpass@controller #指定节点的ip地址 my_ip = 192.168.223.31 use_neutron = True #默认计算服务自带防火墙,但是网络也带有防火墙,所以通过这个设置禁止计算服务的防火墙 firewall_driver = nova.virt.firewall.NoopFirewallDriver
在[api]节点:
[api]
# ...
auth_strategy = keystone
在[keystone_authtoken]节点:
[keystone_authtoken] www_authenticate_uri = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = g_service username = nova password = npass
在[vnc]节点:
[vnc] enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = $my_ip novncproxy_base_url = http://192.168.223.31:6080/vnc_auto.html
在[glance]节点:
[glance] api_servers = http://controller:9292
在[oslo_concurrency]节点:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
在[placement]节点:
[placement] os_region_name = RegionOne project_domain_name = Default project_name = g_service auth_type = password user_domain_name = Default auth_url = http://controller:5000/v3 username = placement password = ppass
3.3 验证
a)检查硬件是否支持虚拟化:
# egrep -c '(vmx|svm)' /proc/cpuinfo
如果返回的结果是0,则必须配置使用QEMU替代KVM,编辑配置文件/etc/nova/nova.conf的节点[libvirt]:
[libvirt]
# ...
virt_type = qemu
b)设置服务状态:
# systemctl enable --now libvirtd.service openstack-nova-compute.service
4 验证计算节点状态
注意:本操作在控制节点进行
4.1 查看计算服务节点列表
# openstack compute service list --service nova-compute
4.2 发现计算主机
# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
注意:当添加了新的计算节点,必须运行上一条命令来进行注册。也可以让程序自动发现,在/etc/nova/nova.conf中进行设置:
[scheduler] #设置间隔300秒自动发现 discover_hosts_in_cells_interval = 300