preface

上面安装好了glance,下面就开始部署nova计算服务了。

nova组件介绍

首先介绍下nova各个组件。

  1. api 用来接收和响应外部的请求唯一途径,支持Openstack api,EC2(亚马逊) api
  2. api-metadata 接受来自虚拟机发送的元数据请求
  3. compute 一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例,例如:
  • XenServer/XCP 的 XenAPI
  • KVM 或 QEMU 的 libvirt
  • VMware 的 VMwareAPI

    过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。
  1. scheduler 拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
  2. conductor compute服务访问数据库得通过conductor来访问,相当于充当了一个中间价的角色。
  3. cert 服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。仅仅是在EC2 API的请求中使用。
  4. network -orker 与nova-compute服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。
  5. consoleauth 授权控制台的授权验证。
  6. novncproxy 提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
Nova-api



api接受外部的请求并通过Message Queue将请求发送给其他的服务组件。

nova-scheduler

决定把虚拟机创建在哪个计算服务器主机来运行它。

决策一个虚拟机调度到某物理节点,分为两步骤:

  1. 过滤(filter)

    过滤出符合条件的主机,过滤条件有多种,比如你申请的虚拟机要8G内存,4台主机中只有一台主机空闲内存大于8G,再比如有一台主机连接不上glance服务器,或Neutron不正常等等,都是过滤条件。
  2. 计算权值(Weights)

    经过主机过滤后,需要对主机进行权值计算,根据策略选择到相应的某一台主机上。
nova-compute



通过Message queue接受并管理VM的生命周期。通过libvirt管理KVM。

安装Nova

控制节点安装它

1.安装它

[root@linux-node1 images]# yum install openstack-nova-api openstack-nova-conductor \
> openstack-nova-console openstack-nova-novncproxy \
> openstack-nova-scheduler

2.修改Nova配置文件

[root@linux-node1 images]# vim /etc/nova/nova.conf

[DEFAULT]
transport_url=rabbit://openstack:openstack@192.168.56.11 rabbit地址
enabled_apis=osapi_compute,metadata
auth_strategy = keystone # 启用keystone认证
use_neutron=True # 启用网络服务支持:
firewall_driver = nova.virt.firewall.NoopFirewallDriver #关闭防火墙 [api_database]
connection=mysql+pymysql://nova:nova@192.168.56.11/nova_api [database]
connection = mysql+pymysql://nova:nova@192.168.56.11/nova [keystone_authtoken]
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova [vnc]
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.56.11 [glance]
api_servers= http://192.168.56.11:9292 [oslo_concurrency]
lock_path = /var/lib/nova/tmp

3.初始化数据库

[root@linux-node1 images]#  su -s /bin/sh -c "nova-manage api_db sync" nova
[root@linux-node1 images]# su -s /bin/sh -c "nova-manage db sync" nova

4.启动服务

添加开机自启动
[root@linux-node1 images]# systemctl enable openstack-nova-api.service \
> openstack-nova-consoleauth.service openstack-nova-scheduler.service \
> openstack-nova-conductor.service openstack-nova-novncproxy.service 启动服务
[root@linux-node1 images]# systemctl start openstack-nova-api.service \
> openstack-nova-consoleauth.service openstack-nova-scheduler.service \
> openstack-nova-conductor.service openstack-nova-novncproxy.service

5.添加Endpoint和服务

[root@linux-node1 images]# openstack service create --name nova \
> --description "OpenStack Compute" compute # 创建服务实体
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 84f33de0de8c4da18cfb7f213b63a638 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
[root@linux-node1 images]# openstack endpoint create --region RegionOne compute public http://192.168.56.11:8774/v2.1/%\(tenant_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | b790368865d34112abba548991a98f79 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 84f33de0de8c4da18cfb7f213b63a638 |
| service_name | nova |
| service_type | compute |
| url | http://192.168.56.11:8774/v2.1/%(tenant_id)s |
+--------------+----------------------------------------------+
[root@linux-node1 images]# openstack endpoint create --region RegionOne compute internal http://192.168.56.11:8774/v2.1/%\(tenant_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 1b3d6aa26e55491faf2c01f779c4fe4c |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 84f33de0de8c4da18cfb7f213b63a638 |
| service_name | nova |
| service_type | compute |
| url | http://192.168.56.11:8774/v2.1/%(tenant_id)s |
+--------------+----------------------------------------------+
[root@linux-node1 images]# openstack endpoint create --region RegionOne compute admin http://192.168.56.11:8774/v2.1/%\(tenant_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 17547d9fc36e4e5fb3b5bf7c05ac4195 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 84f33de0de8c4da18cfb7f213b63a638 |
| service_name | nova |
| service_type | compute |
| url | http://192.168.56.11:8774/v2.1/%(tenant_id)s |
+--------------+----------------------------------------------+

