介绍

       Nova是openstack最早的两块模块之一,另一个是对象存储swift。在openstack体系中一个叫做计算节点,一个叫做控制节点。这个主要和nova相关,我们把安装为计算节点nova-compute,把除了nova-compute叫做控制节点。nova-compute是创建虚拟机的,只是创建虚拟机,所有的控制都在另一台上。

nova组件(服务)

  • API:负责接受和响应外部请求。支持OpenStack API,EC2 API
  • Cert:负责身份认证EC2
  • Scheduler:用于云主机调度
  • Conductor:计算节点访问数据的中间件
  • Consoleauth:用于控制台的授权验证
  • Novncproxy:VNC代理

提示:EC2是亚马逊弹性计算云

 

Nova API

  • nova-api组件实现了RESTful API功能,是外部访问Nova的唯一途径。
  • 接收外部的请求并通过Messages Queue将请求发送给其他的服务组件,同时也兼容EC2 API,所以也可以用EC2的管理工具对nova进行日常管理。

openstack计算节点虚拟机查看 openstack的计算节点_创建虚拟机

 

 

Nova scheduler

Nova scheduler模块在openstack中的作用就是决策虚拟机创建在那个主机(计算节点)上。

决策一个虚拟机应该调度到那个物理节点,需要分两个步骤:

  • 过滤(Filter)
  • 计算权值(Weight)

Q:实际操作中可能会出现找不到有效的主机?实际上是有资源的,为什么?

因为在openstack中nova scheduler认为没有资源创建虚拟机,即使你有100G内存,如果nova scheduler认为你没有资格,就无法进行创建虚拟机。这个时候可能是某一个节点故障,如网络或者其它。

Q:如果决策虚拟机创建在那个主机?

1、Filter Scheduler首先得到未经过滤的主机列表,然后根据过滤属性,选择符合条件的计算节点主机。

openstack计算节点虚拟机查看 openstack的计算节点_openstack计算节点虚拟机查看_02

2、计算权重,经过主机过滤后,需要对主机进行权值的计算,根据策略选择相应的某一台主机(对于每一个要创建的虚拟机而言)。

openstack计算节点虚拟机查看 openstack的计算节点_openstack计算节点虚拟机查看_03

 

Nova 控制节点部署

1、安装软件包



yum install -y openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler



2、数据库配置

  • 修改配置文件/etc/nova/nova.conf

[root@linux-node1 ~]# vim /etc/nova/nova.conf [database] connection=mysql+pymysql://nova:nova@192.168.137.11/nova [api_database] connection=mysql+pymysql://nova:nova@192.168.137.11/nova_api



  • 同步数据库

su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage db sync" nova



提示:有警告可以忽略

  • 检查是否有表结构

mysql -h 192.168.137.11 -unova -pnova -e "use nova;show tables;" mysql -h 192.168.137.11 -unova -pnova -e "use nova_api;show tables;"



3、配置keystone



[root@linux-node1 ~]# vim /etc/nova/nova.conf [keystone_authtoken] auth_uri = http://192.168.137.11:5000 auth_url = http://192.168.137.11:35357 memcached_servers = 192.168.137.11:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = nova [DEFAULT] auth_strategy=keystone



4、RabbitMq(消息队列配置)



[root@linux-node1 ~]# vim /etc/nova/nova.conf rpc_backend=rabbit rabbit_host=192.168.137.11 rabbit_port=5672 rabbit_userid=openstack rabbit_password=openstack



5、配置nova自己的一些功能

  • 设置启用的元数据API

[DEFAULT] enabled_apis=osapi_compute,metadata



  • 启动网络服务支持和关闭防火墙

[DEFAULT] use_neutron=true firewall_driver=nova.virt.firewall.NoopFirewallDriver



  • 配置VNC代理使用控制节点的管理接口IP地址

[vnc] vncserver_listen=192.168.137.11 vncserver_proxyclient_address=192.168.137.11



  • 配置镜像服务 API 的位置

[glance] api_servers=http://192.168.137.11:9292



  • 配置锁路径

[oslo_concurrency] lock_path = /var/lib/nova/tmp



6、设置开机启动,并启动服务



systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service



7、keystone上注册nova服务

  • 创建nova服务

source /root/admin-openstack.sh openstack service create --name nova --description "Openstack Compute " compute



openstack计算节点虚拟机查看 openstack的计算节点_API_04

  • 创建Compute服务api端点(公有、私有、admin)

openstack endpoint create --region RegionOne \ compute public http://192.168.137.11:8774/v2.1/%\(tenant_id\)s



openstack计算节点虚拟机查看 openstack的计算节点_openstack计算节点虚拟机查看_05



openstack endpoint create --region RegionOne \ compute internal http://192.168.137.11:8774/v2.1/%\(tenant_id\)s



openstack计算节点虚拟机查看 openstack的计算节点_mysql_06



openstack endpoint create --region RegionOne \ compute admin http://192.168.137.11:8774/v2.1/%\(tenant_id\)s



openstack计算节点虚拟机查看 openstack的计算节点_API_07

8、检查控制节点是否成功



openstack host list



openstack计算节点虚拟机查看 openstack的计算节点_创建虚拟机_08