Add using the keepalived as a configurable value
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f2025169 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f2025169 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f2025169 Branch: refs/heads/master Commit: f2025169b139980817ba545240b3ec9d469c3ce0 Parents: caed60c Author: Gayan Gunarathne <[email protected]> Authored: Sun Jul 26 18:59:15 2015 +0530 Committer: Gayan Gunarathne <[email protected]> Committed: Mon Jul 27 15:02:11 2015 +0530 ---------------------------------------------------------------------- .../lvs-extension/src/main/bin/lvs-extension.sh | 3 +- .../org/apache/stratos/lvs/extension/LVS.java | 3 + .../stratos/lvs/extension/LVSConfigWriter.java | 95 ++++++++++---------- .../stratos/lvs/extension/LVSContext.java | 4 + 4 files changed, 59 insertions(+), 46 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/f2025169/extensions/load-balancer/lvs-extension/src/main/bin/lvs-extension.sh ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/lvs-extension/src/main/bin/lvs-extension.sh b/extensions/load-balancer/lvs-extension/src/main/bin/lvs-extension.sh index c276cd2..e769c32 100755 --- a/extensions/load-balancer/lvs-extension/src/main/bin/lvs-extension.sh +++ b/extensions/load-balancer/lvs-extension/src/main/bin/lvs-extension.sh @@ -44,7 +44,8 @@ properties="-Dlvs.private.ip=127.0.0.1 -Dservice.name=service-1 -Dlvs.service.virtualip.set=tomcat2|192.168.56.40,tomcat1|192.168.56.41 -Dschedule.algorithm=rr - -Dserver.state=MASTER" + -Dserver.state=MASTER + -Dkeepalived=false" # Uncomment below line to enable remote debugging http://git-wip-us.apache.org/repos/asf/stratos/blob/f2025169/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java index 6470a13..1d3c7e7 100644 --- a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java +++ b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java @@ -45,6 +45,7 @@ public class LVS implements LoadBalancer { private String keepAlivedStartCommand; private String serverState; private String scheduleAlgo; + private boolean isKeepAlivedUsed; public LVS() { this.executableFilePath = LVSContext.getInstance().getExecutableFilePath(); @@ -57,6 +58,8 @@ public class LVS implements LoadBalancer { this.keepAlivedStartCommand=LVSContext.getInstance().getKeepAlivedStartCommand(); this.serverState=LVSContext.getInstance().getServerState(); this.scheduleAlgo=LVSContext.getInstance().getLvsScheduleAlgo(); + this.isKeepAlivedUsed=LVSContext.getInstance().getIsKeepAlivedUsed(); + } /** http://git-wip-us.apache.org/repos/asf/stratos/blob/f2025169/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java index dcf2910..bd72a4c 100644 --- a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java +++ b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java @@ -50,6 +50,7 @@ public class LVSConfigWriter { private String virtualIPsForServices; private String serverState; private String scheduleAlgo; + private boolean isKeepAlived=false; public LVSConfigWriter(String templatePath, String templateName, String confFilePath, String statsSocketFilePath, String virtualIPsForServices, String serverState, @@ -76,7 +77,7 @@ public class LVSConfigWriter { String.format("No ports found in service: %s", service.getServiceName())); } generateConfigurationForCluster(cluster, service.getPorts(), configurationBuilder, virtualIPBuilder, - virtualIPsForServices, scheduleAlgo); + virtualIPsForServices, scheduleAlgo,isKeepAlived); } } @@ -148,7 +149,7 @@ public class LVSConfigWriter { */ private void generateConfigurationForCluster(Cluster cluster, Collection<Port> ports, StringBuilder text, StringBuilder virtualIPs, String virtualIPsForServices, - String scheduleAlgo) { + String scheduleAlgo,boolean isKeepAlived) { String commandClear = "ipvsadm --clear"; try { CommandUtils.executeCommand(commandClear); @@ -180,49 +181,53 @@ public class LVSConfigWriter { } throw new RuntimeException(e); } - for (String hostname : cluster.getHostNames()) { - if (virtualIpForService[0].equals(cluster.getServiceName())) { - - text.append("virtual_server ").append(virtualIpForService[1]).append(" ") - .append(port.getProxy()).append( - " {").append( - NEW_LINE); - text.append(TAB).append("delay_loop 10").append(NEW_LINE); - text.append(TAB).append("lvs_sched ").append(scheduleAlgo).append(NEW_LINE); - text.append(TAB).append("lvs_method DR").append(NEW_LINE); - text.append(TAB).append("persistence_timeout 5").append(NEW_LINE); - text.append(TAB).append("protocol TCP").append(NEW_LINE).append(NEW_LINE); - - //Start real servers block - - for (Member member : cluster.getMembers()) { - // Start upstream server block - text.append(TAB).append("real_server ").append(member.getHostName()).append(" ") - .append(port.getValue()).append(" {") - .append(NEW_LINE); - text.append(TAB).append(TAB).append("weight 50").append(NEW_LINE); - text.append(TAB).append(TAB).append("TCP_CHECK {").append(NEW_LINE); - text.append(TAB).append(TAB).append(TAB).append("connect_timeout 3").append(NEW_LINE); - text.append(TAB).append(TAB).append("}").append(NEW_LINE); - text.append(TAB).append("}").append(NEW_LINE); - String commandMember = "ipvsadm -a -t " + virtualIpForService[1] + ":" + port.getProxy()+" -r " + member.getHostName() + " -m"; - - try { - CommandUtils.executeCommand(commandMember); - } catch (IOException e) { - if (log.isErrorEnabled()) { - log.error(String.format("Could not run the command: %s", commandMember)); - } - throw new RuntimeException(e); - } - } - text.append("}").append(NEW_LINE); - isServiceAvailable = true; - virtualIPs.append(TAB).append(TAB).append(virtualIpForService[1]).append(NEW_LINE); - - } - } - } + + for (String hostname : cluster.getHostNames()) { + if (virtualIpForService[0].equals(cluster.getServiceName())) { + + text.append("virtual_server ").append(virtualIpForService[1]).append(" ") + .append(port.getProxy()).append( + " {").append( + NEW_LINE); + text.append(TAB).append("delay_loop 10").append(NEW_LINE); + text.append(TAB).append("lvs_sched ").append(scheduleAlgo).append(NEW_LINE); + text.append(TAB).append("lvs_method DR").append(NEW_LINE); + text.append(TAB).append("persistence_timeout 5").append(NEW_LINE); + text.append(TAB).append("protocol TCP").append(NEW_LINE).append(NEW_LINE); + + //Start real servers block + + for (Member member : cluster.getMembers()) { + // Start upstream server block + text.append(TAB).append("real_server ").append(member.getHostName()).append(" ") + .append(port.getValue()).append(" {") + .append(NEW_LINE); + text.append(TAB).append(TAB).append("weight 50").append(NEW_LINE); + text.append(TAB).append(TAB).append("TCP_CHECK {").append(NEW_LINE); + text.append(TAB).append(TAB).append(TAB).append("connect_timeout 3").append(NEW_LINE); + text.append(TAB).append(TAB).append("}").append(NEW_LINE); + text.append(TAB).append("}").append(NEW_LINE); + String commandMember = + "ipvsadm -a -t " + virtualIpForService[1] + ":" + port.getValue() + " -r " + + member.getHostName() + " -m"; + + try { + CommandUtils.executeCommand(commandMember); + } catch (IOException e) { + if (log.isErrorEnabled()) { + log.error(String.format("Could not run the command: %s", commandMember)); + } + throw new RuntimeException(e); + } + } + text.append("}").append(NEW_LINE); + isServiceAvailable = true; + virtualIPs.append(TAB).append(TAB).append(virtualIpForService[1]).append(NEW_LINE); + + } + + } + } if (!isServiceAvailable) { log.warn(String.format("Given service is not available in the topology %s", virtualIpForService[0])); } http://git-wip-us.apache.org/repos/asf/stratos/blob/f2025169/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSContext.java ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSContext.java b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSContext.java index 1307473..08feb71 100644 --- a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSContext.java +++ b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSContext.java @@ -196,4 +196,8 @@ public class LVSContext { public void setLvsScheduleAlgo(String lvsScheduleAlgo) { this.lvsScheduleAlgo = lvsScheduleAlgo; } + + public boolean getIsKeepAlivedUsed() { + return false; + } }
