Starting from Fuel 5.0 nova-compute services that manage virtual machines in vSphere clusters via vCenter server are deployed on Controller nodes, starting from here and below mentioning of ‘nova-compute’ term we implicitly consider that service is configured with VCDriver. Right now it is not possible for user to specify node on which these services will be running. Some deployment scenarios where vSphere is involved require more flexibility, but Fuel does not provide a flexible way to distribute nova-compute services among available nodes.
When vCenter is integrated with OpenStack it is quite feasible to use vSphere VMs as hosts for OpenStack. VMware best practices recommend to deploy vCenter server onto virtual machine that runs on ESXi host .
Also there is a problem with OpenStack cluster expansion with new vSphere clusters, when OpenStack is deployed and running. The only way to expand OpenStack cluster and execute puppet run in Fuel is to add a new node to cluster. Since all web UI controls are disabled after cluster is successfully deployed, cloud operator cannot specify more vSphere clusters on the VMware tab and press Deploy Changes button. Right now there is no way to add more vSphere clusters after OpenStack was deployed with Fuel. Right now it is not possible to add vSphere clusters to deployed and running OpenStack cloud. This specification describes a way how to solve this problem.
This specification proposes to introduce new role compute-vmware that will allow deploy nova-compute service on standalone node.
After implementing this specification end user will be able to assign a node role compute-vmware and specify which vSphere cluster will be managed by this node/vSphere VM. After cluster is deployed, it will be possible to add vSphere clusters on the VMware tab and assign compute-vmware role to free nodes.
This specification does not propose to change current situation with nova-compute deployment on controller nodes.
Special attribute will be provided on the VMware tab in ‘Nova computes’ section. This attribute will be implemented as dropdown UI control that will hold names of nodes that were assigned compute-vmware role and special value controllers that let user deploy nova-compute usual way (on controller nodes). If user decides that particular service is going to be running on such node he selects a node in this dropdown list.
It will be not possible to combine compute-vmware role any other available roles.
Cloud operator workflow will look like this:
If we move nova-compute from controller nodes to standalone host we lose HA support for this service, because now it is runs under pacemaker supervision. If this host on which nova-compute will be running is a vSphere VM then we can rely on VMware HA .
We can still run nova-compute services on Controller nodes, but we need to implement mechanism to run puppet on nodes without adding new node to deployed OpenStack cluster, but this alternative will not solve flexible service distribution problem.
VMware tab on Fuel web UI requires additional UI control - dropdown list, which will hold names of nodes that were assigned compute-vmware role and special value controllers which means that service will be deployed on controller nodes. While there are no nodes with compute-vmware role, value controllers is the only option for dropdown list, it is considered as a sane default value. openstack.yaml will be extended with new metadata for target_node attribute in vmware_attributes section.
openstack.yaml ... # target_node metadata definition vmware_attributes_metadata: editable: metadata: ... name: "target_node" type: "select" label: "Target node" description: "Target node for nova-compute service" # target_node definition ... value: availabitliy_zones: - az_name: "vcenter" vcenter_host: "" ... target_node: options: - id: "controllers" label: "controllers" - id: "node-2" label: "Supermicro X9DRW" current: id "controllers" label: "controllers"
Nailgun should be able to serialize new attribute target_node and pass it into astute.yaml file:
/etc/astute.yaml ... vcenter: computes: - datastore_regex: "openstack-.*" service_name: cluster1 availability_zone_name: vcenter vc_cluster: Cluster1 vc_host: 172.16.0.254 vc_password: Qwer!1234 vc_user: email@example.com target_node: controllers - datastore_regex: "openstack-.*" service_name: cluster2 availability_zone_name: vcenter vc_cluster: Cluster2 vc_host: 172.16.0.254 vc_password: Qwer!1234 vc_user: firstname.lastname@example.org target_node: node-2
User must be able to select on which nodes he wants to run nova-compute services. Actually he had to decide which nodes will manage by which clusters.
Ceilometer compute agent must be deployed on node with compute-vmware role in order to retrieve telemetry data if Ceilometer support was enabled.
Specification requires changes in Fuel web UI interface in order to provide desired user experience. Frontend code must also be able to fetch list of nodes with compute-vmware role in order to render their names in dropdown UI control.
Controls on the VMware tab must not be locked after cluster is deployed to allow user add more vSphere clusters.
Deployment serializer must pass new attribute to orchestrator.
Fuel library ‘vmware’ module must deploy ceilometer compute agent on node with compute-vmware role if ceilometer support was enabled for OpenStack environment.
Igor Zinovik <email@example.com>
Mandatory design review:
Following test cases must be implemented:
User can deploy nova-compute service on node with compute-vmware role.
Documentation must describe new role, what problems it solves, what limitations are related to new role.