OpenStake架构-----nova组件(二)
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。上篇博文详细讲述了控制节点服务controller中的keystone组件,本篇博文将对nova组件部署进行分析,分为两部分:控制节点和计算节点都需要设置。
计算节点架构
计算节点包含Nova,Neutron,Telemeter三个服务
1)基础服务
Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通信服务
2)扩展服务
Telmeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点,是Centimeter的代理服务
计算节点包含最少两个网络端口
eth0:与控制节点进行通信,受控制节点统一调配
eth2:与网络节点,存储节点进行通信
实验环境
主机 | 系统 | IP地址 | 角色 |
---|---|---|---|
controller | CentOS7 | 192.168.37.128 | keystone、nova、ntp、mariadb、rabbitmq、memcached、etcd、apache |
compute | CentOS7 | 192.168.37.130 | nova、ntp |
cinder | CentOS7 | 192.168.37.131 | cinder、ntp |
实验过程
++controller节点++
一、部署nova服务
1、创建nova_api, nova, nova_cell0数据库
mysql -u root -p
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
2、数据库登录授权
grant all privileges on nova_api. to 'nova'@'localhost' identified by '123456';
grant all privileges on nova_api. to 'nova'@'%' identified by '123456';
grant all privileges on nova. to 'nova'@'localhost' identified by '123456';
grant all privileges on nova. to 'nova'@'%' identified by '123456';
grant all privileges on nova_cell0. to 'nova'@'localhost' identified by '123456';
grant all privileges on nova_cell0. to 'nova'@'%' identified by '123456';
3、创建nova用户
source ~/admin-openrc
openstack user create --domain default --password-prompt nova
密码:123456
4、添加admin用户为nova用户
openstack role add --project service --user nova admin
5、创建nova服务端点
openstack service create --name nova --description "OpenStack Compute" compute
6、创建compute API 服务端点
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1 #public的API端点openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1 #internal的API端点openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1 #admin的API端点
二、创建placement服务用户(监控资源)
一个资源提供者可以是一个计算节点,共享存储池,或一个IP分配池。
placement服务跟踪每个供应商的库存和使用情况。
例如,在一个计算节点创建一个实例的可消费资源如计算节点的资源提供者的CPU和内存,磁盘从外部共享存储池资源提供商和IP地址从外部IP资源提供者。
1、创建placement用户
openstack user create --domain default --password-prompt placement
#密码:123456
2、添加placement用户为项目服务admin角色
openstack role add --project service --user placement admin
3、创建Placement API服务
openstack service create --name placement --description "Placement API" placement
4、创建Placement API服务端点
openstack endpoint create --region RegionOne placement public http://controller:8778 #public的API端点openstack endpoint create --region RegionOne placement internal http://controller:8778 #internal的API端点openstack endpoint create --region RegionOne placement admin http://controller:8778 #admin的API端点
三、进行nova相关配置
1、安装软件包
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y
2、编辑nova配置文件
vim /etc/nova/nova.conf
[DEFAULT]#2756行enabled_apis=osapi_compute,metadata #开启API#3156行transport_url=rabbit://openstack:123456@controller #消息队列#1291行my_ip=192.168.37.128 #主机IP#1755行use_neutron=true #开启网络组件#2417行firewall_driver=nova.virt.firewall.NoopFirewallDriver #防火墙设置[api_database]#3513行connection=mysql+pymysql://nova:123456@controller/nova_api[database]#4637行connection=mysql+pymysql://nova:123456@controller/nova[api]#3221行auth_strategy=keystone #授权注册[keystone_authtoken] #令牌模块#6149行auth_uri=http://controller:5000auth_url=http://controller:35357#6200行memcached_servers=controller:11211#6307行 :添加以下行数设置auth_type=passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = 123456[vnc]#10292行enabled=true#10316行server_listen=$my_ip#10329行 server_proxyclient_address=$my_ip[glance]#5342行api_servers=http://controller:9292[oslo_concurrency]#7920行lock_path=/var/lib/nova/tmp[placement]#8819行os_region_name=RegionOne#8859行 auth_type=password#8865行 auth_url=http://controller:35357/v3#8880行 project_name=service#8886行project_domain_name=Default#8906行 username=placement#8912行 user_domain_name=Default#8915行 password=123456
#注意:配置文件是实时更新的,行数标注不一定准确,需仔细对照修改内容。另外,修改条目较多,可通过以下命令进行查看:
grep -v "#" /etc/nova/nova.conf | grep -v "^$"
3、由于包错误,必须启用对Placement API的访问,在文件末尾添加以下内容
vim /etc/httpd/conf.d/00-nova-placement-api.conf = 2.4> Require all granted Order allow,deny Allow from all
四、数据库上的操作
1、由于修改了httpd配置文件,需重启服务
systemctl restart httpd.service
2、同步nova-api数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
3、注册cell0数据库
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
4、注册cell1 cell数据库
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
5、同步nova数据库
su -s /bin/sh -c "nova-manage db sync" nova
6、验证 nova、 cell0、 cell1数据库是否注册正确
nova-manage cell_v2 list_cells
7、开启controller上所有nova服务模块,设置开机自启动
systemctl enable openstack-nova-api.servicesystemctl enable openstack-nova-consoleauth.servicesystemctl enable openstack-nova-scheduler.servicesystemctl enable openstack-nova-conductor.servicesystemctl enable openstack-nova-novncproxy.servicesystemctl start openstack-nova-api.servicesystemctl start openstack-nova-consoleauth.servicesystemctl start openstack-nova-scheduler.servicesystemctl start openstack-nova-conductor.servicesystemctl start openstack-nova-novncproxy.service
++compute节点++
1、yum安装nova节点包
yum install openstack-nova-compute -y
2、修改配置文件
vim /etc/nova/nova.conf
[DEFAULT]#1291my_ip = 192.168.37.130#1755 use_neutron=true#2417 firewall_driver=nova.virt.firewall.NoopFirewallDriver#2756enabled_apis = osapi_compute,metadata#3156transport_url = rabbit://openstack:123456@controller[api]#3221 auth_strategy=keystone[keystone_authtoken]#6148auth_uri = http://192.168.37.128:5000auth_url = http://controller:35357#6199memcached_servers=controller:11211#6306 auth_type=passwordproject_domain_name=defaultuser_domain_name=defaultproject_name=serviceusername=novapassword=123456[vnc]#10291 enabled=true#10315 server_listen=0.0.0.0#10328 server_proxyclient_address=$my_ip#10346novncproxy_base_url=http://controller:6080/vnc_auto.html[glance]#5341 api_servers=http://controller:9292[oslo_concurrency]#7919lock_path=/var/lib/nova/tmp[placement]#8818 os_region_name=RegionOne#8858auth_type = password#8864auth_url=http://controller:35357/v3#8879project_name = service#8885project_domain_name = Default#8911user_domain_name = Default#8905username = placement#8914password = 123456
#注意:配置文件是实时更新的,行数标注不一定准确,模块和controller上相同,需仔细对照修改内容。另外,修改条目较多,可通过以下命令进行查看:
grep -v "#" /etc/nova/nova.conf | grep -v "^$"
3、开启相关服务,设置开机自启动
systemctl enable libvirtd.service
systemctl enable openstack-nova-compute.service
systemctl stop libvirtd
systemctl start libvirtd
systemctl enable openstack-nova-compute.service
systemctl start openstack-nova-compute.service
++controller节点++
1、验证有几个计算节点在数据库中
source ~/admin-openrc
openstack compute service list --service nova-compute
2、查看计算节点
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
3、列出计算节点服务
openstack compute service list
4、列出身份服务中的API端点,验证与身份服务的连接
openstack catalog list
5、列出镜像
openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| 204c1831-4abf-481b-80ab-609eb9b06f2d | cirros | active |
+--------------------------------------+--------+--------+
6、检查cells和placement API是否正常
nova-status upgrade check