diff --git a/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java index a15ba2fb819..5d8d4838b96 100644 --- a/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java +++ b/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; @@ -426,7 +427,10 @@ public class ElasticLoadBalancerManagerImpl implements } private DomainRouterVO findELBVmWithCapacity(Network guestNetwork, IPAddressVO ipAddr) { - List elbVms = _routerDao.listByNetworkAndRole(guestNetwork.getId(), Role.LB); + List unusedElbVms = _elbVmMapDao.listUnusedElbVms(); + if (unusedElbVms.size() > 0) { + return unusedElbVms.get(new Random().nextInt(unusedElbVms.size())); + } return null; }