6.验证操作:

[root@linux-node1 images]# openstack host list
+-------------------------+-------------+----------+
| Host Name | Service | Zone |
+-------------------------+-------------+----------+
| linux-node1.example.com | conductor | internal |
| linux-node1.example.com | consoleauth | internal |
| linux-node1.example.com | scheduler | internal |
+-------------------------+-------------+----------+

出现以上三行那么就说明没有问题

计算节点操作:

1.首先安装这个计算节点的nova服务

[root@linux-node2 ml2]# yum -y install openstack-nova-compute

2.修改配置文件,配置文件我们从控制节点上复制过去,然后删除数据库的连接信息,以及修改VNC的配置就行了。

[root@linux-node1 ~]# scp /etc/nova/nova.conf 192.168.56.12:/etc/nova/  # 从node1复制过去
[root@linux-node2 nova]# grep -E "^[a-Z]|^\[" nova.conf # 注意这是node2节点
[DEFAULT]
auth_strategy=keystone
use_neutron=True
enabled_apis=osapi_compute,metadata
firewall_driver = nova.virt.firewall.NoopFirewallDriver
transport_url=rabbit://openstack:openstack@192.168.56.11
[glance]
api_servers= http://192.168.56.11:9292
[keystone_authtoken]
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
[oslo_concurrency]
lock_path=/var/lib/nova/tmp
[vnc]
enabled=true
keymap=en-us
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.56.12
novncproxy_base_url=http://192.168.56.11:6080/vnc_auto.html # 一定是控制节点上的IP

关于novncproxy_base_url,实际上这是连接控制节点上的6080端口,如果我们创建好云主机以后,发现无法使用控制台,那么就得检查下这一行配置是否正确,一定是控制节点上的IP,第二查看控制节点的6080端口是否存活,服务是否运行了。

3.确定计算节点是否支持虚拟机的硬件加速

[root@linux-node2 nova]#  egrep -c '(vmx|svm)' /proc/cpuinfo
2

如果这个命令返回了大于等于1的值,那么你的计算节点支持硬件加速且不需要额外的配置。如果这个命令返回了0,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM,那么需要修改在 /etc/nova/nova.conf 文件:

[libvirt]
virt_type = qemu # 默认是KVM

4.启动服务并设置为开机自启动:

[root@linux-node2 nova]# systemctl enable libvirtd.service openstack-nova-compute.service
[root@linux-node2 nova]# systemctl start libvirtd.service openstack-nova-compute.service

如果服务启动失败,请查看日志/var/log/nova/nova-compute.log

5.启动之后,计算节点能够自动在控制节点能够注册,千万不要修改主机名,改了主机名会认为这个计算节点是新机器,所有在跑的虚拟机都停止。

6.在控制节点查看这个新配置的计算节点是否注册到位:

[root@linux-node1 ~]# source admin_openrc
[root@linux-node1 ~]# nova service-list # 或者 openstack compute service list
+----+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-conductor | linux-node1.example.com | internal | enabled | up | 2017-01-03T13:27:52.000000 | - |
| 2 | nova-consoleauth | linux-node1.example.com | internal | enabled | up | 2017-01-03T13:27:56.000000 | - |
| 3 | nova-scheduler | linux-node1.example.com | internal | enabled | up | 2017-01-03T13:28:00.000000 | - |
| 10 | nova-compute | linux-node2.example.com | nova | enabled | up | 2017-01-03T13:27:53.000000 | - | # computer服务注册到位 [root@linux-node1 ~]# openstack host list
+-------------------------+-------------+----------+
| Host Name | Service | Zone |
+-------------------------+-------------+----------+
| linux-node1.example.com | conductor | internal |
| linux-node1.example.com | consoleauth | internal |
| linux-node1.example.com | scheduler | internal |
| linux-node2.example.com | compute | nova | # computer服务注册到位
+-------------------------+-------------+----------+

