1. neutron中plugin与agent是一一对应的吗?
在不使用ml2时,plugin与agent一一对应,如ovs-plugin与ovs-agent;当使用ml2 plugin时,该plugin可以对应多种agent,如ovs-agent,linuxbridge-agent等。
2. neutron server能同时使用多个plugin吗?
plugin分为 core plugin 与 service plugin。
core plugin 只能使用一个,如ml2 plugin,至于可以使用哪些core plugin,都在neutron/plugins文件夹下,具体使用了哪种core plugin,定义在neutron.conf的core_plugin字段。
service plugin能使用多个,如LB plugin、L3 plugin等,可以使用哪些service plugin,都在neutron/services文件夹下,具体使用了哪种service plugin,定义在neutron.conf的service_plugins字段。
3. 是不是使用了ml2 plugin,agent 可以同时使用ovs和linuxbridge?
应该说一个host只能使用一种agent,如controller node 使用neutron server+ml2 plugin,compute node1 使用ovs agent,compute node2 使用linuxbridge agent。
4. G版本后,为何取消nova-compute直接访问数据库,而由nova-conductor代替?
- 安全考虑。因为compute节点通常会运行不可信的用户负载,一旦服务被攻击或用户虚拟机的流量溢出,则数据库会面临直接暴露的风险。
- 方便升级。将nova-compute与数据库解耦的同时,也会与模式(schema)解耦,因此就不会担心旧的代码访问新的数据库模式。
目前,nova-conductor暴露的方法主要是数据库访问,但后续从nova-compute移植更多的功能,让nova-compute看起来更像一个没有大脑的干活者,而nova-conductor则会实现一些复杂而耗时的任务,比如migration(迁移)或者resize(修改虚拟机规格)。
应该避免nova-conductor与nova-compute部署在同一个计算节点,否则移除直接数据库访问就没有任何意义了。同其他nova服务(nova-api, nova-scheduler)一样,nova-conductor也可水平扩展,即可以在不同的物理机上运行多个nova-conductor实例。
5. 创建VM状态变化过程如何?
vm_state 只会从building到active状态
task_state 状态变化:scheduling-> None -> networking -> block-device-mapping -> spawn -> None
6.