Transcript
Page 1: Virtual Router in CloudStack 4.4

Virtual Router in CloudStack 4.4Sheng Yang

Virtual Router in CloudStack 4.4Sheng Yang

Page 2: Virtual Router in CloudStack 4.4

Virtual Router(VR) in CloudStack

VPC VRPublic network

Web Tier: 10.1.0.1/24

App Tier: 10.1.1.1/24

DB Tier: 10.1.2.1/24

Web 1 Web 3Web 2

App 1 App 2

DB Master DB Slave

10.1.0.1/16

Site-to-site VPN

Remote Access VPN

Public Load balancing

VLAN 1001

VLAN 1000

VLAN 1002

Remote NetworkRouter

Page 3: Virtual Router in CloudStack 4.4

VR code flow – VirtualRouterElement

– Interface for NetworkOrchestrator– VirtualNetworkApplianceManager

– applyRules()– finalizeVirtualMachineProfile()– finalizeCommandsOnStart()

– In VR– /etc/init.d/cloud-early-config– /opt/cloud/bin/

Page 4: Virtual Router in CloudStack 4.4

Before 4.4 – Different hypervisor resource would implement different

way to execute commands– Because VR is not a “host” in CloudStack– Commands can be executed in different environment

– On the host, or in the VR– Commands can only be executed one by one

– It would take significant time to program large numbers of commands

Page 5: Virtual Router in CloudStack 4.4

New in 4.4 – Introduce the new VirtualRoutingResource

– Handle all the commands for VR– One instance for one hypervisor resource– All execution would be done inside VR

– A new VirtualRouterDeployer interface for hypervisor which need to programming VR

– PrepareCommand()– ExecuteInVR()– CopyFileToVR()– CleanupCommand()

Page 6: Virtual Router in CloudStack 4.4

New in 4.4 (cont.) – Introducing aggregation mechanism to accelerate

commands execution in VR– Involved when VR booting/recreating– Delay and merge all the commands execution at

VirtualRoutingResource level– One SSH for all initialization commands

Page 7: Virtual Router in CloudStack 4.4

AggregationControlCommand– Action

– Start, Finish, Cleanup– Delay execution initialization commands to a queue

after start– Return success immediately for commands during

the aggregated period– Merge and execute the commands when finish

– By generating and applying a single configuration file to VR

– Clean up the queue at last– In case things goes wrong in merge commands

Page 8: Virtual Router in CloudStack 4.4

AggregationControlCommand (cont.)– Only support commands return true or false

– No query command– Only used when boot up or recreate VR– One failure fails all the following commands

– No rollback available– Detail logs in /var/log/cloud.log

– Rotated

Page 9: Virtual Router in CloudStack 4.4

Performance measurement– Create a unit test for performance testing

– Implement VirtualRouterDeployer interface– Using VirtualRoutingResource– Test against pre-created VR– Execute a large numbers of commands

– Simulate different command execution flow for hypervisors

– Direct access to VR for VMware– One hop on host for XenServer

Page 10: Virtual Router in CloudStack 4.4

Performance result

1000 DHCP and VMData

1000 Port Forwarding Rules

0 200 400 600 800 1000 1200 1400

Aggregated

VMware Original

Xen Original

Time consumed in seconds, smaller is better

Page 11: Virtual Router in CloudStack 4.4

More in the plan– Further optimize VR configuration

– Current implementation is simply execute the command queue in the VR

– In the future the configuration file can be generated in mgmt server then replace in VR, which make VR update an almost O(1) action

– Better way to update software on VR– Debian repository may would be the choice

Page 12: Virtual Router in CloudStack 4.4

Thanks!Thanks!


Top Related