Scale Hyper-V Neutron Agent
A typical medium sized hybrid cloud deployment consists of more than
50 Hyper-V compute nodes along with computes like KVM or ESX.
The rate at which VMs are spawned/updated under such a deployment is
around 25 operations/minute. And these operations consists of spawning,
updation and deletion of the VM and its properties (like security group rules).
At this rate the possibility of concurrent spawn or update operations on a
given compute is High. What is typically observed is a spawn rate of ~2 VM(s)/minute.
Since WMI is not that performant, a VM port binding in Hyper-V neutron agent takes
10x amount of time when compared to KVM IPtable.
The situation worsens when the number of SG Rules to apply increases for a given port
(with the number of SG members), and there are many ports in queue to treat.
Under such a scenario neutron agent running on Hyper-v compute fails to complete binding
security rules to the VM port in given time,and VM remains in-accessible on the allocated
IP address.
This blueprint addresses the neutron port binding failure on the agent by
introducing port binding concurrency.
Blueprint information
- Status:
- Complete
- Approver:
- Alessandro Pilotti
- Priority:
- High
- Drafter:
- Sonu
- Direction:
- Approved
- Assignee:
- Claudiu Belu
- Definition:
- Approved
- Series goal:
- None
- Implementation:
- Implemented
- Milestone target:
- None
- Started by
- Vinod Kumar
- Completed by
- Claudiu Belu
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
Scaling hyperv neutron agent
Gerrit topic: https:/
Addressed by: https:/
Port bind worker script
Addressed by: https:/
Implement concurrent port bind.
Addressed by: https:/
Hyper-V Code Decomposed & Worker Script
Addressed by: https:/
Hyper-V Code Decomposed & Async process support
Addressed by: https:/
Replaces vNIC periodic query with event listeners
Addressed by: https:/
Adds native thread pool
Addressed by: https:/
Ensure security groups are properly rebound
Addressed by: https:/
Adds trace to the port processing logic