OpenStack部署应用第三篇:计算服务Nova(转)

1、计算服务介绍

  OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

OpenStack计算服务由下列组件所构成:

``nova-api``服务
  接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。

``nova-api-metadata``服务
  接受来自虚拟机发送的元数据请求。``nova-api-metadata``服务一般在安装``nova-network``服务的多主机模式下使用。更详细的信息,请参考OpenStack管理员手册中的链接`Metadata service <http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service>`。

``nova-compute``服务
  一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。例如:

  • XenServer/XCP 的 XenAPI
  • KVM 或 QEMU 的 libvirt
  • VMware 的 VMwareAPI

  过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。

``nova-scheduler``服务
  拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。

``nova-conductor``模块
  Mediates interactions between the nova-compute service and the database. It eliminates direct accesses to the cloud database made by the nova-compute service. The nova-conductor module scales horizontally. However, do not deploy it on nodes where the nova-compute service runs. For more information, see Configuration Reference Guide.
nova-cert 模块
  服务器守护进程向Nova Cert服务提供X509证书。用来为``euca-bundle-image``生成证书。仅仅是在EC2 API的请求中使用

nova-network worker 守护进程
  与``nova-compute``服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。

nova-consoleauth 模块
  授权控制台代理所提供的用户令牌。详情可查看``nova-novncproxy``和 nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。在集群配置中你可以运行二者中任一代理服务而非仅运行一个nova-consoleauth服务。更多关于nova-consoleauth的信息,请查看`About nova-consoleauth <http://docs.openstack.org/admin-guide/compute-remote-console-access.html#about-nova-consoleauth>`__。

nova-novncproxy 模块
  提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。

``nova-spicehtml5proxy``守护进程
  提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。

nova-xvpvncproxy 守护进程
  提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。

nova-cert 守护进程
  X509 证书。

nova 客户端
  用于用户作为租户管理员或最终用户来提交命令。

队列
  A central hub for passing messages between daemons. Usually implemented with RabbitMQ, also can be implemented with another AMQP message queue, such as ZeroMQ.
SQL数据库
  存储构建时和运行时的状态,为云基础设施,包括有:

  • 可用实例类型
  • 使用中的实例
  • 可用网络
  • 项目

理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。

2、环境准备

Nova 复杂 5个组件 数据库->keystone->rabbit->同步数据库->注册keystone->启动服务器->验证服务

  • API
  • cert 暂时不用
  • scheduler 决策节点
  • conductor 数据库中间件
  • consoleauth vnc认证
  • novncproxy vnc代理 网页vnc

1)创建数据库(第一篇中已经完成)

2)安装软件及配置服务

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

# 配置服务
[root@linux-node1 nova]# grep -n '^[a-z]' nova.conf 
14:auth_strategy=keystone
2062:use_neutron=True
3052:enabled_apis=osapi_compute,metadata
3266:firewall_driver = nova.virt.firewall.NoopFirewallDriver
3662:connection=mysql+pymysql://nova:nova@192.168.56.11/nova_api
4679:connection=mysql+pymysql://nova:nova@192.168.56.11/nova
4814:api_servers=http://192.168.56.11:9292
5431:auth_uri = http://192.168.56.11:5000
5432:auth_url = http://192.168.56.11:35357
5433:memcached_servers = 192.168.56.11:11211
5434:auth_type = password
5435:project_domain_name = default
5436:user_domain_name = default
5437:project_name = service
5438:username = nova
5439:password = nova
6706:lock_path=/var/lib/nova/tmp
6885:transport_url=rabbit://openstack:openstack@192.168.56.11
8385:vncserver_listen=0.0.0.0
8397:vncserver_proxyclient_address=192.168.56.11

# 同步Compute 数据库
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.56.11 -u nova -pnova -e "use nova;show tables;"
mysql -h 192.168.56.11 -u nova -pnova -e "use nova_api;show tables;"

# 启动服务
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

 

3)创建用户、glance服务实体、镜像服务的 API 端点

# 创建nova用户
openstack service create --name nova --description "OpenStack Compute" compute

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

# 验证服务是否正常

openstack endpoint list

 

3)启动服务

# systemctl enable  openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl restart openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

 3、计算节点服务安装(node2部署)

1)确定您的计算节点是否支持虚拟机的硬件加速

$ egrep -c '(vmx|svm)' /proc/cpuinfo
# 如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM
在 /etc/nova/nova.conf 文件的 [libvirt] 区域做出如下的编辑:
[libvirt]
...
virt_type = qemu

2)启动计算服务及其依赖,并将其配置为随系统自动启动

yum install -y openstack-nova-compute

[root@linux-node2 ~]# grep -n '^[a-z]' /etc/nova/nova.conf 
3:transport_url=rabbit://openstack:openstack@192.168.56.11
15:auth_strategy=keystone
2063:use_neutron=True
3053:enabled_apis=osapi_compute,metadata
3267:firewall_driver=nova.virt.firewall.NoopFirewallDriver
4813:api_servers=http://192.168.56.11:9292
5430:auth_uri = http://192.168.56.11:5000
5431:auth_url = http://192.168.56.11:35357
5432:memcached_servers = 192.168.56.11:11211
5433:auth_type = password
5434:project_domain_name = default
5435:user_domain_name = default
5436:project_name = service
5437:username = nova
5438:password = nova
5673:virt_type=kvm
6469:url = http://192.168.56.11:9696
6470:auth_url = http://192.168.56.11:35357
6471:auth_type = password
6472:project_domain_name = default
6473:user_domain_name = default
6474:region_name = RegionOne
6475:project_name = service
6476:username = neutron
6477:password = neutron
6713:lock_path=/var/lib/nova/tmp
8368:enabled=true
8384:keymap=en-us
8391:vncserver_listen=0.0.0.0
8403:vncserver_proxyclient_address=192.168.56.12                               # vncserver_proxyclient_address每个计算节点不同
8422:novncproxy_base_url=http://192.168.56.11:6080/vnc_auto.html

# 启动服务
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
# 控制节点执行如下命令,确定控制节点已经识别到计算节点
[root@linux-node1 ~]#  openstack compute service list
+----+------------------+-------------------------+----------+---------+-------+----------------------------+
| ID | Binary           | Host                    | Zone     | Status  | State | Updated At                 |
+----+------------------+-------------------------+----------+---------+-------+----------------------------+
|  1 | nova-scheduler   | linux-node1.example.com | internal | enabled | up    | 2017-01-13T13:27:45.000000 |
|  2 | nova-conductor   | linux-node1.example.com | internal | enabled | up    | 2017-01-13T13:27:49.000000 |
|  3 | nova-consoleauth | linux-node1.example.com | internal | enabled | up    | 2017-01-13T13:27:45.000000 |
|  6 | nova-compute     | linux-node2.example.com | nova     | enabled | up    | 2017-01-13T13:27:47.000000 |
+----+------------------+-------------------------+----------+---------+-------+----------------------------+

 

posted @ 2017-01-13 20:30  每天进步一点点!!!  阅读(675)  评论(0编辑  收藏  举报