6 云计算系列之Nova安装与配置的更多相关文章

  1. 7 云计算系列之Neutron安装与配置

    preface 紧接上一章,我们这里开始部署网络服务Neutron,可参考官网文档:http://docs.openstack.org/newton/install-guide-rdo/neutron ...

  2. 《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010

    作者:董波 日期:2010.6.15 写在前面 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫<Visual ...

  3. nova安装与配置

    一.实验目的: 1.理解nova服务在OpenStack中的作用 2.掌握在控制节点上安装配置nova的方法和步骤 3.掌握在计算节点上安装与配置nova的方法和步骤 二.实验步骤: 1.在contr ...

  4. SpringCloud入门系列0-Nacos的安装与配置

    背景 工作有一些年头了,自从19年初彻底转了java(这又是另一篇心酸的故事),突然感觉自己荒废了好几年(不是说.net不好,而是回顾自己这几年做的很多东西都浮于表面,有时候弄成很忙的样子,回头看看自 ...

  5. 转 --maven系列之二 安装与配置

    http://blog.csdn.net/jiuqiyuliang/article/details/45390313 [项目管理和构建]——Maven下载.安装和配置(二) 标签: 工具开发maven ...

  6. Dynamics AX 2012 R3 仓库和运输管理系列 - 仓库管理模块安装与配置

        在AX 2012 R3版本中,新增了仓库和运输管理模块,同时提供了一个在移动设备上进行仓库管理工作的网站.在这个系列里,与Reinhard一起,了解仓库和运输管理模块吧.     需要注意的是 ...

  7. (五)OpenStack---M版---双节点搭建---Nova安装和配置

    ↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 1.创建nova 和 nova_api数据库 2.获得 admin 凭证来获取只有管理员能执行的 ...

  8. zabbix系列之九——安装后配置四web监控

    1web监控 描述 详细 备注 概要 1)      需要定义 web 场景(包括一个或多个 HTTP请求),zabbix服务器根据预定义的命令周期性的执行这些步骤. 2)      Web 场景和 ...

  9. OpenStack云计算快速入门之二:OpenStack安装与配置

    原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...

随机推荐

  1. JSP_运维_JSP项目部署到server(适合0经验新手)

    实战:真正server端部署jsp项目经验总结与记录(完整过程从0到10适合对server端部署0经验新手) jsp+tomcat+mysql项目部署到真正server; servermysql安装; ...

  2. [Linux基础环境/软件]Linux下安装resin web服务器(涉及gcc、jdk环境部署)

    由于Ubuntu自带是没有jdk和gcc编译器的,而安装resin需要C编译器和jdk的支持,而且resin本身是java写的.另外我本身的网站是zip打包的,所以linux也要安装了gcc.jdk. ...

  3. java.io.ByteArrayInputStream 源码分析

    ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节. 成员变量 //由该流的创建者提供的 byte 数组. protected byte buf[]; //要从 ...

  4. Android——Fragment+Editext总结

    原文地址: android Fragment中没有onTouchEvent解决方法 Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失,android-- ...

  5. Distribute Cached 使用

    在Kettle中说到Pentaho的MapReduce要用到它,就查了一下关于它的资料,以下是从官方查到的内容,记录一下. DistributedCache: 一些比较小的需要共享的文件或者jar包, ...

  6. Error:不能将"char*"类型的值分配到"LPSTR"类型的实体 也许 "char*"类型的实参与"LPCWSTR"类型的形参不兼容

    http://www.myexception.cn/ruby-rails/1876106.html 选择“XXX项目”->“属性”->“配置属性”->“常规”选项中,把“使用 Uni ...

  7. JS实现IE下打印和打印预览

    http://blog.csdn.net/rongyongfeikai2/article/details/8460598 ——————————————————————————————————————— ...

  8. 6 ways to import data into SQL Server

    I’m going to go over some methods to import data from text files into SQL Server today. The particul ...

  9. JSON的简单介绍以及C语言的JSON库使用

    JSON概述 JSON: JavaScript 对象表示法( JavaScript Object Notation) .是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON采 ...

  10. Quick solution to java.lang.NoClassDefFoundError: org/openqa/selenium/HasInputDevices error

    In case if you face this problem, one of the possible solutions that will work for you is to make su ...