WSO2 2.1 APIM distributed set up - wso2

Hi I have distributed set up for WSO2 2.1 APIM in aws. I have published sample Pizza Shack API but its not getting updated at gateway manager node. Can someone help me why api artifact is not getting updated on gateway manager node ?
Machine 1 : Has WSO2 publisher(portoffset 0) and store(portoffset 1) running.
Machine 2 : Has gateway manager(portoffset 0), gateway worker(portoffset 1), traffic manager(portoffset 2) and key manager(portoffset 3) running.
Also when I open and edit sample pizza shack API and go to managed tab I see missing Endpoint and Endpoint Type fields as shown below :
Ideally it should like below :
[root#ip-10-0-1-76 ec2-user]# tcpdump -i eth0 -s 1500 port 9443
I just tried to see if is there any traffic coming from publisher machine to gateway manager and saw below output. Looks like gateway manager is receiving some traffic on port 9443 but don't know what's happening after that.

Related

Using Choreo analytics behind the proxy

I've installed WSO2 Api Manager 4.0.0 on internal server and I have no idea how to tell it to use proxy server to connect to Choreo analytics.
I see following error in the log:
:Provided authentication endpoint https://analytics-event-auth.choreo.dev/auth/v1 is not reachable.
I've tried to set http_proxy, https_proxy, HTTP_PROXY and HTTPS_PROXY environment variables with flag java.net.useSystemProxies=true to api_manager.sh but they seem to not work and I don't see any traffic coming from this server through proxy.
Adding java flags http.proxyHost and http.proxyPort didn't helped too.
If I start it from server with internet access then it works just fine with Choreo.
Is there any way to set the proxy for APIM?
WSO2 API Manager's gateway component talks to an API in the Analytics cloud in order to fetch required credentials to publish events to the cloud. The failure that you have pointed out occurs at the point of talking to this API. It appears that proxy settings have not been configured for this particular HTTP client. Please see here.
Event publishing is the next step and uses AMQP protocol. Therefore I think it would not go through the HTTP/S proxy. However, if the gateway has no access to the internet, this step will fail again regardless of the API call is fixed to honour the proxy settings.
Currently, analytics does not have the support to publish events through a proxy. It seems that in order to honour proxy settings in event publishing, the protocol needs to be changed to Websocket.

WSO2 Micro Gateway Installation and architecture

Does the Micro Gateway and API manager always have to be installed on the same servers?
Does the Micro Gateway setup require WSO2 Identity Server and WSO2 Enterprise Integrator for Hybrid API?
We have an architecture that would be working with 3 servers (1) Cloud for API Manager and Developer Portal providing Authentication and Analytics and store for (2) Production Environment (3) Sandbox Environment
Does the API manager needs to be installed in all the servers to set API Gateway and API Micro Gateway?
So here are the task that I have tried to set the WSO2 API manager and the Micro Gateway services in my local system , so here is a sample configuration
OS: Ubuntu server 18 LTS
WSO2 API Manager - Local Server IP: 192.168.1.50
WSO2 MicroGateway service (Sandbox) - Local Server IP: 192.168.1.51
WSO2 MicroGateway service (Production) - Local Server IP: 192.168.1.52
API Manager:
Installed all prerequisites
Install directly in the server
Changed the hostname to IP address in deployment.toml since I tried changing in carbon.xml and api-manager.xml but it get override
All the services were successfully active
Carbon Admin - http://192.168.1.50:9443/carbon, Admin Module - http://192.168.1.50:9443/admin, Developer Portal - http://192.168.1.50:9444/devportal, Publisher - http://192.168.1.50:9443/publisher
MicroGateway:
Create a mock hello world API using PHP to access the backend and datastore services.
Created a sample OpenAPI 3.0 yaml file to forward the request to the backend php services.
Installed all prerequisites
I had document to install the Microgateway services in docker, but I decided to try the MGW services installation directly within the server without docker
Created a API using micro-gw init and placed the yaml file within api-definitions
created the build successfully
Ran the build using gateway which was accessible using Postman.
Tried to change the hostname of microgateway service to listen IP instead of localhost but gets overrides to localhost:9090 however the service can be accessible using IP so no further changes made.
Configuration of API Manager and MGW
Uploaded the same YAML to API manager using publisher to configure the API manager and microgateway services.
Used API managers key certificates to set the microgateway (which failed)
create the end points to point to Production and Sandbox micro gateways using the IP address and the port number http://192.168.1.51:9090 and http://192.168.1.52:9090
Accessed the developer portal, created a token key.
However, the token failed to help access the microgateway service. Even I tried using the URL provided by the API manager http://192.168.1.50/sample/context/1/test but still inaccessible.

WSO2 APIM carbon console is not accessible through aws elastic load balancer

Hi I have running wso2 docker image running inside aws instance. I am accessing wso2 apim services(store/publisher/carbon console) through aws ELB. And I have mapped ELB with DNS name inside Route 53.
Problem is I am able to access store and publisher(https://wso2.vitkutin.com./store/ and https://wso2.vitkutin.com./publisher/) successfully but when I'm trying carbon console https://wso2.vitkutin.com./carbon/ gives me below error.I am able to successfully curl -v -k https://localhost:9443/carbon/admin/login.jsp inside docker container. Can someone help me to solve this error ?
<am:fault xmlns:am="http://wso2.org/apimanager">
<am:code>404</am:code>
<am:type>Status report</am:type>
<am:message>Not Found</am:message>
<am:description>The requested resource is not available.</am:description>
</am:fault>
Route 53 DNS name is configured inside carbon.xml and apimanager.xml as shown below :
carbon.xml
<HostName>wso2.xxx.com.</HostName>
<MgtHostName>wso2.xxx.com.</MgtHostName>
apimanager.xml
<GatewayEndpoint>http://wso2.xxx.com.:80,https://wso2.xxx.com.:443</GatewayEndpoint>
<APIStore>
<URL>https://wso2.xxx.com.:443/store</URL>
</APIStore>
<APIPublisher>
<URL>https://wso2.xxx.com.:443/publisher</URL>
</APIPublisher>
As per the access log, it seems the request is sent to 8280 or 8243, instead of 9443. Please check your loadbalancer rules.

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.

distributed deployment of wso2 api manager

I have followed the procedure for cluster deployment of wso2 API manager mentioned in
Referencing: http://docs.wso2.org/display/CLUSTER420/Clustering+API+Manager
But when i am running API manager with different profile wso2 API manager is started but is not accessible from the browser.However, if I change the port offset in carbon.xml to 0 and then r everything runs fine.Please tell me where is the issue.
When you change the port offset in carbon.xml, all default port values will be adjusted according to the port offset values.
If port offset is 2, the default HTTPS port 9443 will be changed 9445 in the run time. So you should access the management console via 9445 port.
Also see following wiki page about changing port offset for API Manager.
http://docs.wso2.org/display/AM160/Changing+the+Default+Ports+with+Offset
I hope this helps