linux云计算Openstack创建虚拟机步骤2(nova组件控制节点和
计算节点)
Nova服务组件介绍
1.Nova服务部署⼯作流程
nova 计算服务(经典)⼀套控制器openstack 框架
nova- api: 接收处理外界实例相关请求(创建实例) (os cpu⽹络等配置 )
把实例元数据写到nova数据库
请求放到消息队列(消息队列实现异步通信 )
nova-scheduler: 调度-- 选择最合适的计算节点来创建实例
nova- compute: 创建实例(具体⼲活) -- hypervisor来管理⼀ driver
nova-conductor: 对接nova数据库 computer通过消息队列连接到数据库
openstack 分布式
nova 分层各司其职
公司
2.⼯作流程 6步
简单来说
1.⽤户发起请求
2.Apl请求发送消息队列进⾏调度scheduler(Apl接受请求,写到数据库中)
3.调度结果放到队列中分配到主机上的任务分配到哪台机器哪台机器取这个调度结果消息
4.消息队列通过conductor从数据库中取消息
5.取完之后将信息通过消息队列发送到computer主机上
1.客户(可以是OpenStack最终⽤户,也可以是其他程序)向API(nova-api)发送请求:“帮我创建⼀个虚机”;
2.API对请求做⼀些必要处理后,向Messaging(RabbitMQ)发送了⼀条消息:“让Scheduler创建⼀个虚机”;
3.Scheduler(nova-scheduler)从Messaging获取到API发给它的消息,然后执⾏调度算法,从若⼲计算节点中选出节点 A ;
4.Scheduler向Messaging发送了⼀条消息:“在计算节点 A 上创建这个虚机”
5.计算节点 A 的Compute(nova-compute)从Messaging中获取到Scheduler发给它的消息,然后在本节点的Hypervisor上启动虚机;
6.在虚机创建的过程中,Compute如果需要查询或更新数据库信息,会通过Messaging向Conductor(nova-conductor)发送消息,Conductor负责数据库访问。
2.Openstack 通⽤设计思路 Nova组件介绍
1.设计思路
Openstack设计思路
API前端服务
虚拟机安装vim命令Scheduler调度服务
Worker⼯作服务
Driver框架
2.组件介绍
Nova由很多⼦服务组成,同时OpenStack是⼀个分布式系统,对于Nova这些服务会部署在两类节点上,计算节点和控制节点,
计算节点上安装了Hypervisor,上⾯运⾏虚拟机,只有nova-compute需要放在计算节点上,其他⼦服务则是放在控制节点上的。
lnova-api
lnova-api-metadata
lnova-compute
lnova-placement-api
lnova-scheduler
lnova-conductor
lnova-consoleauth
lnova-novncproxy
lThe queue
lSQL database
3.Nova⽀持的hypervisor
nova-compute运⾏在计算节点上,通过插件形式对Hypervisor进⾏管理,当前的版本(Ocata),对各种主流的虚拟化平台都提供了⽀持,
典型地通过XenAPI/vCenter API/Libvirt等所提供的插件接⼝执⾏虚拟机的创建、终⽌、迁移等⽣命周期管理。
4.Nova操作指令
常规操作
常规操作中,Launch、Start、Reboot、Shut Off 和 Terminate 都很好理解。
通过应⽤不同的 flavor 分配给 instance 的资源。
可以防⽌对 instance 的误操作。
暂停当前 instance,并在以后恢复。 Pause 和 Suspend 的区别在于 Pause 将 instance 的运⾏状态保存在计算节点的内存中,⽽ Suspend 保存在磁盘上。Pause 的优点是 Resume 速度⽐ Suspend 快;
缺点是如果计算节点因某种原因重启,内存数据丢失,就⽆法 Resume 了,⽽ Suspend 则没有这个问题。
备份 instance 到 Glance。 Snapshot ⽣成的 image 可⽤于故障恢复,或者以此为模板部署新的 instance。
3.Nova控制节点服务案例做⼀个主键之前先建⽴数据库1.Nova创建三个数据库授权
mysql -u root -p123登录数据库
CREATE DATABASE nova_api;创建三个库
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;Cell单元格的意思
sql数据库和消息队列压⼒最⼤
授权每个库三个权
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'controller' IDENTIFIED BY '123'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller' IDENTIFIED BY '123'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'controllert' IDENTIFIED BY '123'; GRANT ALL
PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123';
2.注册keystone消息创建nova⽤户绑定⾓⾊暴露url 端⼝为8774
创建⽤户
. admin.sh
openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin绑定admin⾓⾊
注册service服务暴露出url 端⼝为 8774
注意 --符号问题
openstack service create --name nova --description "OpenStack Compute" compute注册服务service
3.再创建placement⽤户添加⾓⾊注册服务暴露endpoint 的url 端⼝为8778 openstack user create --domain default --password-prompt placement
openstack role add --project service --user placement admin为placement创建⾓⾊为admin openstack service create --name placement --description "Placement API" placement 注册服务
注意 :controlle可暴露出去写公⽹IP也可以
4.安装软件包修改配置⽂件/etc/f (修改9处)
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api-y安装五个软件包
vim /etc/f
1.
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123@controller
my_ip = 192.168.20.40控制节点IP
use_neutron = True启⽤neutron
firewall_driver = nova.virt.firewall.NoopFirewallDriver
2.
[api_database]api库
connection = mysql+pymysql://nova:123@controller/nova_api
3.
[database] 主库
connection = mysql+pymysql://nova:123@controller/nova
4.
[api]指定认证⽅式
auth_strategy = keystone
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论