Feature #2347
[anti-]affinity functionality for VMs to be placed in the same physical host
Status: | Closed | Start date: | 09/30/2013 | |
---|---|---|---|---|
Priority: | Sponsored | Due date: | ||
Assignee: | - | % Done: | 0% | |
Category: | Core & System | |||
Target version: | Release 5.4 | |||
Resolution: | fixed | Pull request: |
Description
The idea is to be able to tell OpenNebula whether a group of VMs should be placed in the same physical host (affinity) or each in a different host (antiaffinity).
The best fit for this request is to handle it at the OneFlow level. A template for a VM that participates on a Service would be able to include:
AFFINITY_TEMPLATE_IDs=<templateid-A>,<templateid-B>
ANTI_AFFINITY_TEMPLATE_IDs=<templateid-X>,<templateid-Y>
-- This VM would then be placed by OpenNebula in a physical host where VMs belonging to the same service AND coming from templates ID=(A or B) are already running or will be placed by OpenNebula afterwards.
-- VMs from the same service coming from templates with ID=(X or Y) won't be placed in this physical host.
Associated revisions
F #2347: VMGroup base classes, intial version
F #2347: Allocate, delete and info API calls for the VMGroup
F #2347: VMGroup Roles managed in a separate clas
F #2347: Better parsing of VMGroup attributes
F #2347: Fix bugs. Show role names in vm group output
F #2347: Mora API calls for VMGroup
F #2347: Add/del methods for VMGroup
F #2347: VMs are added/removed from VMGROUP roles. VMGROUP with VMs
cannot be updated
F #2347: Fixes some bugs to VMGroups
F #2347: ACL support for VMGroups
F #2347: Show the total number of VMs in Group in list
F #2347: Moved VMGroup logic from VirtualMachine to VMGroupPool. Added
authorization tests to VMGroup usage in VMs
F #2347: VMGroupRule class. Methods to check rule consistency
F #2347: Add placement rules consistency checks
F #2347: Base classes for Scheduler to gather VMGroup information
F #2347: Split rule and role logic in different objects and libraries to reuse it in scheduler
F #2347: Load roles and rules in the scheduler. Helper methods to
generate requirement expressions
F #2347: Dump VMGroups in scheduler output for DEBUG
F #2347: Set antiaffinity placement constraints for VMs
F #2347: Host affinity rules
F #2347: Get information about VMs in VMGroups
F #2347: Schedule affined groups
F #2347: Re-evaluate host requirements in dispatch loop to fulfil anti-affinity rules
F #2347: Fix minor bugs in CLI. Better dispatching for affined groups,
fix issue for anti-affined sets
F #2347: Update default ACLS to grant VMGroup create permission
F #2347: Add more information in onevmgroup show command for each role
Feature 2347 (#192)
- F #2347 changed install.sh file for add the new JSON
- F #2347 Added a new JSON file for the new tab VMGroup
- F #2347 added a new file and folder for the new tab VMGroup
- F #2347 changed name to vm_group
- F #2347
- F #2347
- F #2347 removed roles tab in fill function, for update
- F #2347 Finalized vm_group tab
- F #2347 removed test file and changed role tab hbs
Feature 2347 (#192)
- F #2347 changed install.sh file for add the new JSON
- F #2347 Added a new JSON file for the new tab VMGroup
- F #2347 added a new file and folder for the new tab VMGroup
- F #2347 changed name to vm_group
- F #2347
- F #2347
- F #2347 removed roles tab in fill function, for update
- F #2347 Finalized vm_group tab
- F #2347 removed test file and changed role tab hbs
(cherry picked from commit 882f1bc778e23b69b815e2f866c739d3941fc571)
Changes (#198)
- Zoom graphs
- activated zoom and pan in graphs
- F #4359 Added auth panel to user settings
- F #2347 Added new section to VMTemplate for select a vmgroup
- F #2347 Added new checkbox for select vmgroup
- Removed conflict HEAD
- F #2347 Added possibility of select a vmgroup when:
- Instantiate a VM
- Create or Update a TEMPLATE
- Added new actions
- Added UID, GID and REQUEST_ID to placement into vm tab
- remove binding.pry()
- Updated vmgroup
- F #2347 changed checkbox per select when fill the vmgroup
- F #2347 Checking same group values
F #2347: better output for onevm
F #2347: Include build options for JAVA tests
F #2347: add onevmgroup man page
F #2347 Added invalid chars into role name (&|:\\;/'#{}$<>) (#224)
History
#1 Updated by OpenNebula Systems Support Team almost 8 years ago
It would be more useful to incorporate this into the core of OpenNebula and scheduler so that it supports the resched functionality, and taking into account the count of VMs as well.
AFFINITY=”SELF<2,X=1,Y>1,Z=0”
1. less that 2 of my template id
2. exactly 1 X template id
3. greater than 1 Y template id
4. none of Z template id
Additionally, using an AFFINITY_TAG may be more useful than the TEMPLATE_ID.
For example:
AFFINITY_TAG = database
AFFINITY_RULE = "database < 2"
This would allow for affinity rules to work across different templates that specify the same tag.
#2 Updated by Ruben S. Montero over 7 years ago
- Tracker changed from Request to Backlog
- Priority changed from Normal to High
#3 Updated by Ruben S. Montero over 4 years ago
- Tracker changed from Backlog to Feature
- Category changed from OneFlow to Core & System
- Priority changed from High to Sponsored
- Target version set to Release 5.4
#4 Updated by Ruben S. Montero about 4 years ago
- Status changed from Pending to Closed
- Resolution set to fixed