You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2015/10/05 08:21:54 UTC

[1/3] stratos git commit: adding complete template support for nginf.cfg

Repository: stratos
Updated Branches:
  refs/heads/stratos-4.1.x 3dc77999b -> 45ce6596c


adding complete template support for nginf.cfg


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

Branch: refs/heads/stratos-4.1.x
Commit: 9051bdd408584923aad9c042801f6c66263a3d39
Parents: bf5b715
Author: reka <rt...@gmail.com>
Authored: Wed Sep 30 10:17:19 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Wed Sep 30 10:18:20 2015 +0530

----------------------------------------------------------------------
 .../nginx/extension/NginxConfigWriter.java      | 93 ++++++++++++++++----
 .../src/main/templates/nginx.cfg.template       | 46 +++++++++-
 2 files changed, 119 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/9051bdd4/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java b/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
index 11521bd..8617d13 100644
--- a/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
+++ b/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
@@ -31,9 +31,8 @@ import java.io.BufferedWriter;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
+import java.lang.reflect.Array;
+import java.util.*;
 
 /**
  * Nginx load balancer configuration writer.
@@ -59,11 +58,7 @@ public class NginxConfigWriter {
     }
 
     public boolean write(Topology topology) {
-
-        StringBuilder configurationBuilder = new StringBuilder();
-
         List<Port> availablePorts = new ArrayList<Port>();
-
         for (Service service : topology.getServices()) {
             for (Cluster cluster : service.getClusters()) {
                 if ((service.getPorts() == null) || (service.getPorts().size() == 0)) {
@@ -109,27 +104,36 @@ public class NginxConfigWriter {
             }
         }
 
+        //Constructing the port list
+        List<Map<String, String>> portList = new ArrayList<Map<String, String>>();
+        Map<String, String> portMap;
+
+        Map<String, Map<String, List>> hostnameToPortMap = new HashMap<String, Map<String, List>>();
+
         for (Port availPort : availablePorts) {
-            // Start transport block
-            configurationBuilder.append("http").append(" {").append(NEW_LINE);
-            configurationBuilder.append(TAB).append("server_names_hash_bucket_size ").
-                    append(System.getProperty("nginx.server.names.hash.bucket.size")).
-                    append(";").append(NEW_LINE);
+            portMap = new HashMap<String, String>();
+            portMap.put("proxy", String.valueOf(availPort.getProxy()));
+            portMap.put("protocol", availPort.getProtocol());
+            portMap.put("value", String.valueOf(availPort.getValue()));
+            portList.add(portMap);
+
+
             for (Service service : topology.getServices()) {
                 for (Cluster cluster : service.getClusters()) {
+                    Map<String, List> existingHostNameToServerMap = hostnameToPortMap.
+                                                get(String.valueOf(availPort.getProxy()));
+                    if(existingHostNameToServerMap == null) {
+                        existingHostNameToServerMap = new HashMap<String, List>();
+                    }
                     if ((service.getPorts() == null) || (service.getPorts().size() == 0)) {
                         throw new RuntimeException(String.format("No ports found in service: %s",
                                 service.getServiceName()));
                     }
-                    generateConfigurationForCluster(cluster, availPort, configurationBuilder);
+                    generateConfigurationForCluster(cluster, availPort, existingHostNameToServerMap);
+                    hostnameToPortMap.put(String.valueOf(availPort.getProxy()), existingHostNameToServerMap);
 
                 }
             }
-            configurationBuilder.append("}").append(NEW_LINE);
-            if (log.isDebugEnabled()) {
-                log.debug("The generated niginx.conf is: \n" + configurationBuilder.toString());
-            }
-            // End transport block
         }
 
 
@@ -143,7 +147,8 @@ public class NginxConfigWriter {
 
         // Insert strings into the template
         VelocityContext context = new VelocityContext();
-        context.put("configuration", configurationBuilder.toString());
+        context.put("portlist", portList);
+        context.put("servermap", hostnameToPortMap);
 
         // Create a new string from the template
         StringWriter stringWriter = new StringWriter();
@@ -168,6 +173,56 @@ public class NginxConfigWriter {
         }
     }
 
+    private void generateConfigurationForCluster(Cluster cluster, Port availPort, Map<String, List> existingHostNameToServerMap) {
+        for (String hostname : cluster.getHostNames()) {
+            boolean memberFound = false;
+            //Checking whether at-least one member is available to create
+            // the upstream and server blocks
+            for (Member member : cluster.getMembers()) {
+                Collection<Port> ports = member.getPorts();
+                for (Port port : ports) {
+                    if ((port.getProtocol().equals(availPort.getProtocol())) &&
+                            (port.getProxy() == availPort.getProxy())) {
+                        memberFound = true;
+                        break;
+                    }
+                }
+                if(memberFound) {
+                    break;
+                }
+            }
+            if(memberFound) {
+                for (Member member : cluster.getMembers()) {
+                    Port selectedPort = null;
+                    Collection<Port> ports = member.getPorts();
+                    for (Port port : ports) {
+                        if ((port.getProtocol().equals(availPort.getProtocol())) &&
+                                (port.getProxy() == availPort.getProxy())) {
+                            selectedPort = port;
+                            break;
+                        }
+                    }
+
+                    if (selectedPort != null) {
+                        if (log.isDebugEnabled()) {
+                            log.debug("The selected Port for cluster: " + cluster.getClusterId()
+                                    + " is " + selectedPort.getValue() + " " +
+                                    selectedPort.getProtocol() + " " + selectedPort.getProxy());
+                        }
+                        if(existingHostNameToServerMap.get(hostname) == null) {
+                            List<String> serverList = new ArrayList<String>();
+                            existingHostNameToServerMap.put(hostname, serverList);
+                        }
+                        // Start upstream server block
+                        existingHostNameToServerMap.get(hostname).add(member.getHostName() + ":" +
+                                                        selectedPort.getValue());
+
+                    }
+                }
+            }
+        }
+    }
+
     /**
      * Generate configuration for a cluster with the following format:
      * <p/>

http://git-wip-us.apache.org/repos/asf/stratos/blob/9051bdd4/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template b/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
index 54f9648..3d4bbd7 100644
--- a/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
+++ b/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
@@ -2,7 +2,51 @@ events {
     worker_connections  1024;
 }
 
-$configuration
+#foreach( $port in $portlist )
+http {
+    server_names_hash_bucket_size 128;
+#set( $hostnameServerMap = $servermap.get($port.proxy) )
+#foreach( $hostname in $hostnameServerMap.keySet() )
+    upstream $hostname {
+    ## Uncomment below when sticky secession is needed by particular server
+    ##if( $$hostname == "group-scaling.my-c3-group2.stratos.apache.org" )
+    ##    sticky;
+    ###end
+    #set ($servers = $hostnameServerMap.get($hostname) )
+    #foreach ( $server in $servers)
+        server $server;
+    #end
+    }
 
+    server {
+    #if ($port.protocol == "https")
+        listen $port.proxy ssl;
+    #else
+        listen $port.proxy;
+    #end
+        server_name $hostname;
+        location / {
+            proxy_set_header X-Forwarded-Host $host;
+            proxy_set_header X-Forwarded-Server $host;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header Host $http_host;
+            proxy_read_timeout 5m;
+            proxy_send_timeout 5m;
+            proxy_pass    http://$hostname;
+        }
+        location /nginx_status {
+            stub_status on;
+            access_log off;
+            allow 127.0.0.1;
+            deny all;
+        }
+    #if ($port.protocol == "https")
+        ssl on;
+        ssl_certificate /etc/nginx/ssl/server.cert;
+        ssl_certificate_key /etc/nginx/ssl/server.key;
 
+    #end
+#end
+}
+#end
 


[3/3] stratos git commit: Merge branch 'stratos-4.1.x' of https://git-wip-us.apache.org/repos/asf/stratos into stratos-4.1.x

Posted by re...@apache.org.
Merge branch 'stratos-4.1.x' of https://git-wip-us.apache.org/repos/asf/stratos into stratos-4.1.x


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

Branch: refs/heads/stratos-4.1.x
Commit: 45ce6596c2826b7809190b945b020055a7d91f2a
Parents: 6911c91 3dc7799
Author: reka <rt...@gmail.com>
Authored: Mon Oct 5 11:51:42 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Mon Oct 5 11:51:42 2015 +0530

----------------------------------------------------------------------
 .../LoadBalancerCommonTopologyEventReceiver.java        |  5 +++++
 .../apache/stratos/rest/endpoint/api/StratosApiV41.java | 12 ++++++------
 .../modules/distribution/src/main/bin/stratos.sh        |  2 +-
 3 files changed, 12 insertions(+), 7 deletions(-)
----------------------------------------------------------------------



[2/3] stratos git commit: fixing nginx template with SSL keys and certs

Posted by re...@apache.org.
fixing nginx template with SSL keys and certs


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

Branch: refs/heads/stratos-4.1.x
Commit: 6911c914fc03333e3d2ce0ee2612d1d63119b4a0
Parents: 9051bdd
Author: reka <rt...@gmail.com>
Authored: Mon Oct 5 11:50:24 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Mon Oct 5 11:50:24 2015 +0530

----------------------------------------------------------------------
 .../nginx/extension/NginxConfigWriter.java      | 125 ++-----------------
 .../src/main/templates/nginx.cfg.template       |   7 +-
 2 files changed, 13 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/6911c914/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java b/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
index 8617d13..1ffd434 100644
--- a/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
+++ b/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java
@@ -31,7 +31,6 @@ import java.io.BufferedWriter;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.StringWriter;
-import java.lang.reflect.Array;
 import java.util.*;
 
 /**
@@ -121,7 +120,7 @@ public class NginxConfigWriter {
             for (Service service : topology.getServices()) {
                 for (Cluster cluster : service.getClusters()) {
                     Map<String, List> existingHostNameToServerMap = hostnameToPortMap.
-                                                get(String.valueOf(availPort.getProxy()));
+                            get(String.valueOf(availPort.getProxy()));
                     if(existingHostNameToServerMap == null) {
                         existingHostNameToServerMap = new HashMap<String, List>();
                     }
@@ -213,127 +212,19 @@ public class NginxConfigWriter {
                             List<String> serverList = new ArrayList<String>();
                             existingHostNameToServerMap.put(hostname, serverList);
                         }
-                        // Start upstream server block
-                        existingHostNameToServerMap.get(hostname).add(member.getHostName() + ":" +
-                                                        selectedPort.getValue());
+                        // Adding member to hostname map against specific port
+                        // that should contain this particular member
+                        List<String> ipPortMapping = existingHostNameToServerMap.get(hostname);
+                        String server = member.getHostName() + ":" + selectedPort.getValue();
 
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Generate configuration for a cluster with the following format:
-     * <p/>
-     * <transport> {
-     * upstream <cluster-hostname> {
-     * server <hostname>:<port>;
-     * server <hostname>:<port>;
-     * }
-     * server {
-     * listen <proxy-port>;
-     * server_name <cluster-hostname>;
-     * location / {
-     * proxy_pass    http://<cluster-hostname>
-     * }
-     * location /nginx_status {
-     * stub_status on;
-     * access_log off;
-     * allow 127.0.0.1;
-     * deny all;
-     * }
-     * }
-     * }
-     *
-     * @param cluster
-     * @param availPort
-     * @param text
-     */
-    private void generateConfigurationForCluster(Cluster cluster, Port availPort, StringBuilder text) {
-
-        for (String hostname : cluster.getHostNames()) {
-            boolean memberFound = false;
-            //Checking whether at-least one member is available to create
-            // the upstream and server blocks
-            for (Member member : cluster.getMembers()) {
-                Collection<Port> ports = member.getPorts();
-                for (Port port : ports) {
-                    if ((port.getProtocol().equals(availPort.getProtocol())) &&
-                            (port.getProxy() == availPort.getProxy())) {
-                        memberFound = true;
-                        break;
-                    }
-                }
-                if(memberFound) {
-                    break;
-                }
-            }
-            if(memberFound) {
-                // Start upstream block
-                text.append(TAB).append("upstream ").append(hostname).append(" {").append(NEW_LINE);
-                for (Member member : cluster.getMembers()) {
-                    Port selectedPort = null;
-                    Collection<Port> ports = member.getPorts();
-                    for (Port port : ports) {
-                        if ((port.getProtocol().equals(availPort.getProtocol())) &&
-                                (port.getProxy() == availPort.getProxy())) {
-                            selectedPort = port;
-                            break;
+                        if(!ipPortMapping.contains(server)) {
+                            ipPortMapping.add(server);
                         }
-                    }
 
-                    if (selectedPort != null) {
-                        if (log.isDebugEnabled()) {
-                            log.debug("The selected Port for cluster: " + cluster.getClusterId()
-                                    + " is " + selectedPort.getValue() + " " +
-                                    selectedPort.getProtocol() + " " + selectedPort.getProxy());
-                        }
-                        // Start upstream server block
-                        text.append(TAB).append(TAB).append("server ").append(member.getHostName()).append(":")
-                                .append(selectedPort.getValue()).append(";").append(NEW_LINE);
-                        // End upstream server block
                     }
                 }
-                text.append(TAB).append("}").append(NEW_LINE);
-                // End upstream block
-
-                // Start server block
-                text.append(NEW_LINE);
-                text.append(TAB).append("server {").append(NEW_LINE);
-                if (availPort.getProtocol().equals("https")) {
-                    text.append(TAB).append(TAB).append("listen ").append(availPort.getProxy()).append(" ssl;").append(NEW_LINE);
-                } else {
-                    text.append(TAB).append(TAB).append("listen ").append(availPort.getProxy()).append(";").append(NEW_LINE);
-                }
-                text.append(TAB).append(TAB).append("server_name ").append(hostname).append(";").append(NEW_LINE);
-
-                text.append(TAB).append(TAB).append("location / {").append(NEW_LINE);
-                if (availPort.getProtocol().equals("https")) {
-                    text.append(TAB).append(TAB).append(TAB).append("proxy_pass").append(TAB)
-                            .append("https://").append(hostname).append(";").append(NEW_LINE);
-                } else {
-                    text.append(TAB).append(TAB).append(TAB).append("proxy_pass").append(TAB)
-                            .append("http://").append(hostname).append(";").append(NEW_LINE);
-                }
-                text.append(TAB).append(TAB).append("}").append(NEW_LINE);
-
-                text.append(TAB).append(TAB).append("location /nginx_status {").append(NEW_LINE);
-                text.append(TAB).append(TAB).append(TAB).append("stub_status on;").append(NEW_LINE);
-                text.append(TAB).append(TAB).append(TAB).append("access_log off;").append(NEW_LINE);
-                text.append(TAB).append(TAB).append(TAB).append("allow 127.0.0.1;").append(NEW_LINE);
-                text.append(TAB).append(TAB).append(TAB).append("deny all;").append(NEW_LINE);
-                text.append(TAB).append(TAB).append("}").append(NEW_LINE);
-
-                if (availPort.getProtocol().equals("https")) {
-                    text.append(TAB).append(TAB).append("ssl on;").append(NEW_LINE);
-                    text.append(TAB).append(TAB).append("ssl_certificate ").append(System.getProperty("nginx.cert.path")).append(";").append(NEW_LINE);
-                    text.append(TAB).append(TAB).append("ssl_certificate_key ").append(System.getProperty("nginx.key.path")).append(";").append(NEW_LINE);
-                }
-
-                text.append(TAB).append("}").append(NEW_LINE);
-                // End server block
             }
         }
     }
+
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/6911c914/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template b/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
index 3d4bbd7..a26467e 100644
--- a/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
+++ b/extensions/load-balancer/modules/nginx-extension/src/main/templates/nginx.cfg.template
@@ -32,7 +32,11 @@ http {
             proxy_set_header Host $http_host;
             proxy_read_timeout 5m;
             proxy_send_timeout 5m;
+        #if ($port.protocol == "https")
+            proxy_pass    https://$hostname;
+        #else
             proxy_pass    http://$hostname;
+        #end
         }
         location /nginx_status {
             stub_status on;
@@ -44,9 +48,8 @@ http {
         ssl on;
         ssl_certificate /etc/nginx/ssl/server.cert;
         ssl_certificate_key /etc/nginx/ssl/server.key;
-
     #end
+    }
 #end
 }
 #end
-