diff --git a/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java index 2284add3cbc..8eba1e4d831 100644 --- a/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java +++ b/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java @@ -429,7 +429,12 @@ public class ElasticLoadBalancerManagerImpl implements private DomainRouterVO findELBVmWithCapacity(Network guestNetwork, IPAddressVO ipAddr) { List unusedElbVms = _elbVmMapDao.listUnusedElbVms(); if (unusedElbVms.size() > 0) { - return unusedElbVms.get(new Random().nextInt(unusedElbVms.size())); + List candidateVms = new ArrayList(); + for (DomainRouterVO candidateVm: unusedElbVms) { + if (candidateVm.getPodIdToDeployIn() == getPodIdForDirectIp(ipAddr)) + candidateVms.add(candidateVm); + } + return candidateVms.size()==0?null:candidateVms.get(new Random().nextInt(candidateVms.size())); } return null; }