Updated Branches: refs/heads/master 24101ae18 -> 8e2cec750
Improved error handling in load balancer extension api Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/8e2cec75 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/8e2cec75 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/8e2cec75 Branch: refs/heads/master Commit: 8e2cec75065f7774cb0a08554f6776a874572239 Parents: 24101ae Author: Imesh Gunaratne <[email protected]> Authored: Fri Nov 15 17:07:47 2013 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Fri Nov 15 17:07:47 2013 +0530 ---------------------------------------------------------------------- .../statistics/WSO2CEPStatsPublisher.java | 9 +- .../balancer/extension/api/LoadBalancer.java | 15 ++- .../extension/api/LoadBalancerExtension.java | 56 +++++---- .../api/LoadBalancerStatsNotifier.java | 2 +- .../LoadBalancerExtensionException.java | 41 ++++++ .../haproxy-extension/src/main/assembly/bin.xml | 8 ++ .../src/main/bin/haproxy-extension.sh | 13 +- .../stratos/haproxy/extension/HAProxy.java | 126 ++++++++++--------- .../haproxy/extension/HAProxyConfigWriter.java | 8 +- .../src/main/security/client-truststore.jks | Bin 0 -> 35240 bytes .../src/main/templates/haproxy.cfg.template | 1 + .../distribution/src/main/bin/stratos.bat | 2 +- .../distribution/src/main/bin/stratos.sh | 4 +- 13 files changed, 186 insertions(+), 99 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/statistics/WSO2CEPStatsPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/statistics/WSO2CEPStatsPublisher.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/statistics/WSO2CEPStatsPublisher.java index 2d41242..a5685a0 100644 --- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/statistics/WSO2CEPStatsPublisher.java +++ b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/statistics/WSO2CEPStatsPublisher.java @@ -43,16 +43,13 @@ public class WSO2CEPStatsPublisher implements LoadBalancerStatsPublisher { public WSO2CEPStatsPublisher() { AgentConfiguration agentConfiguration = new AgentConfiguration(); - // TODO get following from somewhere, without hard-coding. - System.setProperty("javax.net.ssl.trustStore", CarbonUtils.getCarbonHome()+ File.separator+"repository"+ - File.separator+"resources"+File.separator+"security"+File.separator+"client-truststore.jks" ); - System.setProperty("javax.net.ssl.trustStorePassword", "wso2carbon"); - Agent agent = new Agent(agentConfiguration); + //TODO read following from a config file? String ip = System.getProperty("thrift.receiver.ip"); String port = System.getProperty("thrift.receiver.port"); - //Using Asynchronous data publisher + + // Using asynchronous data publisher asyncDataPublisher = new AsyncDataPublisher("tcp://"+ip+":"+port+"", "admin", "admin", agent); String streamDefinition = "{" + " 'name':'" + CALL_CENTER_DATA_STREAM + "'," + http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancer.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancer.java b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancer.java index 9bd3881..b25a07e 100644 --- a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancer.java +++ b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancer.java @@ -19,6 +19,7 @@ package org.apache.stratos.load.balancer.extension.api; +import org.apache.stratos.load.balancer.extension.api.exception.LoadBalancerExtensionException; import org.apache.stratos.messaging.domain.topology.Topology; /** @@ -28,23 +29,27 @@ public interface LoadBalancer { /** * Start a new load balancer instance. + * Throw an exception if the start operation fails. */ - void start(); + void start() throws LoadBalancerExtensionException; /** - * Stop the running load balancer instance. + * Stop running load balancer instance. + * Throw an exception if the stop operation fails. */ - void stop(); + void stop() throws LoadBalancerExtensionException; /** * Configure the load balancer using the given topology. + * Throw an exception is the configure operation fails. * @param topology */ - void configure(Topology topology); + void configure(Topology topology) throws LoadBalancerExtensionException; /** * Reload load balancer configuration using the given topology without interrupting the incoming requests. + * Throw an exception if the reload operation fails. * @param topology */ - void reload(Topology topology); + void reload(Topology topology) throws LoadBalancerExtensionException; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java index b1118d5..63df3b7 100644 --- a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java +++ b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java @@ -21,20 +21,13 @@ package org.apache.stratos.load.balancer.extension.api; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.load.balancer.common.statistics.LoadBalancerStatsPublisher; -import org.apache.stratos.load.balancer.common.statistics.WSO2CEPStatsPublisher; import org.apache.stratos.load.balancer.common.topology.TopologyReceiver; -import org.apache.stratos.messaging.domain.topology.Cluster; -import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.event.topology.*; import org.apache.stratos.messaging.message.processor.topology.TopologyEventProcessorChain; import org.apache.stratos.messaging.message.receiver.topology.TopologyEventMessageDelegator; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; -import java.util.HashMap; -import java.util.Map; - /** * Load balancer extension thread for executing load balancer life-cycle according to the topology updates * received from the message broker. @@ -44,6 +37,7 @@ public class LoadBalancerExtension implements Runnable { private LoadBalancer loadBalancer; private LoadBalancerStatsReader statsReader; + private boolean loadBalancerStarted; public LoadBalancerExtension(LoadBalancer loadBalancer, LoadBalancerStatsReader statsReader) { this.loadBalancer = loadBalancer; @@ -65,9 +59,8 @@ public class LoadBalancerExtension implements Runnable { } catch (Exception e) { if (log.isErrorEnabled()) { - log.error(e); + log.error("Could not start load balancer extension", e); } - loadBalancer.stop(); } } @@ -78,15 +71,23 @@ public class LoadBalancerExtension implements Runnable { @Override protected void onEvent(Event event) { - // Configure load balancer - loadBalancer.configure(TopologyManager.getTopology()); + try { + // Configure load balancer + loadBalancer.configure(TopologyManager.getTopology()); - // Start load balancer - loadBalancer.start(); + // Start load balancer + loadBalancer.start(); + loadBalancerStarted = true; - // Complete topology event is only received once - // Remove event listener - messageDelegator.removeCompleteTopologyEventListener(this); + // Complete topology event is only received once + // Remove event listener + messageDelegator.removeCompleteTopologyEventListener(this); + } + catch (Exception e) { + if(log.isErrorEnabled()) { + log.error("Could not start load balancer", e); + } + } } }); return messageDelegator; @@ -97,33 +98,46 @@ public class LoadBalancerExtension implements Runnable { processorChain.addEventListener(new MemberActivatedEventListener() { @Override protected void onEvent(Event event) { - loadBalancer.reload(TopologyManager.getTopology()); + reloadConfiguration(); } }); processorChain.addEventListener(new MemberSuspendedEventListener() { @Override protected void onEvent(Event event) { - loadBalancer.reload(TopologyManager.getTopology()); + reloadConfiguration(); } }); processorChain.addEventListener(new MemberTerminatedEventListener() { @Override protected void onEvent(Event event) { - loadBalancer.reload(TopologyManager.getTopology()); + reloadConfiguration(); } }); processorChain.addEventListener(new ClusterRemovedEventListener() { @Override protected void onEvent(Event event) { - loadBalancer.reload(TopologyManager.getTopology()); + reloadConfiguration(); } }); processorChain.addEventListener(new ServiceRemovedEventListener() { @Override protected void onEvent(Event event) { - loadBalancer.reload(TopologyManager.getTopology()); + reloadConfiguration(); } }); return processorChain; } + + private void reloadConfiguration() { + try { + if(loadBalancerStarted) { + loadBalancer.reload(TopologyManager.getTopology()); + } + } + catch (Exception e) { + if(log.isErrorEnabled()) { + log.error("Could not reload load balancer configuration", e); + } + } + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerStatsNotifier.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerStatsNotifier.java b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerStatsNotifier.java index 532ded3..5beaec0 100644 --- a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerStatsNotifier.java +++ b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerStatsNotifier.java @@ -31,7 +31,7 @@ import java.util.HashMap; import java.util.Map; /** - * + * Load balancer statistics notifier thread for publishing statistics periodically to CEP. */ public class LoadBalancerStatsNotifier implements Runnable { private static final Log log = LogFactory.getLog(LoadBalancerStatsNotifier.class); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/exception/LoadBalancerExtensionException.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/exception/LoadBalancerExtensionException.java b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/exception/LoadBalancerExtensionException.java new file mode 100644 index 0000000..e9e5aa4 --- /dev/null +++ b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/exception/LoadBalancerExtensionException.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.stratos.load.balancer.extension.api.exception; + +/** + * Load balancer extension exception. + */ +public class LoadBalancerExtensionException extends Exception { + + public LoadBalancerExtensionException() { + } + + public LoadBalancerExtensionException(Throwable throwable) { + super(throwable); + } + + public LoadBalancerExtensionException(String message) { + super(message); + } + + public LoadBalancerExtensionException(String message, Throwable throwable) { + super(message, throwable); + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/extensions/load-balancer/haproxy-extension/src/main/assembly/bin.xml ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/haproxy-extension/src/main/assembly/bin.xml b/extensions/load-balancer/haproxy-extension/src/main/assembly/bin.xml index 2f73769..63ab824 100644 --- a/extensions/load-balancer/haproxy-extension/src/main/assembly/bin.xml +++ b/extensions/load-balancer/haproxy-extension/src/main/assembly/bin.xml @@ -42,6 +42,14 @@ </includes> </fileSet> <fileSet> + <directory>${project.basedir}/src/main/security</directory> + <outputDirectory>/security</outputDirectory> + <fileMode>0600</fileMode> + <includes> + <include>client-trustsore.jks</include> + </includes> + </fileSet> + <fileSet> <directory>${project.basedir}/src/main/templates</directory> <outputDirectory>/templates</outputDirectory> <fileMode>0600</fileMode> http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/extensions/load-balancer/haproxy-extension/src/main/bin/haproxy-extension.sh ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/haproxy-extension/src/main/bin/haproxy-extension.sh b/extensions/load-balancer/haproxy-extension/src/main/bin/haproxy-extension.sh index d00b8b9..a5bd63f 100755 --- a/extensions/load-balancer/haproxy-extension/src/main/bin/haproxy-extension.sh +++ b/extensions/load-balancer/haproxy-extension/src/main/bin/haproxy-extension.sh @@ -23,6 +23,17 @@ echo "Starting haproxy extension..." lib_path=./../lib/ class_path=`echo ../lib/*.jar | tr ' ' ':'` -properties="-Djndi.properties.dir=./../conf -Dexecutable.file.path=haproxy -Dtemplates.path=./../templates -Dtemplates.name=haproxy.cfg.template -Dconf.file.path=/tmp/haproxy.cfg" +properties="-Djndi.properties.dir=./../conf + -Dexecutable.file.path=/Users/imesh/dist/haproxy/haproxy-1.4.24/haproxy + -Dtemplates.path=./../templates + -Dtemplates.name=haproxy.cfg.template + -Dconf.file.path=/tmp/haproxy.cfg" + -Djavax.net.ssl.trustStore=./../security/client-truststore.jks + -Djavax.net.ssl.trustStorePassword=wso2carbon + -Dthrift.receiver.ip=localhost + -Dthrift.receiver.port=7615 + +# Uncomment below line and add $debug next to $properties to enable remote debugging +#debug="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" java -cp "$class_path" $properties org.apache.stratos.haproxy.extension.Main -Dp1=sample_value $* http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxy.java ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxy.java b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxy.java index cdb8bd3..dac52af 100644 --- a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxy.java +++ b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxy.java @@ -24,12 +24,13 @@ import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.load.balancer.extension.api.exception.LoadBalancerExtensionException; import org.apache.stratos.messaging.domain.topology.Topology; import org.apache.stratos.load.balancer.extension.api.LoadBalancer; /** * HAProxy load balancer life-cycle implementation. - * + * <p/> * Thanks to Vaadin for HAProxyController implementation: * https://vaadin.com/license * http://dev.vaadin.com/browser/svn/incubator/Arvue/ArvueMaster/src/org/vaadin/arvue/arvuemaster/HAProxyController.java @@ -52,24 +53,6 @@ public class HAProxy implements LoadBalancer { this.processIdFilePath = confFilePath.replace(".cfg", ".pid"); } - public void reload(Topology topology) { - configure(topology); - reloadConfiguration(); - } - - public void configure(Topology topology) { - if(log.isInfoEnabled()) { - log.info("Configuring haproxy instance..."); - } - - HAProxyConfigWriter writer = new HAProxyConfigWriter(templatePath, templateName, confFilePath); - writer.write(topology); - - if(log.isInfoEnabled()) { - log.info("Configuration done"); - } - } - private void executeCommand(String command) throws IOException { String line; Runtime r = Runtime.getRuntime(); @@ -79,31 +62,30 @@ public class HAProxy implements LoadBalancer { Process p = r.exec(command); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); while ((line = in.readLine()) != null) { - if(log.isInfoEnabled()) { + if (log.isInfoEnabled()) { log.info(line); } } StringBuilder sb = new StringBuilder(); BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream())); while ((line = error.readLine()) != null) { - if(log.isInfoEnabled()) { + if (log.isInfoEnabled()) { log.info(line); sb.append(line + NEW_LINE); } } - if(sb.length() > 0) { + if (sb.length() > 0) { throw new RuntimeException("Command execution failed: " + NEW_LINE + sb.toString()); } } - private void reloadConfiguration() { - - if(log.isInfoEnabled()) { - log.info("Reloading configuration..."); - } - BufferedReader input = null; + private void reloadConfiguration() throws LoadBalancerExtensionException { try { + if (log.isInfoEnabled()) { + log.info("Reloading configuration..."); + } + // Read pid String pid = ""; BufferedReader reader = new BufferedReader(new FileReader(processIdFilePath)); @@ -115,70 +97,90 @@ public class HAProxy implements LoadBalancer { // Execute hot configuration deployment String command = executableFilePath + " -f " + confFilePath + " -p " + processIdFilePath + " -sf " + pid; executeCommand(command); - if(log.isInfoEnabled()) { + if (log.isInfoEnabled()) { log.info("Configuration done"); } } catch (Exception e) { - if(log.isErrorEnabled()) { - log.error("Reconfiguration failed", e); + if (log.isErrorEnabled()) { + log.error("Reconfiguration failed"); } + throw new LoadBalancerExtensionException(e); } } - public void start() { + public void reload(Topology topology) throws LoadBalancerExtensionException { + configure(topology); + reloadConfiguration(); + } + + public void configure(Topology topology) throws LoadBalancerExtensionException { + + try { + if (log.isInfoEnabled()) { + log.info("Configuring haproxy instance..."); + } + + HAProxyConfigWriter writer = new HAProxyConfigWriter(templatePath, templateName, confFilePath); + writer.write(topology); + + if (log.isInfoEnabled()) { + log.info("Configuration done"); + } + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not configure haproxy"); + } + throw new LoadBalancerExtensionException(e); + } + } + + public void start() throws LoadBalancerExtensionException { // Check for configuration file - File conf; - conf = new File(confFilePath); + File conf = new File(confFilePath); if (!conf.exists()) { - throw new RuntimeException("Could not find haproxy configuration file"); + throw new LoadBalancerExtensionException("Could not find haproxy configuration file"); } // Start haproxy and write pid to processIdFilePath try { - String command = executableFilePath + " -f " + confFilePath +" -p " + processIdFilePath; + String command = executableFilePath + " -f " + confFilePath + " -p " + processIdFilePath; executeCommand(command); - if(log.isInfoEnabled()) { + if (log.isInfoEnabled()) { log.info("haproxy started"); } } catch (Exception e) { - if(log.isErrorEnabled()) { - log.error("Could not start haproxy", e); + if (log.isErrorEnabled()) { + log.error("Could not start haproxy"); } + throw new LoadBalancerExtensionException(e); } } - public void stop() { + public void stop() throws LoadBalancerExtensionException { - // Read the PID's - Vector<String> pids = new Vector<String>(); try { + // Read the PIDs + Vector<String> pids = new Vector<String>(); BufferedReader reader = new BufferedReader(new FileReader(processIdFilePath)); - String pid = null; - while ((pid = reader.readLine()) != null) { - pids.add(pid); - } - } catch (Exception e) { - if(log.isErrorEnabled()) { - log.error(e); + String pid_ = null; + while ((pid_ = reader.readLine()) != null) { + pids.add(pid_); } - return; - } - // Kill all haproxy processes - for (String pid : pids) { - try { - String command = "kill -s 9" + pid; + // Kill all haproxy processes + for (String pid : pids) { + String command = "kill -s 9 " + pid; executeCommand(command); - if(log.isInfoEnabled()) { - log.info("haproxy stopped"); - } - } catch (Exception e) { - if(log.isErrorEnabled()) { - log.error(e); + if (log.isInfoEnabled()) { + log.info(String.format("haproxy stopped [pid] %s", pid)); } - return; } + } catch (Exception e) { + if(log.isErrorEnabled()) { + log.error("Could not stop haproxy"); + } + throw new LoadBalancerExtensionException(e); } } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyConfigWriter.java ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyConfigWriter.java b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyConfigWriter.java index c6c8c56..5e6f69a 100644 --- a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyConfigWriter.java +++ b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyConfigWriter.java @@ -21,6 +21,7 @@ package org.apache.stratos.haproxy.extension; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.load.balancer.extension.api.exception.LoadBalancerExtensionException; import org.apache.stratos.messaging.domain.topology.*; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; @@ -60,6 +61,10 @@ public class HAProxyConfigWriter { for(Service service : topology.getServices()) { for(Cluster cluster : service.getClusters()) { + if((service.getPorts() == null) || (service.getPorts().size() == 0)) { + throw new RuntimeException(String.format("No ports found in service: %s", service.getServiceName())); + } + for(Port port : service.getPorts()) { String frontEndId = cluster.getClusterId() + "-proxy-" + port.getProxy(); @@ -108,8 +113,9 @@ public class HAProxyConfigWriter { } } catch (IOException e) { if(log.isErrorEnabled()) { - log.error("Could not write configuration file", e); + log.error(String.format("Could not write configuration file: %s", confFilePath)); } + throw new RuntimeException(e); } } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/extensions/load-balancer/haproxy-extension/src/main/security/client-truststore.jks ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/haproxy-extension/src/main/security/client-truststore.jks b/extensions/load-balancer/haproxy-extension/src/main/security/client-truststore.jks new file mode 100644 index 0000000..be441f3 Binary files /dev/null and b/extensions/load-balancer/haproxy-extension/src/main/security/client-truststore.jks differ http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/extensions/load-balancer/haproxy-extension/src/main/templates/haproxy.cfg.template ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/haproxy-extension/src/main/templates/haproxy.cfg.template b/extensions/load-balancer/haproxy-extension/src/main/templates/haproxy.cfg.template index 5c4e04f..240f64a 100644 --- a/extensions/load-balancer/haproxy-extension/src/main/templates/haproxy.cfg.template +++ b/extensions/load-balancer/haproxy-extension/src/main/templates/haproxy.cfg.template @@ -1,6 +1,7 @@ global daemon maxconn 256 + stats socket /tmp/haproxy_stats defaults mode http http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/products/load-balancer/modules/distribution/src/main/bin/stratos.bat ---------------------------------------------------------------------- diff --git a/products/load-balancer/modules/distribution/src/main/bin/stratos.bat b/products/load-balancer/modules/distribution/src/main/bin/stratos.bat index 7381613..aa4ae5f 100644 --- a/products/load-balancer/modules/distribution/src/main/bin/stratos.bat +++ b/products/load-balancer/modules/distribution/src/main/bin/stratos.bat @@ -154,7 +154,7 @@ set CARBON_CLASSPATH=.\lib;%CARBON_CLASSPATH% set JAVA_ENDORSED=".\lib\endorsed";"%JAVA_HOME%\jre\lib\endorsed";"%JAVA_HOME%\lib\endorsed" -set CMD_LINE_ARGS=-Xbootclasspath/a:%CARBON_XBOOTCLASSPATH% -Xms1500m -Xmx3000m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:-UseGCOverheadLimit -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CARBON_HOME%\repository\logs\heap-dump.hprof -Dcom.sun.management.jmxremote -classpath %CARBON_CLASSPATH% %JAVA_OPTS% -Djava.endorsed.dirs=%JAVA_ENDORSED% -Dcarbon.registry.root=/ -Dcarbon.home="%CARBON_HOME%" -Dloadbalancer.conf="file:///%CARBON_HOME%/repository/conf/loadbalancer.conf" -Dwso2.server.standalone=true -Djava.command="%JAVA_HOME%\bin\java" -Djava.opts="%JAVA_OPTS%" -Djava.io.tmpdir="%CARBON_HOME%\tmp" -Dcatalina.base="%CARBON_HOME%\lib\tomcat" -Dwso2.carbon.xml=%CARBON_HOME%\repository\conf\carbon.xml -Dwso2.registry.xml="%CARBON_HOME%\repository\conf\registry.xml" -Dwso2.user.mgt.xml="%CARBON_HOME%\repository\conf\user-mgt.xml" -Djava.util.logging.config.file="%CARBON_HOME%\repository\conf\log4j.properties" - Dcarbon.config.dir.path="%CARBON_HOME%\repository\conf" -Djndi.properties.dir="%CARBON_HOME%/repository/conf" -Dconf.location="%CARBON_HOME%\repository\conf" -Dcarbon.logs.path="%CARBON_HOME%\repository\logs" -Dcomponents.repo="%CARBON_HOME%\repository\components" -Dcom.atomikos.icatch.file="%CARBON_HOME%\lib\transactions.properties" -Dcom.atomikos.icatch.hide_init_file_path="true" -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dcom.sun.jndi.ldap.connect.pool.authentication=simple -Dcom.sun.jndi.ldap.connect.pool.timeout=3000 -Dorg.terracotta.quartz.skipUpdateCheck=true -Dcarbon.classpath=%CARBON_CLASSPATH% -Dfile.encoding=UTF8 -Dthrift.receiver.ip=localhost -Dthrift.receiver.port=7614 +set CMD_LINE_ARGS=-Xbootclasspath/a:%CARBON_XBOOTCLASSPATH% -Xms1500m -Xmx3000m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:-UseGCOverheadLimit -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CARBON_HOME%\repository\logs\heap-dump.hprof -Dcom.sun.management.jmxremote -classpath %CARBON_CLASSPATH% %JAVA_OPTS% -Djava.endorsed.dirs=%JAVA_ENDORSED% -Dcarbon.registry.root=/ -Dcarbon.home="%CARBON_HOME%" -Dloadbalancer.conf="file:///%CARBON_HOME%/repository/conf/loadbalancer.conf" -Dwso2.server.standalone=true -Djava.command="%JAVA_HOME%\bin\java" -Djava.opts="%JAVA_OPTS%" -Djava.io.tmpdir="%CARBON_HOME%\tmp" -Dcatalina.base="%CARBON_HOME%\lib\tomcat" -Dwso2.carbon.xml=%CARBON_HOME%\repository\conf\carbon.xml -Dwso2.registry.xml="%CARBON_HOME%\repository\conf\registry.xml" -Dwso2.user.mgt.xml="%CARBON_HOME%\repository\conf\user-mgt.xml" -Djava.util.logging.config.file="%CARBON_HOME%\repository\conf\log4j.properties" - Dcarbon.config.dir.path="%CARBON_HOME%\repository\conf" -Djndi.properties.dir="%CARBON_HOME%/repository/conf" -Dconf.location="%CARBON_HOME%\repository\conf" -Dcarbon.logs.path="%CARBON_HOME%\repository\logs" -Dcomponents.repo="%CARBON_HOME%\repository\components" -Dcom.atomikos.icatch.file="%CARBON_HOME%\lib\transactions.properties" -Dcom.atomikos.icatch.hide_init_file_path="true" -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dcom.sun.jndi.ldap.connect.pool.authentication=simple -Dcom.sun.jndi.ldap.connect.pool.timeout=3000 -Dorg.terracotta.quartz.skipUpdateCheck=true -Dcarbon.classpath=%CARBON_CLASSPATH% -Dfile.encoding=UTF8 -Djavax.net.ssl.trustStore=$CARBON_HOME/repository/resources/security/client-truststore.jks -Djavax.net.ssl.trustStorePassword=wso2carbon -Dthrift.receiver.ip=localhost -Dthrift.receiver.port=7615 :runJava echo JAVA_HOME environment variable is set to %JAVA_HOME% http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e2cec75/products/load-balancer/modules/distribution/src/main/bin/stratos.sh ---------------------------------------------------------------------- diff --git a/products/load-balancer/modules/distribution/src/main/bin/stratos.sh b/products/load-balancer/modules/distribution/src/main/bin/stratos.sh index 85b29cd..abef45f 100644 --- a/products/load-balancer/modules/distribution/src/main/bin/stratos.sh +++ b/products/load-balancer/modules/distribution/src/main/bin/stratos.sh @@ -294,8 +294,10 @@ exec "$JAVACMD" \ -Dcom.atomikos.icatch.file="$CARBON_HOME/lib/transactions.properties" \ -Dcom.atomikos.icatch.hide_init_file_path=true \ -Dorg.terracotta.quartz.skipUpdateCheck=true \ + -Djavax.net.ssl.trustStore=$CARBON_HOME/repository/resources/security/client-truststore.jks + -Djavax.net.ssl.trustStorePassword=wso2carbon -Dthrift.receiver.ip=localhost \ - -Dthrift.receiver.port=7614 \ + -Dthrift.receiver.port=7615 \ org.wso2.carbon.bootstrap.Bootstrap $*
