这是搭建Openstack云平台的第六堂课,主要讲解计算服务nova的配置过程。成功搭建Openstack后,所有虚拟机都运行在计算节点上,因此要求服务器性能必须有保障。
创建数据库用户
mysql -uroot -pMariadb123
create database nova_api; create database nova; create database nova_cell0; grant all privileges on nova_api.* to 'nova'@'localhost' identified by 'Nova123'; grant all privileges on nova_api.* to 'nova'@'%' identified by 'Nova123'; grant all privileges on nova.* to 'nova'@'localhost' identified by 'Nova123'; grant all privileges on nova.* to 'nova'@'%' identified by 'Nova123'; grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by 'Nova123'; grant all privileges on nova_cell0.* to 'nova'@'%' identified by 'Nova123'; flush privileges; exit
配置nova服务凭证
创建nova服务凭证
# source /opt/scripts/admin # 开始创建用户 openstack user create \ --domain default \ --password-prompt nova
输入密码(Nova123)后继续:
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://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
创建placement服务凭证
openstack user create \ --domain default \ --password-prompt placement
输入密码(Placement123)后继续:
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://controller:8778 openstack endpoint create \ --region RegionOne placement internal http://controller:8778 openstack endpoint create \ --region RegionOne placement admin http://controller:8778
配置控制节点上的服务
安装nova
yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
配置nova
修改配置/etc/nova/nova.conf:
[DEFAULT] my_ip = 10.10.100.150 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver enabled_apis = osapi_compute,metadata osapi_compute_listen = $my_ip osapi_compute_listen_port = 8774 metadata_listen = $my_ip metadata_listen_port = 8775 transport_url=rabbit://openstack:Openstack123@controller:5672 [api] auth_strategy = keystone [api_database] connection = mysql+pymysql://nova:Nova123@controller/nova_api [cache] backend = oslo_cache.memcache_pool enabled = True memcache_servers = controller:11211 [database] connection = mysql+pymysql://nova:Nova123@controller/nova [glance] api_servers = http://controller:9292 [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = Nova123 [oslo_concurrency] lock_path = /var/lib/nova/tmp [placement] os_region_name = RegionOne user_domain_name = Default project_domain_name = Default project_name = service auth_type = password auth_url = http://controller:35357/v3 username = placement password = Placement123 [vnc] enabled = True vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip novncproxy_base_url=http://$my_ip:6080/vnc_auto.html novncproxy_host=$my_ip novncproxy_port=6080
配置httpd
软件包存在一个bug,解决方法就是在配置文件/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
同步数据
# 同步nova-api数据 su -s /bin/sh -c "nova-manage api_db sync" nova # 同步cell0数据 su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova # 创建cell1单元 su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova # 同步nova数据,该命令可能出现告警信息,忽略即可 su -s /bin/sh -c "nova-manage db sync" nova # 查看已安装的cells nova-manage cell_v2 list_cells
启动应用
systemctl restart openstack-nova-api systemctl enable openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy systemctl start openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
配置计算节点上的服务
安装nova
yum -y install openstack-nova-compute
配置nova
修改配置/etc/nova/nova.conf:
[DEFAULT] my_ip = 10.10.100.151 enabled_apis = osapi_compute,metadata use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver transport_url = rabbit://openstack:Openstack123@controller:5672 [api] auth_strategy = keystone [glance] api_servers = http://controller:9292 [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = Nova123 [oslo_concurrency] lock_path = /var/lib/nova/tmp [placement] os_region_name = RegionOne auth_url = http://controller:35357/v3 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = placement password = Placement123 [vnc] enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = $my_ip novncproxy_base_url = http://$my_ip:6080/vnc_auto.html
启动应用
systemctl enable libvirtd openstack-nova-compute systemctl start libvirtd openstack-nova-compute
如果启动失败,可以通过以下命令检查CPU是否支持虚拟化:
egrep -c '(vmx|svm)' /proc/cpuinfo
如果命令返回值等于0,表示不支持虚拟化,需要配置libvirt,用QEMU替代KVM,修改配置/etc/nova/nova.conf加入如下内容:
[libvirt] virt_type = qemu
继续启动compute:
systemctl start openstack-nova-compute
添加计算节点到cell数据库
在控制节点查找并新增计算节点
确认有哪些计算节点主机在数据库:
openstack compute service list --service nova-compute
发现计算节点主机:
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
每添加一个新的计算节点时,需要在控制节点执行以上操作来注册该新计算节点,或者修改控制节点/etc/nova/nova.conf配置nova自动发现:
[scheduler] discover_hosts_in_cells_interval = 300
常用验证命令
openstack compute service list openstack catalog list openstack image list nova-status upgrade check
原创文章禁止转载:技术学堂 » Openstack云平台搭建课程六·计算服务Nova