Service aware load balance support in HAProxy

Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/0c968f4c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/0c968f4c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/0c968f4c

Branch: refs/heads/master
Commit: 0c968f4c8f251babd205acdcb2f53063d5bb5b09
Parents: 39c4d76
Author: Dinesh Bandara <[email protected]>
Authored: Fri Sep 19 02:15:40 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Wed Sep 24 15:50:29 2014 +0530

----------------------------------------------------------------------
 .../src/main/bin/haproxy-extension.sh           |  1 +
 .../stratos/haproxy/extension/Constants.java    |  4 ++-
 .../haproxy/extension/HAProxyConfigWriter.java  | 35 +++++++++++++-------
 .../haproxy/extension/HAProxyContext.java       |  8 +++--
 4 files changed, 33 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/0c968f4c/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 43fa639..3f6bc73 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
@@ -40,6 +40,7 @@ properties="-Dhaproxy.private.ip=127.0.0.1
             -Dthrift.receiver.port=7615
             -Dnetwork.partition.id=network-partition-1
             -Dcluster.id=cluster
+            -Dcep.stats.publisher.enabled=true"
 
 
 # Uncomment below line to enable remote debugging

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c968f4c/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/Constants.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/Constants.java
 
b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/Constants.java
index 6fe77ca..eb88c16 100644
--- 
a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/Constants.java
+++ 
b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/Constants.java
@@ -38,9 +38,11 @@ public class Constants {
 
     public static final String LOAD_BALANCER = "load.balancer";
     public static final String LOAD_BALANCER_REF = "load.balancer.ref";
-    public static final String NO_LOAD_BALANCER = "no.load.balancer";
+
     public static final String LB_SERVICE_TYPE ="load.balanced.service.type";
+
     public static final String DEFAULT_LOAD_BALANCER ="default.load.balancer";
     public static final String STATIC_LOAD_BALANCER ="static.load.balancer";
     public static final String SERVICE_LOAD_BALANCER = 
"service.aware.load.balancer";
+    public static final String NO_LOAD_BALANCER = "no.load.balancer";
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c968f4c/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 77f86af..10a4c97 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
@@ -57,8 +57,8 @@ public class HAProxyConfigWriter {
     private String frontEndHttpId, frontEndHttpsId;
     private boolean frontEndHttpAdded, frontEndHttpsAdded;
 
-    private String loadBalancerType; // Load Balancer type (default, service 
aware or static)
-    String loadBalancedServiceType;  // Service type if load balancer is a 
service aware
+    private String loadBalancerType;        // Load Balancer type (default, 
service aware, static)
+    private String loadBalancedServiceType; // Service type if load balancer 
is a service aware
 
     public HAProxyConfigWriter(String templatePath, String templateName, 
String confFilePath, String statsSocketFilePath) {
         this.templatePath = templatePath;
@@ -79,14 +79,18 @@ public class HAProxyConfigWriter {
         frontEndHttpsAdded = false;
 
         for (Service service : topology.getServices()) {
-            if(service.getServiceName().equals("haproxy")) {
+            if (service.getServiceName().equals("haproxy")) {
                 for (Cluster cluster : service.getClusters()) {
-                    
if(cluster.getClusterId().equals(HAProxyContext.getInstance().getClusterId()))
-                    {
-                        loadBalancerType = 
cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF);
-                        
if(cluster.getProperties().getProperty(Constants.LB_SERVICE_TYPE) != null)
-                            loadBalancedServiceType = 
cluster.getProperties().getProperty(Constants.LB_SERVICE_TYPE);
-                        break;
+                    if 
(cluster.getClusterId().equals(HAProxyContext.getInstance().getClusterId())) {
+                        if 
((cluster.getProperties().getProperty(Constants.LOAD_BALANCER) != null) && 
(cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF) != null)) {
+                            loadBalancerType = 
cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF);
+                            if 
(cluster.getProperties().getProperty(Constants.LB_SERVICE_TYPE) != null)
+                                loadBalancedServiceType = 
cluster.getProperties().getProperty(Constants.LB_SERVICE_TYPE);
+                            break;
+                        } else {
+                            loadBalancerType = 
cluster.getProperties().getProperty(Constants.STATIC_LOAD_BALANCER);
+                            break;
+                        }
                     }
                 }
             }
@@ -94,10 +98,17 @@ public class HAProxyConfigWriter {
 
         for (Service service : topology.getServices()) {
             for (Cluster cluster : service.getClusters()) {
-                if 
((cluster.getProperties().getProperty(Constants.LOAD_BALANCER) == null)) {
+                if 
(cluster.getProperties().getProperty(Constants.LOAD_BALANCER) == null) {
                     if 
((cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF) != null)) {
-                        
if(!(cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF).equals(Constants.NO_LOAD_BALANCER))
 &&
-                                
cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF).equals(loadBalancerType))
 {
+                        if 
((cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF).equals(Constants.NO_LOAD_BALANCER))
 &&
+                                
Constants.STATIC_LOAD_BALANCER.equals(loadBalancerType)) {
+                            createConfig(service, cluster);
+                        } else if 
((cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF).equals(Constants.DEFAULT_LOAD_BALANCER))
 &&
+                                
Constants.DEFAULT_LOAD_BALANCER.equals(loadBalancerType)) {
+                            createConfig(service, cluster);
+                        } else if 
((cluster.getProperties().getProperty(Constants.LOAD_BALANCER_REF).equals(Constants.SERVICE_LOAD_BALANCER))
 &&
+                                
Constants.SERVICE_LOAD_BALANCER.equals(loadBalancerType) &&
+                                
cluster.getServiceName().equals(loadBalancedServiceType)) {
                             createConfig(service, cluster);
                         }
                     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c968f4c/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyContext.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyContext.java
 
b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyContext.java
index 55dfecc..f73498a 100644
--- 
a/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyContext.java
+++ 
b/extensions/load-balancer/haproxy-extension/src/main/java/org/apache/stratos/haproxy/extension/HAProxyContext.java
@@ -141,7 +141,11 @@ public class HAProxyContext {
         return cepStatsPublisherEnabled;
     }
 
-    public String getNetworkPartitionId() { return networkPartitionId; };
+    public String getNetworkPartitionId() {
+        return networkPartitionId;
+    }
 
-    public String getClusterId() { return clusterId; };
+    public String getClusterId() {
+        return clusterId;
+    }
 }

Reply via email to