Testing WSO2 ELB - wso2

How to check if WSO2 ELB is working properly?
I have a ELB and 2 ELB(1 manager and 1 worker) running, I want to check if ELB is doing its work or not.
I want to check it using a SOAP request, SOAP endpoint should point to ELB or ESB?
I have configured ELB according to what is there in WSO2's documentation.
Thanks.

The WSO2 Elastic Load Balancer has been discontinued. You can download NGinx Plus [1] - the load balancer by NGinx - for which we provide support.
If you are currently using WSO2 ELB and need guidance, please visit our documentation page, Spacially Auto-Scaling in Load Balancer
In order to set up the WSO2 Elastic Load Balancer with one manager and one worker please refer document [1]
In order to check if WSO2 ELB is working properly, you can check it with autoscaling facilities in WSO2 ELB.
Please refer to document [2] for more information on autoscaling.
If you need to send a request to the ESB first you need to point it to ELB.
[1] https://www.nginx.com/resources/admin-guide/
[2] http://blog.afkham.org/2011/09/how-to-setup-wso2-elastic-load-balancer.html

Related

How to get latency details of load balancer in stackdriver?

I have a simple spring boot application deployed on Kubernetes on GCP. I wish to custom auto-scale the application using latency threshold (response time). Stackdriver has a set of metrics for load balancer. Details of the metrics can be found in this link.
I have exposed my application to an external IP using the following command
kubectl expose deployment springboot-app-new --type=LoadBalancer --port 80 --target-port 9000
I used this API explorer to view the metrics. The response code is 200, but the response is empty.
The metrics filter I used is metric.type = "loadbalancing.googleapis.com/https/backend_latencies"
Question
Why am I not getting anything in the response? Am I making any mistake?
I have already enabled Stackdriver API. Is there any other settings to be made to get the response?
As mentioned in the comments, the metric you're trying to use belongs to an HTTP(S) load balancer and the type LoadBalancer, when used in GKE, will deploy a Network Load Balancer instead.
The reason you're not able to find its metrics using the Stackdriver Monitoring page is that, the link shared in the comment corresponds to a TCP/SSL Proxy load balancer (layer 7) documentation instead of a Network Load Balancer (layer 4), which is the one that is already created in your cluster and for now, the Network Load Balancer won't show up using the Stackdriver Monitoring page.
However, a feature request has been created to have this functionality enabled in the Monitoring dashboard.
If you need to have this particular metric (loadbalancing.googleapis.com/https/backend_latencies), it might be best to expose your deployment using an Ingress instead of using the LoadBalancer type. This will automatically create an HTTP(S) load balancer with the monitoring enabled instead of the current Network Load Balancer.

How can I host an SSL Rest API through AWS using a Docker image?

I've gotten a bit lost in the number of services in AWS and I'm having a difficult time finding the answer to what I think is probably a very simple question.
I have a Docker image that's serving a RestAPI over HTTP on port 80. I am currently hosting this on AWS with ECS. It's using Faregate but I could make an EC2 cluster if need be.
The problems are:
1) I currently get a new IP address whenever I run my task, I want a consistent address to access it from. Doesn't need to be a static IP, it could be routed from DNS.
2) It's not using my hostname which I would like to have api.myhostname.com go to the Docker image while www.myhostname.com currently already goes to my Cloudfront CDN serving the web application.
3) There's no SSL and I would need this to be encrypted.
Which services should I be using to make this happen? I looked into API Gateways and didn't find a way to use an ECS task as a backend. I looked into ELB for ECS but load balancers didn't seem to provide a way to make static IPs out of the Docker images.
Thanks.
I'll suggest a service for each of you requirements:
you want to run a Docker container: ECS using FARGATE is the right solution
you want a consistent address: use the Service Load Balancing which is integrated into ECS. [1] You can also achieve consistent addressing using Service Discovery if the price for running a load balancer is too high in your scenario. [2]
you want SSL: AWS Elastic Load Balancing integrates with AWS Certificate Manager (ACM) which allows you to create HTTPS listeners. [3]
you want to use your hostname: use AWS Route53 and an Application Load Balancer. The load balancer receives a hostname by aws automatically and you can then point your custom dns at that entry. [4]
So my advice is:
Create an ECS service which starts your docker container as FARGATE task.
Create a certificate for your HTTPS listener in AWS Certificate Manager. ACM manages your certificates and sends you an email if they are expiring soon. [5]
Use Service Load Balancing with an Application Load Balancer to automatically register any newly created ECS tasks to a target group. Configure the load balancer to listen for incoming traffic on an HTTPS listener and routes it to the target group which has your ECS tasks registered as targets.
References
[1] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html
[2] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html
[3] https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html
[4] https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/using-domain-names-with-elb.html
[5] https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html

Configuration for WSO2 ELB with WSO2 ESB

I want configuration files for WSO2 ELB 2.1.1 and WSO2 ESB 4.8.1, axis2.xml loadbalancer.config carbon.xml catalina-server.xml and any other if there.
I have configured with one ELB(offset 0, 8280), one manager(offset 1, 8281) and one worker(offset 2, 8282) ESB and when i try to send a request via ELB I'm getting
DynamicLoadbalanceEndpoint application member not available
but both are available and get the log that mgt and worker have joined when they turn on in ELB.
Initially when i send a request i have got
httpclient.HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
then I have set allowall in axis2.xml and got the error which I have mentioned.
What would be the problem? If someone who have already configured could share the configuration files it will be very helpful for me.
Thanks.
Please refer WSO2 Clustering and Deployment Guide. There are instructions to configure an ESB cluster.
If the ESB cluster is not connected to the ELB, you will see "application member not available" message in ELB logs when you try to send requests.
Maybe this will be useful to someone else in future:
The WSO2 Elastic Load Balancer has been discontinued as of July 1st 2015. You can download NGinx Plus [1] - the load balancer by NGinx - for which we provide support.

WSO2 Greg Clustering Hardware LoadBalancer

We are planning to try out WSO2 Greg and wanted to know if we use external hardware load balancer, do we still need to configure manager + worker node configuration or we can start two standalone instances connecting to same back end i.e. oracle database and load balance it via front end external load balancer?
Thanks
You can use a third-party load balancer for WSO2 GREG cluster. You do not have to use manager/worker configuration for Axis2 clustering (subDomain property) as we use with WSO2 ELB.
You will still have to configure Axis2 clustering without subDomain property. I would recommend you to use wka membership scheme and nominate few nodes as wka members in the cluster.

WSO2 esb and as cluster togther

Has anyone successfully created AS and ESB cluster together?
I am trying to create test cluster with 1 ELB fronting 3 ESB nodes (1 mgt & 2 workers) and 3 AS nodes (1 mgt & 2 workers).
I followed 4.1.0 cluster creation guide here http://docs.wso2.org/display/Cluster/Clustering+WSO2+Products and had ESB cluster working successfully.
However when I try to add AS cluster to LB, following instructions on above link it, whole thing fell-a-part. My suspicion is on proxyPort mapping for AS.
I was wondering if any one had successfully created cluster setup as above and can share the over all steps.
I have resolved my issue by adding new axis2 transports on ELB.
My set up as follows: ELB ports 8280 and 8243 going ESB clusters. ELB ports 80 and 443 going to AS cluster.
How ELB loadbalancer.conf works is not clear. Hope great people of WOS2 improve ELB documentation.