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
-