Update the INSTALL.md file and samples
Conflicts:
samples/applications/nested/single-level-nested-group-app/artifacts/application.json
samples/applications/simple/single-cartridge-app/artifacts/application.json
samples/cartridges/openstack/php.json
samples/cartridges/openstack/tomcat.json
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/956a6688
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/956a6688
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/956a6688
Branch: refs/heads/master
Commit: 956a6688a67bc85e00c1e2444561a69e2b65aada
Parents: c0455c9
Author: Gayan Gunarathne <[email protected]>
Authored: Fri May 22 14:41:55 2015 +0530
Committer: Gayan Gunarathne <[email protected]>
Committed: Mon Jul 27 14:49:34 2015 +0530
----------------------------------------------------------------------
.../apache/stratos/cartridge/agent/Main.java | 29 +++++
.../stratos/common/util/CommandUtils.java | 30 +++++
.../extensions/bash/CreateLVSDummyInterface.sh | 0
.../src/test/resources/payload/launch-params | 2 +-
.../src/test/resources/payload/launch-params2 | 2 +-
.../load-balancer/lvs-extension/INSTALL.md | 23 ++--
.../org/apache/stratos/lvs/extension/LVS.java | 8 +-
.../lvs/extension/LVSStatisticsReader.java | 130 +++++++------------
.../org/apache/stratos/lvs/extension/Main.java | 2 +-
.../src/test/resources/JMSOutputAdaptor.xml | 2 +-
.../artifacts/application.json | 43 +++---
.../artifacts/application.json | 9 +-
.../single-group-app/artifacts/application.json | 6 +-
samples/cartridges/mock/php.json | 2 +-
samples/cartridges/mock/tomcat.json | 5 +
samples/cartridges/openstack/php.json | 11 +-
samples/cartridges/openstack/tomcat.json | 28 ++++
17 files changed, 199 insertions(+), 133 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
----------------------------------------------------------------------
diff --git
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
index c4b7d17..1600c3d 100644
---
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
+++
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
@@ -23,9 +23,11 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.PropertyConfigurator;
import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration;
+import org.apache.stratos.common.util.CommandUtils;
import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
import org.apache.stratos.messaging.util.MessagingUtil;
+import java.io.IOException;
import java.lang.reflect.Constructor;
/**
@@ -37,6 +39,33 @@ public class Main {
private static CartridgeAgent cartridgeAgent = null;
public static void main(String[] args) {
+
+ String output;
+ String[] array;
+ int totalWeight = 0, weight;
+
+
+ String[] command = { "/bin/sh", "-c","sudo ipvsadm
-l --stats | grep TCP"};
+ try {
+ output =
CommandUtils.executeCommand(command);
+ if ((output != null) && (output.length() >
0)) {
+ array = output.split("\n");
+ for (int i = 0; i < array.length;
i++) {
+
weight=Integer.parseInt(array[i].substring(38,42).toString().trim());
+ totalWeight += weight;
+ }
+ }
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error(e);
+ }
+ }
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Cluster weight
found: [cluster] %s [weight] %d","",
+ totalWeight));
+
+ }
+
try {
// Add shutdown hook
final Thread mainThread = Thread.currentThread();
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
----------------------------------------------------------------------
diff --git
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
index d581057..4168afe 100644
---
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
+++
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
@@ -65,6 +65,36 @@ public class CommandUtils {
return output.toString();
}
+ public static String executeCommand(String[] command) throws
IOException {
+ String line;
+ Runtime r = Runtime.getRuntime();
+ if (log.isDebugEnabled()) {
+ log.debug("command = " + command);
+ }
+ Process p = r.exec(command);
+
+ StringBuilder output = new StringBuilder();
+ BufferedReader in = new BufferedReader(new
InputStreamReader(p.getInputStream()));
+ while ((line = in.readLine()) != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("output = " + line);
+ }
+ output.append(line).append(NEW_LINE);
+ }
+ StringBuilder errors = new StringBuilder();
+ BufferedReader error = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
+ while ((line = error.readLine()) != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("error = " + line);
+ }
+ errors.append(line).append(NEW_LINE);
+ }
+ if (errors.length() > 0) {
+ throw new RuntimeException("Command execution failed: "
+ NEW_LINE + errors.toString());
+ }
+
+ return output.toString();
+ }
public static String executeCommand(String command, Map<String, String>
envParameters) throws IOException {
String line;
ProcessBuilder pb = new ProcessBuilder(command);
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
----------------------------------------------------------------------
diff --git
a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
----------------------------------------------------------------------
diff --git
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
index 00ce19c..a2df82b 100644
---
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
+++
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
@@ -1 +1 @@
-APPLICATION_ID=single_group_v1,APPLICATION_PATH=/tmp/tomcat/webapps,BASH=/bin/bash,BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath,BASH_ALIASES=(),BASH_ARGC=(),BASH_ARGV=(),BASH_CMDS=(),BASH_LINENO=([0]="0"),BASH_SOURCE=([0]="/usr/local/bin/populate-user-data.sh"),BASH_VERSINFO=([0]="4"
[1]="3" [2]="30" [3]="1" [4]="release"
[5]="x86_64-pc-linux-gnu"),BASH_VERSION='4.3.30(1)-release',CARTRIDGE_ALIAS=mytomcat,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,CATALINA_HOME=/opt/tomcat,CEP_IP=54.179.197.243,CEP_PORT=7711,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single_group_v1-1,DEPENDENCY_CLUSTER_IDS=myphp.php.domain,DEPLOYMENT=default,DIRSTACK=(),EUID=0,GROUPS=(),GROUP_NAME=null,HOME=/root,HOSTNAME=mytomcat-tomcat-domain3bd3cd47-b95d-475a-aa11-3e3ddc089d49,HOSTTYPE=x86_64,HOST_NAME=mytomcat.tomcat.stratos.org,IFS='
,',INSTANCE_ID=null,INTERNAL=false,JAVA_HOME=/opt/jdk1.7.0_67,KUBERNETES_CLUSTER_ID=kubernetes-cluster-1,KUB
ERNETES_PORT=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP_ADDR=10.100.0.2,KUBERNETES_PORT_443_TCP_PORT=443,KUBERNETES_PORT_443_TCP_PROTO=tcp,KUBERNETES_RO_PORT=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP_ADDR=10.100.0.1,KUBERNETES_RO_PORT_80_TCP_PORT=80,KUBERNETES_RO_PORT_80_TCP_PROTO=tcp,KUBERNETES_RO_SERVICE_HOST=10.100.0.1,KUBERNETES_RO_SERVICE_PORT=80,KUBERNETES_SERVICE_HOST=10.100.0.2,KUBERNETES_SERVICE_PORT=443,LB_CLUSTER_ID=null,LOG_LEVEL=DEBUG,MACHTYPE=x86_64-pc-linux-gnu,MB_IP=54.179.197.243,MB_PORT=1883,MEMBER_ID=php.member-1,MIN_COUNT=1,MULTITENANT=false,MYPHP_PHP_DOMAIN_1_PORT=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.171.218,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYPHP_PHP_DOMAIN_1_SERVICE_HOST=10.100.171.218,MYPHP_PHP_DOMAIN_1_SERVICE_PORT=4500,
MYTOMCAT_TOMCAT_DOMAIN_1_PORT=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_HOST=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_PORT=4500,NETWORK_PARTITION_ID=network-partition-1,OPTERR=1,OPTIND=1,OSTYPE=linux-gnu,PARTITION_ID=partition-1,PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,PIPESTATUS=([0]="0"),PORTS=8080,POSIXLY_CORRECT=y,PPID=14,PRIMARY=false,PROVIDER=apache,PS4='+
',PUPPET_DNS_AVAILABLE=null,PUPPET_ENV=false,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_IP=127.0.0.1,PWD=/opt,REPO_URL=https://github.com/imesh/stratos-tomcat-applications.git,SERVICE_NAME=php,SHELL=/bin/bash,SHELLOPTS=braceexpand:hashall:interactive-comments:posix,SHLVL=2,TENANT_ID=-1234,TENANT_RANGE='*',TERM=dumb,TOKEN=eyJhbGciOiJSUzI1NiJ9.eyJleHAiOi04NzI
0ODEyNDEsInN1YiI6ImFkbWluIiwiYXpwIjoid3I5SllVaDNtTXd6bVhHVllqWmVIWnhCV2xFYSIsImFwcElkIjoic2luZ2xlX2dyb3VwX3YxIiwiYXVkIjpbIndyOUpZVWgzbU13em1YR1ZZalplSFp4QldsRWEiXSwiaXNzIjoiaHR0cHM6XC9cL2xvY2FsaG9zdDo5NDQzXC9vYXV0aDJlbmRwb2ludHNcL3Rva2VuIiwiaWF0IjotODcyNDgwMjQwfQ.OSa1gIXUT9amhk1YEU02Yc3JtUYqanzrXh5K1YyvRXcpSiY2Ccn2BfJO0hILF5UooRcGBihzfX3979NRcvGwcUDUvOUJ0eaGPmxFZYbu0nr3xD8lhAO3fa1QYsKAvMnMdwyu2uSgSp6R6EUdVleiwlabUoDsuEcKGkIAn_VQvG0,UID=0,_=posix
\ No newline at end of file
+APPLICATION_ID=single_group_v1,APPLICATION_PATH=/tmp/tomcat/webapps,BASH=/bin/bash,BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath,BASH_ALIASES=(),BASH_ARGC=(),BASH_ARGV=(),BASH_CMDS=(),BASH_LINENO=([0]="0"),BASH_SOURCE=([0]="/usr/local/bin/populate-user-data.sh"),BASH_VERSINFO=([0]="4"
[1]="3" [2]="30" [3]="1" [4]="release"
[5]="x86_64-pc-linux-gnu"),BASH_VERSION='4.3.30(1)-release',CARTRIDGE_ALIAS=mytomcat,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,CATALINA_HOME=/opt/tomcat,CEP_IP=54.179.197.243,CEP_PORT=7711,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single_group_v1-1,DEPENDENCY_CLUSTER_IDS=myphp.php.domain,DEPLOYMENT=default,DIRSTACK=(),EUID=0,GROUPS=(),GROUP_NAME=null,HOME=/root,HOSTNAME=mytomcat-tomcat-domain3bd3cd47-b95d-475a-aa11-3e3ddc089d49,HOSTTYPE=x86_64,HOST_NAME=mytomcat.tomcat.stratos.org,IFS='
,',INSTANCE_ID=null,INTERNAL=false,JAVA_HOME=/opt/jdk1.7.0_67,KUBERNETES_CLUSTER_ID=kubernetes-cluster-1,KUB
ERNETES_PORT=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP_ADDR=10.100.0.2,KUBERNETES_PORT_443_TCP_PORT=443,KUBERNETES_PORT_443_TCP_PROTO=tcp,KUBERNETES_RO_PORT=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP_ADDR=10.100.0.1,KUBERNETES_RO_PORT_80_TCP_PORT=80,KUBERNETES_RO_PORT_80_TCP_PROTO=tcp,KUBERNETES_RO_SERVICE_HOST=10.100.0.1,KUBERNETES_RO_SERVICE_PORT=80,KUBERNETES_SERVICE_HOST=10.100.0.2,KUBERNETES_SERVICE_PORT=443,LB_CLUSTER_ID=null,LOG_LEVEL=DEBUG,MACHTYPE=x86_64-pc-linux-gnu,MB_IP=54.179.197.243,MB_PORT=1883,MEMBER_ID=php.member-1,MIN_COUNT=1,MULTITENANT=false,MYPHP_PHP_DOMAIN_1_PORT=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.171.218,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYPHP_PHP_DOMAIN_1_SERVICE_HOST=10.100.171.218,MYPHP_PHP_DOMAIN_1_SERVICE_PORT=4500,
MYTOMCAT_TOMCAT_DOMAIN_1_PORT=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_HOST=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_PORT=4500,NETWORK_PARTITION_ID=network-partition-1,OPTERR=1,OPTIND=1,OSTYPE=linux-gnu,PARTITION_ID=partition-1,PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,PIPESTATUS=([0]="0"),PORTS=8080,POSIXLY_CORRECT=y,PPID=14,PRIMARY=false,PROVIDER=apache,PS4='+
',PUPPET_DNS_AVAILABLE=null,PUPPET_ENV=false,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_IP=127.0.0.1,PWD=/opt,REPO_URL=https://github.com/imesh/stratos-tomcat-applications.git,SERVICE_NAME=php,SHELL=/bin/bash,SHELLOPTS=braceexpand:hashall:interactive-comments:posix,SHLVL=2,TENANT_ID=-1234,TENANT_RANGE='*',TERM=dumb,TOKEN=eyJhbGciOiJSUzI1NiJ9.eyJleHAiOi04NzI
0ODEyNDEsInN1YiI6ImFkbWluIiwiYXpwIjoid3I5SllVaDNtTXd6bVhHVllqWmVIWnhCV2xFYSIsImFwcElkIjoic2luZ2xlX2dyb3VwX3YxIiwiYXVkIjpbIndyOUpZVWgzbU13em1YR1ZZalplSFp4QldsRWEiXSwiaXNzIjoiaHR0cHM6XC9cL2xvY2FsaG9zdDo5NDQzXC9vYXV0aDJlbmRwb2ludHNcL3Rva2VuIiwiaWF0IjotODcyNDgwMjQwfQ.OSa1gIXUT9amhk1YEU02Yc3JtUYqanzrXh5K1YyvRXcpSiY2Ccn2BfJO0hILF5UooRcGBihzfX3979NRcvGwcUDUvOUJ0eaGPmxFZYbu0nr3xD8lhAO3fa1QYsKAvMnMdwyu2uSgSp6R6EUdVleiwlabUoDsuEcKGkIAn_VQvG0,UID=0,_=posix,LVS_VIRTUAL_IP=192.168.0.40
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
----------------------------------------------------------------------
diff --git
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
index 9e67ebd..5c31d1f 100644
---
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
+++
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
@@ -15,4 +15,4 @@
# specific language governing permissions and limitations
# under the License.
-APPLICATION_ID=application1,SERVICE_NAME=php,HOST_NAME=php.php.stratos.org,MULTITENANT=false,TENANT_ID=-1234,TENANT_RANGE=*,CARTRIDGE_ALIAS=php,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single-cartridge-app-1,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,DEPLOYMENT=default,REPO_URL=https://github.com/imesh/stratos-php-applications.git,PORTS=9080,PUPPET_IP=127.0.0.1,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_ENV=false,MEMBER_ID=php.member-1,LB_CLUSTER_ID=null,NETWORK_PARTITION_ID=network-p1,PARTITION_ID=p1,APPLICATION_PATH=/tmp/stratos-pca-test-app-path/,MIN_COUNT=1,INTERNAL=false,CLUSTERING_PRIMARY_KEY=A,LOG_FILE_PATHS=/tmp/temp.log,PERSISTENCE_MAPPING=null,MP_IP=192.168.1.4,MB_PORT=1883
\ No newline at end of file
+APPLICATION_ID=application1,SERVICE_NAME=php,HOST_NAME=php.php.stratos.org,MULTITENANT=false,TENANT_ID=-1234,TENANT_RANGE=*,CARTRIDGE_ALIAS=php,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single-cartridge-app-1,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,DEPLOYMENT=default,REPO_URL=https://github.com/imesh/stratos-php-applications.git,PORTS=9080,PUPPET_IP=127.0.0.1,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_ENV=false,MEMBER_ID=php.member-1,LB_CLUSTER_ID=null,NETWORK_PARTITION_ID=network-p1,PARTITION_ID=p1,APPLICATION_PATH=/tmp/stratos-pca-test-app-path/,MIN_COUNT=1,INTERNAL=false,CLUSTERING_PRIMARY_KEY=A,LOG_FILE_PATHS=/tmp/temp.log,PERSISTENCE_MAPPING=null,MP_IP=192.168.1.4,MB_PORT=1883,LVS_VIRTUAL_IP=192.168.0.40
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/extensions/load-balancer/lvs-extension/INSTALL.md
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/lvs-extension/INSTALL.md
b/extensions/load-balancer/lvs-extension/INSTALL.md
index 3e0aa5a..2b3f491 100644
--- a/extensions/load-balancer/lvs-extension/INSTALL.md
+++ b/extensions/load-balancer/lvs-extension/INSTALL.md
@@ -1,19 +1,18 @@
# Installing Apache Stratos Nginx Extension
-Apache Stratos Nginx Extension could be used for integrating Nginx load
balancer with Apache Stratos. Please follow
+Apache Stratos LVS Extension could be used for integrating LVS load balancer
with Apache Stratos. Please follow
below steps to proceed with the installation:
-1. Download and extract Nginx binary distribution to a desired location:
<nginx-home>.
+1. Install keepalived and ipvsadm
+ apt-get install keepalived ipvsadm
-2. Extract org.apache.stratos.nginx.extension-<version>.zip to a desired
location: <nginx-extension-home>.
-
-3. Open <nginx-extension-home>/bin/nginx-extension.sh file in a text editor
and update following system properties:
+2. Open <lvs-extension-home>/bin/lvs-extension.sh file in a text editor and
update following system properties:
```
# Define nginx host private ip address:
- -Dnginx.private.ip=127.0.0.1
+ -Dlvs.private.ip=127.0.0.1
# Define the nginx executable file path:
- -Dexecutable.file.path=<nginx-home>/nginx
+ -Dexecutable.file.path=<lvs-home>/nginx
# Enable/disable cep statistics publisher:
-Dcep.stats.publisher.enabled=false
@@ -22,12 +21,18 @@ below steps to proceed with the installation:
-Dthrift.receiver.ip=127.0.0.1
-Dthrift.receiver.port=7615
-Dnetwork.partition.id=network-partition-1
+
+ # LVS server Virtual IP set for services
+
-Dlvs.service.virtualip.set=tomcat2|192.168.56.40,tomcat1|192.168.56.41,tomcat|192.168.56.40
+ # Server state (MASTER|BACKUP)
+ -Dserver.state=MASTER
+
```
-4. Open <nginx-extension-home>/conf/jndi.properties file in a text editor and
update message broker information:
+4. Open <lvs-extension-home>/conf/jndi.properties file in a text editor and
update message broker information:
```
java.naming.provider.url=tcp://localhost:61616
```
-5. Run <nginx-extension-home>/bin/nginx-extension.sh as the root user.
+5. Run <lvs-extension-home>/bin/lvs-extension.sh as the root user.
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/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 3dce7e7..257a60e 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
@@ -64,7 +64,7 @@ public class LVS implements LoadBalancer {
*/
public boolean configure(Topology topology) throws
LoadBalancerExtensionException {
try {
- log.info("Generating nginx configuration...");
+ log.info("Generating lvs configuration...");
LVSConfigWriter writer = new LVSConfigWriter(templatePath,
templateName, confFilePath, statsSocketFilePath,
virtualIPsForServices,serverState);
if(writer.write(topology)) {
@@ -72,13 +72,13 @@ public class LVS implements LoadBalancer {
}
return false;
} catch (Exception e) {
- log.error("Could not generate nginx configuration");
+ log.error("Could not generate lvs configuration");
throw new LoadBalancerExtensionException(e);
}
}
/**
- * Start nginx instance
+ * Start lvs instance
* @throws LoadBalancerExtensionException
*/
public void start() throws LoadBalancerExtensionException {
@@ -123,7 +123,7 @@ public class LVS implements LoadBalancer {
}
/**
- * Stop nginx instance
+ * Stop lvs instance
* @throws LoadBalancerExtensionException
*/
public void stop() throws LoadBalancerExtensionException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
----------------------------------------------------------------------
diff --git
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
index b3b1fa4..f707090 100644
---
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
+++
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
@@ -21,106 +21,64 @@ package org.apache.stratos.lvs.extension;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.conn.HttpHostConnectException;
-import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.stratos.common.util.CommandUtils;
import org.apache.stratos.load.balancer.common.domain.Cluster;
-import org.apache.stratos.load.balancer.common.domain.Port;
-import org.apache.stratos.load.balancer.common.domain.Service;
import
org.apache.stratos.load.balancer.common.statistics.LoadBalancerStatisticsReader;
import org.apache.stratos.load.balancer.common.topology.TopologyProvider;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.io.IOException;
/**
* LVS statistics reader.
*/
public class LVSStatisticsReader implements LoadBalancerStatisticsReader {
- private static final Log log =
LogFactory.getLog(LVSStatisticsReader.class);
+ private static final Log log =
LogFactory.getLog(LVSStatisticsReader.class);
+ private static final String IPVSADM_STATS_COMMAND = "sudo ipvsadm -l
--stats | grep TCP";
- private TopologyProvider topologyProvider;
+ private TopologyProvider topologyProvider;
- public LVSStatisticsReader(TopologyProvider topologyProvider) {
- this.topologyProvider = topologyProvider;
- }
+ public LVSStatisticsReader(TopologyProvider topologyProvider) {
+ this.topologyProvider = topologyProvider;
+ }
- @Override
- public int getInFlightRequestCount(String clusterId) {
- Cluster cluster = topologyProvider.getClusterByClusterId(clusterId);
- if(cluster != null) {
- String serviceName = cluster.getServiceName();
- Service service =
topologyProvider.getTopology().getService(serviceName);
- if(service != null) {
- int inFlightRequestCount = 0;
- for(Port port : service.getPorts()) {
- inFlightRequestCount += findWritingCount(port.getProxy());
- }
- if(log.isDebugEnabled()) {
- log.debug(String.format("In-flight request count:
[cluster-id] %s [value] %d",
- clusterId, inFlightRequestCount));
- }
- return inFlightRequestCount;
- }
- }
- return 0;
- }
+ @Override
+ public int getInFlightRequestCount(String clusterId) {
+ String output;
+ String[] array;
+ int totalWeight = 0, weight;
- /**
- * Make a http request to http://127.0.0.1:<proxy-port>/nginx_status and
find writing count.
- * @param proxyPort
- * @return
- */
- private int findWritingCount(int proxyPort) {
- try {
- URL url = new URL("http", "127.0.0.1", proxyPort, "/nginx_status");
- DefaultHttpClient httpClient = new DefaultHttpClient();
- HttpUriRequest request = new HttpGet(url.toURI());
- HttpResponse response = httpClient.execute(request);
- if (response.getStatusLine().getStatusCode() != 200) {
- throw new RuntimeException("http://127.0.0.1:" + proxyPort +
"/nginx_status was not found");
- }
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- (response.getEntity().getContent())));
- String output, result = "";
- while ((output = reader.readLine()) != null) {
- result += output;
- }
- Pattern pattern = Pattern.compile("(Writing: )([0-1]*)");
- Matcher matcher = pattern.matcher(result);
- if (matcher.find()) {
- // Deduct one to remove the above request
- int writingCount = Integer.parseInt(matcher.group(2)) - 1;
- if(log.isDebugEnabled()) {
- log.debug(String.format("Writing count: [proxy] %d [value]
%d", proxyPort, writingCount));
- }
- return writingCount;
- }
- throw new RuntimeException("Writing block was not found in
nginx_status response");
- } catch (HttpHostConnectException ignore) {
- if(ignore.getMessage().contains("Connection refused")) {
- log.warn("Could not find in-flight request count, connection
refused: " +
- "http://127.0.0.1:" + proxyPort + "/nginx_status");
- }
- } catch (Exception e) {
- log.error("Could not find in-flight request count:
http://127.0.0.1:" + proxyPort + "/nginx_status", e);
- }
- return 0;
- }
+ // Command to get the statistics : sudo ipvsadm -l --stats |
grep TCP
+ String[] command = { "/bin/sh", "-c", IPVSADM_STATS_COMMAND };
+ try {
+ output = CommandUtils.executeCommand(command);
+ if ((output != null) && (output.length() > 0)) {
+ array = output.split("\n");
+ for (int i = 0; i < array.length; i++) {
+ weight =
Integer.parseInt(array[i].substring(38, 42).toString().trim());
+ totalWeight += weight;
+ }
+ }
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error(e);
+ }
+ }
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Cluster weight found: [cluster]
%s [weight] %d", clusterId,
+ totalWeight));
- @Override
- public int getServedRequestCount(String clusterId) {
- return 0;
- }
+ }
+ return totalWeight;
+ }
- @Override
- public int getActiveInstancesCount(Cluster cluster) {
- return 0;
- }
+ @Override
+ public int getServedRequestCount(String clusterId) {
+ return 0;
+ }
+
+ @Override
+ public int getActiveInstancesCount(Cluster cluster) {
+ return 0;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
----------------------------------------------------------------------
diff --git
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
index 2df201d..52463e0 100644
---
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
+++
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
@@ -77,7 +77,7 @@ public class Main {
log.error(e);
}
if (extension != null) {
- log.info("Shutting nginx instance...");
+ log.info("Shutting lvs instance...");
extension.stop();
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
----------------------------------------------------------------------
diff --git
a/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
b/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
index a6a2cff..59c3653 100755
---
a/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
+++
b/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
@@ -23,7 +23,7 @@
<outputEventAdaptor name="JMSOutputAdaptor" statistics="disable"
trace="enable" type="jms" xmlns="http://wso2.org/carbon/eventadaptormanager">
<!--property
name="java.naming.provider.url">CEP_HOME/repository/conf/jndi.properties</property-->
- <property name="java.naming.provider.url">tcp://localhost:61617</property>
+ <property name="java.naming.provider.url">tcp://localhost:61616</property>
<property
name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</property>
<property
name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</property>
<property name="transport.jms.DestinationType">topic</property>
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
----------------------------------------------------------------------
diff --git
a/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
b/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
index 70a9d82..6e9f14a 100644
---
a/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
+++
b/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
@@ -8,7 +8,7 @@
"alias": "my-group6",
"groupMinInstances": 1,
"groupMaxInstances": 1,
- "deploymentPolicy": "deployment-policy-2",
+ "deploymentPolicy":"deployment-policy-2",
"groups": [
{
"name": "group7",
@@ -23,12 +23,13 @@
"subscribableInfo": {
"alias": "my-tomcat1-group7",
"autoscalingPolicy":
"autoscaling-policy-1",
- "artifactRepository": {
- "privateRepo": false,
- "repoUrl":
"https://github.com/imesh/stratos-tomcat1-applications.git",
- "repoUsername": "",
- "repoPassword": ""
- }
+ "artifactRepository":{
+ "privateRepo":false,
+
"repoUrl":"https://github.com/imesh/stratos-tomcat1-applications.git",
+ "repoUsername":"",
+ "repoPassword":""
+ },
+ "lvsVirtualIP":"192.168.56.40"
}
}
]
@@ -42,12 +43,13 @@
"subscribableInfo": {
"alias": "my-tomcat2-group6",
"autoscalingPolicy": "autoscaling-policy-1",
- "artifactRepository": {
- "privateRepo": false,
- "repoUrl":
"https://github.com/imesh/stratos-tomcat2-applications.git",
- "repoUsername": "",
- "repoPassword": ""
- }
+ "artifactRepository":{
+ "privateRepo":false,
+
"repoUrl":"https://github.com/imesh/stratos-tomcat2-applications.git",
+ "repoUsername":"",
+ "repoPassword":""
+ },
+ "lvsVirtualIP":"192.168.56.41"
}
}
]
@@ -61,12 +63,13 @@
"subscribableInfo": {
"alias": "my-tomcat",
"autoscalingPolicy": "autoscaling-policy-1",
- "deploymentPolicy": "deployment-policy-2",
- "artifactRepository": {
- "privateRepo": false,
- "repoUrl":
"https://github.com/imesh/stratos-tomcat-applications.git",
- "repoUsername": "",
- "repoPassword": ""
+ "deploymentPolicy":"deployment-policy-2",
+ "lvsVirtualIP":"192.168.56.42",
+ "artifactRepository":{
+ "privateRepo":false,
+
"repoUrl":"https://github.com/imesh/stratos-tomcat-applications.git",
+ "repoUsername":"",
+ "repoPassword":""
}
}
}
@@ -74,7 +77,7 @@
"dependencies": {
"startupOrders": [
{
- "aliases": [
+ "aliases" : [
"group.my-group6",
"cartridge.my-tomcat"
]
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/applications/simple/single-cartridge-app/artifacts/application.json
----------------------------------------------------------------------
diff --git
a/samples/applications/simple/single-cartridge-app/artifacts/application.json
b/samples/applications/simple/single-cartridge-app/artifacts/application.json
index 4043e4f..68fb4a4 100644
---
a/samples/applications/simple/single-cartridge-app/artifacts/application.json
+++
b/samples/applications/simple/single-cartridge-app/artifacts/application.json
@@ -6,18 +6,19 @@
"cartridges": [
{
"type": "php",
- "cartridgeMin": 1,
- "cartridgeMax": 5,
+ "cartridgeMin": 2,
+ "cartridgeMax": 10,
"subscribableInfo": {
"alias": "my-php",
"autoscalingPolicy": "autoscaling-policy-1",
"deploymentPolicy": "deployment-policy-1",
"artifactRepository": {
"privateRepo": false,
- "repoUrl":
"https://github.com/lakwarus/single-cartridge.git",
+ "repoUrl":
"https://github.com/imesh/stratos-php-applications.git",
"repoUsername": "",
"repoPassword": ""
- }
+ },
+ "lvsVirtualIP":"192.168.30.30"
}
}
]
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/applications/simple/single-group-app/artifacts/application.json
----------------------------------------------------------------------
diff --git
a/samples/applications/simple/single-group-app/artifacts/application.json
b/samples/applications/simple/single-group-app/artifacts/application.json
index c16a3f3..b51bad9 100644
--- a/samples/applications/simple/single-group-app/artifacts/application.json
+++ b/samples/applications/simple/single-group-app/artifacts/application.json
@@ -27,8 +27,9 @@
},
{
"type": "php",
- "cartridgeMin": 1,
- "cartridgeMax": 2,
+ "cartridgeMin": 2,
+ "cartridgeMax": 4,
+ "lvsVirtualIP": "192.168.56.60",
"subscribableInfo": {
"alias": "my-php",
"autoscalingPolicy": "autoscaling-policy-1",
@@ -48,6 +49,7 @@
"type": "tomcat",
"cartridgeMin": 2,
"cartridgeMax": 4,
+ "lvsVirtualIP": "192.168.56.50",
"subscribableInfo": {
"alias": "my-tomcat",
"autoscalingPolicy": "autoscaling-policy-1",
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/mock/php.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/mock/php.json b/samples/cartridges/mock/php.json
index 393986a..5d53e3a 100755
--- a/samples/cartridges/mock/php.json
+++ b/samples/cartridges/mock/php.json
@@ -11,7 +11,7 @@
{
"name": "http-80",
"protocol": "http",
- "port": "80",
+ "port": "8080",
"proxyPort": "8280"
},
{
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/mock/tomcat.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/mock/tomcat.json
b/samples/cartridges/mock/tomcat.json
index 661f96b..395687d 100755
--- a/samples/cartridges/mock/tomcat.json
+++ b/samples/cartridges/mock/tomcat.json
@@ -13,6 +13,11 @@
"protocol": "http",
"port": "22",
"proxyPort": "8280"
+ },
+ {
+ "protocol": "http",
+ "port": "8080",
+ "proxyPort": "80"
}
],
"deployment": {
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/openstack/php.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/openstack/php.json
b/samples/cartridges/openstack/php.json
index 66d682f..bc07515 100755
--- a/samples/cartridges/openstack/php.json
+++ b/samples/cartridges/openstack/php.json
@@ -11,7 +11,7 @@
{
"name": "http-80",
"protocol": "http",
- "port": "80",
+ "port": "8080",
"proxyPort": "8280"
}
],
@@ -23,17 +23,22 @@
"imageId": "RegionOne/b4ca55e3-58ab-4937-82ce-817ebd10240e",
"networkInterfaces": [
{
+<<<<<<< HEAD
"networkUuid": "b55f009a-1cc6-4b17-924f-4ae0ee18db5e"
+=======
+ "name": "network-routable",
+ "networkUuid": "512e1f54-1e85-4dac-b2e6-f0b30fc552cf"
+>>>>>>> f5bb41e... Update the INSTALL.md file and samples
}
],
"property": [
{
"name": "instanceType",
- "value": "RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594"
+ "value": "RegionOne/15c3065c-462c-4977-9143-094d63d1c2c7"
},
{
"name": "keyPair",
- "value": "vishanth-key"
+ "value": "gayan-os"
},
{
"name": "securityGroups",
http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/openstack/tomcat.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/openstack/tomcat.json
b/samples/cartridges/openstack/tomcat.json
index f02ec8c..94928d5 100755
--- a/samples/cartridges/openstack/tomcat.json
+++ b/samples/cartridges/openstack/tomcat.json
@@ -13,6 +13,11 @@
"protocol": "http",
"port": "22",
"proxyPort": "8280"
+ },
+ {
+ "protocol": "http",
+ "port": "8080",
+ "proxyPort": "80"
}
],
"deployment": {
@@ -20,6 +25,7 @@
"iaasProvider": [
{
"type": "openstack",
+<<<<<<< HEAD
"imageId": "RegionOne/4c812285-d761-4208-b4b3-d453eace5aff",
"networkInterfaces": [
{
@@ -39,6 +45,28 @@
"name": "securityGroups",
"value": "default"
}
+=======
+ "imageId": "RegionOne/4c812285-d761-4208-b4b3-d453eace5aff",
+ "networkInterfaces":[
+ {
+ "name":"network-non-routable",
+ "networkUuid":"b55f009a-1cc6-4b17-924f-4ae0ee18db5e"
+ }
+ ],
+ "property": [
+ {
+ "name":"instanceType",
+ "value":"RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594"
+ },
+ {
+ "name":"keyPair",
+ "value":"gayan-os"
+ },
+ {
+ "name":"securityGroups",
+ "value":"default"
+ }
+>>>>>>> f5bb41e... Update the INSTALL.md file and samples
]
}
]