实验目标
使用 OpenStack 计算服务来托管和管理云计算系统。OpenStack 计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由 Python 实现。
OpenStack 计算组件请求 OpenStack Identity 服务进行认证;
请求 OpenStack Image 服务提供磁盘镜像;
为 OpenStack dashboard 提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack 组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例: 熟悉计算服务 Nova 的安装配置。
控制节点创建数据库、服务凭证和 API endpoint
1、实现要求
在控制节点创建 nova_api 和 nova 数据库、用户并授权,创建服务凭证和API endpoint
2、实现过程
创建 nova_api 数据库,创建 nova 用户(密码为 123456)并授权
MariaDB > CREATE DATABASE nova_api;
MariaDB > GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456';
MariaDB > GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456';
MariaDB > GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'controller' IDENTIFIED BY '123456';
创建 nova 数据库,授权 nova 用户(密码为 123456)
MariaDB > CREATE DATABASE nova;
MariaDB > GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456';
MariaDB > GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456';
MariaDB > GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller' IDENTIFIED BY '123456';
重启数据库
# systemctl restart mariadb
获得 admin 权限
# . admin-openrc
创建 nova 用户,会提示输入密码,我这里是 123456
# openstack user create --domain default --password-prompt nova
添加 admin 角色到 nova 用户,没有输出
# openstack role add --project service --user nova admin
创建 nova 服务实体
# openstack service create --name nova --description "OpenStack Compute" compute
创建 endpoint
# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s
控制节点安装服务及配置
1、实现要求
控制节点安装 Nova 服务并修改配置
2、实现过程
安装 Nova 服务
# yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-novanovncproxy openstack-nova-scheduler
安装完成以后进入/etc/nova/目录,备份 nova.conf 文件 nova.conf.bak
# cp nova.conf nova.conf.bak
修改 nova.conf,如下:vi nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url=rabbit://openstack:123456@controller
auth_strategy = keystone
rpc_backend = rabbit
my_ip = 192.168.23.101
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
connection = mysql+pymysql://nova:123456@controller/nova_api
[database]
connection = mysql+pymysql://nova:123456@controller/nova
[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 = 123456
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
同步 Compute 数据库,忽略告警信息,注意检查数据库里有没有表,如果没有,检查日志/var/log/nova/ nova-manage.log
# su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" nova
启动 Compute 服务并将其设置为随系统启动
# systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-novascheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-novascheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
验证控制节点的 nova 是否配置成功
执行 admin-openrc
# . admin-openrc
执行以下命令,有结果即为正确
# openstack host list
# nova service-list
计算节点安装服务及配置
1、实现要求
在计算节点安装并配置 Nova 服务
2、实现过程
安装服务
# yum install openstack-nova-compute -y
安装完成以后,执行以下命令,检查计算节点是否支持硬件加速
# egrep -c '(vmx|svm)' /proc/cpuinfo
如果这个命令返回 1 或者更大的值,说明计算节点支持硬件加速,不需要进行额外的配置。如果这个命令返回 0,则计算节点不支持硬件加速,必须配置 libvirt 使用 QEMU 而不是使用KVM,修改 virt_type 属性为 qemu 即可 vi /etc/nova/nova.conf
[libvirt]
virt_type = qemu
进入/etc/nova/目录,修改 nova.conf 配置文件,修改前备份以下
# cd /etc/nova/
# cp nova.conf nova.conf.bak
# vi nova.conf
修改内容如下(注意别忘加上面的 qemu 的修改):
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url=rabbit://openstack:123456@controller
auth_strategy = keystone
my_ip = 192.168.23.102
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[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 = 123456
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
# egrep -c '(vmx|svm)' /proc/cpuinfo
# cd /etc/nova/
# cp nova.conf nova.conf.bak
# vi nova.conf
文档密级:内部 A
9
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
启动计算服务及其依赖,并将其配置为开机自动启动
# systemctl start libvirtd.service openstack-nova-compute.service
# systemctl enable libvirtd.service openstack-nova-compute.service
控制节点验证操作
1、实现要求
在控制节点验证 nova 的配置是否正确
2、实现过程
获得 admin 凭证
# . admin-openrc
在控制节点上执行新节点的检查
# openstack compute service list
列出服务组件,以验证是否成功启动并注册了每个进程
# nova service-list
出现如图所示即为正确。
参考资料:《OpenStack 从零开始学》–卢万龙著,电子工业出版社第 2 篇安装配置篇,第 13章(P130)