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 | +----+------------------+-------------------------+----------+---------+-------+----------------------------+
出处:http://www.cnblogs.com/madsnotes/
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。