LIVE APIMAN deployments and Performance
by Tomas Žuklys
Hi APIMAN Gurus,
Disregarding recent Red Hat announcement on 3scale acquisition and knowing
that Red Hat will now be working on merging the 3scale and apiman
technologies, we are still thinking of APIMAN as the main candidate for API
management (Policy Enforcement) solution.
Do you know any LIVE deployments of APIMAN with scale larger than 200 TPS
per node?
Any idea how many APIMAN LIVE deployments are there?
Could you point me to some performance benchmarks of APIMAN, are there any?
Is APIMAN stable enough for going to PRODUCTION?
Thanks in advance!
Best regards,
Tomas Zuklys
8 years, 4 months
How to set apiman logging (NullPointerException when using Log4j2LoggerFactory)
by ejlp ejlp
Hi,
I was trying to use Log Header policy but no logging message shown in
Gatway's console or server.log.
I am using JBoss EAP 7.0 and Apiman 1.2.6.Final
This is what I've done in Gateway node:
* Use extracted war of apiman-gateway-api.war and apiman-gateway.war
* Put apiman-common-logging-log4j2-1.2.6.Final.jar into
<JBOSS_HOME>/standalone/deployment/apiman-gateway-api.war/WEB-INF/lib/
and <JBOSS_HOME>/standalone/deployment/apiman-gateway.war/WEB-INF/lib/
* Remove following line from apiman.properties
apiman-gateway.logger-factory=io.apiman.common.logging.impl.NoOpLoggerFactory
and put this line:
apiman-gateway.logger-factory=io.apiman.common.logging.log4j2.Log4j2LoggerFactory
* Restart JBoss EAP
I got following stacktrace when EAP started:
05:58:00,693 ERROR [org.jboss.msc.service.fail] (ServerService Thread
Pool -- 64) MSC000001: Failed to start service
jboss.undertow.deployment.default-server.default-host./apiman-gateway-api:
org.jboss.msc.service.StartException in service
jboss.undertow.deployment.default-server.default-host./apiman-gateway-api:
java.lang.RuntimeException: java.lang.RuntimeException:
java.lang.NullPointerException
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException:
java.lang.NullPointerException
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:231)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
... 6 more
Caused by: java.lang.RuntimeException: java.lang.NullPointerException
at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.instantiate(ConfigDrivenEngineFactory.java:179)
at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.create(ConfigDrivenEngineFactory.java:163)
at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.createLoggerFactory(ConfigDrivenEngineFactory.java:152)
at io.apiman.gateway.engine.impl.AbstractEngineFactory.createEngine(AbstractEngineFactory.java:60)
at io.apiman.gateway.platforms.war.WarGateway.init(WarGateway.java:55)
at io.apiman.gateway.platforms.war.listeners.WarGatewayBootstrapper.contextInitialized(WarGatewayBootstrapper.java:42)
at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187)
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:198)
... 8 more
Caused by: java.lang.NullPointerException
at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.instantiate(ConfigDrivenEngineFactory.java:175)
... 15 more
05:58:00,695 ERROR [org.jboss.as.controller.management-operation]
(DeploymentScanner-threads - 1) WFLYCTL0013: Operation ("deploy")
failed - address: ([("deployment" => "apiman-gateway-api.war")]) -
failure description: {"WFLYCTL0080: Failed services" =>
{"jboss.undertow.deployment.default-server.default-host./apiman-gateway-api"
=> "org.jboss.msc.service.StartException in service
jboss.undertow.deployment.default-server.default-host./apiman-gateway-api:
java.lang.RuntimeException: java.lang.RuntimeException:
java.lang.NullPointerException
Caused by: java.lang.RuntimeException: java.lang.RuntimeException:
java.lang.NullPointerException
Caused by: java.lang.RuntimeException: java.lang.NullPointerException
Caused by: java.lang.NullPointerException"}}
8 years, 5 months
Red Hat acquire 3Scale
by Ashish Patel
Got interesting news this morning...
How will it impact APIMan ? Any idea ? We are putting lot of weight behind deploying Apiman in production and any insight on this would be very valuable.
https://www.redhat.com/en/about/blog/red-hat-and-api-economy?sc_cid=70160...
Thanks & Regards,
Ashish Patel
"Scientists investigate that which already is;Engineers create that which has never been." - Albert Einstein.
________________________________
Disclaimer: This message may contain privileged and confidential information and is solely for the use of intended recipient. The views expressed in this email are those of the sender and not Future Group's. The recipient should check this email and attachments for the presence of viruses. Future Group accepts no liability for any damage caused by any virus transmitted by this email. Future Group may monitor and record all emails.
8 years, 5 months
building apiman on Redhat
by Christopher Stolte
Hello,
I am trying to build apiman-1.2.6.Final on Redhat. Server details:
$ uname -or
3.10.0-229.el7.x86_64 GNU/Linux
$ java -version
openjdk version "1.8.0_91"
The build fails at this point:
[INFO] --- frontend-maven-plugin:0.0.27:install-node-and-npm (install node and npm) @ apiman-manager-ui-war ---
[INFO] Found proxies: []
[INFO] Installing node version v5.6.0
[INFO] Creating temporary directory /home/cloud-user/apiman-build/manager/ui/war/node_tmp
[INFO] Downloading Node.js from https://nodejs.org/dist/v5.6.0/node-v5.6.0-linux-x64.tar.gz to /home/cloud-user/apiman-build/manager/ui/war/node_tmp/node.tar.gz
[INFO] No proxies configured
[INFO] No proxy was configured, downloading directly
[INFO] Extracting Node.js files in node_tmp
[INFO] Unpacking /home/cloud-user/apiman-build/manager/ui/war/node_tmp/node.tar.gz into /home/cloud-user/apiman-build/manager/ui/war/node_tmp
[INFO] Moving node binary to /home/cloud-user/apiman-build/manager/ui/war/node/node
[INFO] Deleting temporary directory /home/cloud-user/apiman-build/manager/ui/war/node_tmp
[INFO] Installed node locally.
[INFO] Installing npm version 3.6.0
[INFO] Downloading NPM from http://registry.npmjs.org/npm/-/npm-3.6.0.tgz to /home/cloud-user/apiman-build/manager/ui/war/npm.tar.gz
[INFO] No proxies configured
[INFO] No proxy was configured, downloading directly
[INFO] Extracting NPM files in node/
[INFO] Unpacking /home/cloud-user/apiman-build/manager/ui/war/npm.tar.gz into /home/cloud-user/apiman-build/manager/ui/war/node/node_modules
[INFO] Installed NPM locally.
[INFO]
[INFO] --- frontend-maven-plugin:0.0.27:npm (npm install) @ apiman-manager-ui-war ---
[INFO] Found proxies: []
[INFO] Running 'npm install --color=false' in /home/cloud-user/apiman-build/manager/ui/war
[ERROR] npm WARN deprecated graceful-fs(a)1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs(a)^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
Node/npm appear to be globally installed:
$ npm -v
2.15.1
$ node -v
v4.4.3
I then tried to execute that npm command from the stated directory, and got this:
$ cd manager/ui/war
$ npm install --color=false
npm WARN peerDependencies The peer dependency marked(a)^0.3.3 included from marked-terminal will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN prefer global marked(a)0.3.5 should be installed with -g
npm WARN deprecated graceful-fs(a)1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs(a)^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm WARN peerDependencies The peer dependency grunt@>=0.4.0 included from grunt-contrib-cssmin will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN peerDependencies The peer dependency grunt(a)~0.4.1 included from grunt-jekyll will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN peerDependencies The peer dependency grunt(a)~0.4.5 included from grunt-contrib-less will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN peerDependencies The peer dependency grunt(a)~0.4.0 included from grunt-contrib-uglify will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN peerDependencies The peer dependency grunt(a)~0.4.0 included from grunt-contrib-connect will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN deprecated lodash(a)2.4.1: lodash@<3.0.0 is no longer maintained. Upgrade to lodash(a)^4.0.0.
npm WARN peerDependencies The peer dependency grunt(a)~0.4.0 included from grunt-contrib-watch will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm ERR! Linux 3.10.0-229.el7.x86_64
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--color=false"
npm ERR! node v4.4.3
npm ERR! npm v2.15.1
npm ERR! code EBADPLATFORM
npm ERR! notsup Unsupported
npm ERR! notsup Not compatible with your operating system or architecture: fsevents(a)1.0.8
npm ERR! notsup Valid OS: darwin
npm ERR! notsup Valid Arch: any
npm ERR! notsup Actual OS: linux
npm ERR! notsup Actual Arch: x64
npm ERR! Please include the following file with any support request:
npm ERR! /home/cloud-user/apiman-build/manager/ui/war/npm-debug.log
Does anyone have an idea as to what is going on here? I see some threads about the maven plugin that installs node/npm locally (https://issues.jboss.org/browse/APIMAN-771), but it isn't quite what's going on here. I'm especially confused about versions, since the plugin installed versions [5.6.0/3.6.0] locally but the above error message is referencing the globally installed versions [4.4.3/2.15.1].
Any help much appreciated!
Chris
8 years, 5 months
Re: [Apiman-user] apiman Production Deployment
by Ashish Patel
Cool Thanks Eric.
I have proposed separate ES for cloud gateway to avoid frequent cloud<->OnPrem n/w calls. Will API Manager be able to show cloud gateway metrics? If Yes, wanted to know how that works.. and if no, what are other options to view cloud gateway metrics?
Thanks again,
Ashish.
Sent from my phone
On Eric Wittmann <eric.wittmann(a)redhat.com>, 16-Jun-2016 2:58 pm wrote:
I think this diagram looks pretty good now! :) I don't think there's
any issue with having a single Keycloak to support both on-prem and
cloud. That would make user and realm management much easier, obviously.
-Eric
On 6/16/2016 3:54 AM, Ashish Patel wrote:
> Hi Eric,
>
> Oh, yes copy paste. Modified it. Kindly suggest.
>
> https://postimg.org/image/ebydokdbl/
>
> One specific query on KeyCloak : can we have only one - KeyCloak (OnPrem) ? or is it mandatory to keep OnPrem and Cloud ?
>
> Thanks & Regards,
> Ashish Patel
>
> "Scientists investigate that which already is;Engineers create that which has never been." - Albert Einstein.
>
>
>
> -----Original Message-----
> From: Eric Wittmann [mailto:eric.wittmann@redhat.com]
> Sent: 15 June 2016 23:51
> To: Ashish Patel; apiman-user(a)lists.jboss.org
> Subject: Re: [Apiman-user] apiman Production Deployment
>
> Hi Ashish.
>
> I'm a little bit confused by some of the box labeling I think. Some of
> the boxes in the top half of the diagram are labelled "Cloud" when I
> expected them to be labelled On-Premise. Is that intentional or
> copy/paste errors?
>
> -Eric
>
> On 6/14/2016 7:35 AM, Ashish Patel wrote:
>> Hi Eric,
>>
>> In addition to below doubt over "Two Logical API Gateway", have got proposed deployment diagram - can you please review and suggest ?
>>
>> http://postimg.org/image/qzll2wwhz/
>>
>> Thanks & Regards,
>> Ashish Patel
>>
>> -----Original Message-----
>> From: Ashish Patel
>> Sent: 14 June 2016 11:02
>> To: 'Eric Wittmann'; apiman-user(a)lists.jboss.org
>> Subject: RE: [Apiman-user] apiman Production Deployment
>>
>> Thanks Eric, this helps a lot.
>>
>> We would go with Two "logical" API Gateways, as it gives more flexibility. One Doubt: 1. UI will be only one right - be @On Premise / On Cloud.
>>
>> With single "logical" API Gateway, more concerned over Cloud<->OnPremise Network glitches, may become bottleneck for lot of DB/ES calls (at least for one gateway).
>>
>> Thanks & Regards,
>> Ashish Patel
>> (M) +91 93270 15128
>>
>> "Scientists investigate that which already is;Engineers create that which has never been." - Albert Einstein.
>>
>>
>>
>> -----Original Message-----
>> From: Eric Wittmann [mailto:eric.wittmann@redhat.com]
>> Sent: 13 June 2016 21:32
>> To: Ashish Patel; apiman-user(a)lists.jboss.org
>> Subject: Re: [Apiman-user] apiman Production Deployment
>>
>> Hi Ashish.
>>
>> Sorry for the delay in my response. I'll do my best to answer your
>> questions.
>>
>>> 1. We want to have single API Manager for our consumers in "on-premise"
>>> and "cloud" (AWS/Azure..etc). So, can we deploy couple of instance of "
>>> Apiman Gateway" in on-premise and couple of on cloud ? If yes, what
>>> would be possible deployment architecture ? (best place to put RDBMS
>>> on-prem/cloud, best place to put keyclock server/ ES server..etc ?)
>>
>> There are a very large number of choices here! It depends a lot on
>> exactly what you're trying to achieve. Two different configurations
>> jump to mind.
>>
>> Config 1 - A single "logical" API Gateway
>>
>> In this configuration, every API Gateway node (regardless of whether it
>> is on-prem or in the cloud) shares a common data store. This allows
>> every node to service the *same* set of APIs. In this case the single
>> gateway storage (database or elasticsearch) will need to be accessible
>> by all gateway nodes.
>>
>> In the UI, there is only *one* gateway, so there are no extra steps that
>> API developers need take when publishing APIs. However, every Gateway
>> node must be able to access every back-end endpoint at the same URL.
>>
>>
>> Config 2 - Two "logical" API Gateways
>>
>> In this config, the on-prem gateway node(s) and the in-cloud gateway
>> node(s) each have their own gateway storage (database and/or
>> elasticsearch). When set up this way, the API Manager must be
>> configured with *both* gateways, and each gateway should have a sensible
>> name, such as "On Premise Gateway" and "Cloud Gateway".
>>
>> In the UI, the API Developers will need to choose which of the two API
>> Gateways their API should be published to (they must choose *at least
>> one* gateway). This allows different gateways to service different
>> APIs, offering more flexibility.
>>
>>> 2. production guide having wildfly version, however we would prefer
>>> tomcat / vert.x, any specific guide changes for tomcat / vert.x ?
>>
>> We only have documentation for Wildfly at the moment, but if you wish to
>> use Tomcat it should be relatively simple to extrapolate the
>> documentation to that platform. The vert.x implementation is
>> experimental at this point, and should not be used in production.
>>
>>> 3. Can we have companies using apiman on production ? any benchmarking
>>> stats and case study material ?
>>
>> I'm sorry to say that we don't currently have reference users or
>> production benchmarks yet. These materials will surely be coming in the
>> future as the project matures.
>>
>> Thanks!
>>
>> -Eric
>>
>> Disclaimer: This message may contain privileged and confidential information and is solely for the use of intended recipient. The views expressed in this email are those of the sender and not Future Group's. The recipient should check this email and attachments for the presence of viruses. Future Group accepts no liability for any damage caused by any virus transmitted by this email. Future Group may monitor and record all emails.
>>
>
> Disclaimer: This message may contain privileged and confidential information and is solely for the use of intended recipient. The views expressed in this email are those of the sender and not Future Group's. The recipient should check this email and attachments for the presence of viruses. Future Group accepts no liability for any damage caused by any virus transmitted by this email. Future Group may monitor and record all emails.
>
________________________________
Disclaimer: This message may contain privileged and confidential information and is solely for the use of intended recipient. The views expressed in this email are those of the sender and not Future Group's. The recipient should check this email and attachments for the presence of viruses. Future Group accepts no liability for any damage caused by any virus transmitted by this email. Future Group may monitor and record all emails.
8 years, 5 months
apiman Production Deployment
by Ashish Patel
Hi,
I was referring production guide (http://www.apiman.io/latest/production-guide.html) for apiman production deployment @ our organisation.
have few queries, appreciate if someone can help.
1. We want to have single API Manager for our consumers in "on-premise" and "cloud" (AWS/Azure..etc). So, can we deploy couple of instance of " Apiman Gateway" in on-premise and couple of on cloud ? If yes, what would be possible deployment architecture ? (best place to put RDBMS on-prem/cloud, best place to put keyclock server/ ES server..etc ?)
2. production guide having wildfly version, however we would prefer tomcat / vert.x, any specific guide changes for tomcat / vert.x ?
3. Can we have companies using apiman on production ? any benchmarking stats and case study material ?
Thanks & Regards,
Ashish
________________________________
Disclaimer: This message may contain privileged and confidential information and is solely for the use of intended recipient. The views expressed in this email are those of the sender and not Future Group's. The recipient should check this email and attachments for the presence of viruses. Future Group accepts no liability for any damage caused by any virus transmitted by this email. Future Group may monitor and record all emails.
8 years, 5 months
Transformer policy plugin issue
by Ashish Patel
Hi,
We are facing issue while using Transformer plugin.
Scenario: We have SOAP Service in backend and want to expose as JSON to client App.
1. we have registered the SOAP service in Implementation (with Basic Auth).
2. added policy for using Transformation plugin (Client: JSON, Server:XML).
3. Published as Public API.
Through Rest Client -> Called Public API (POST -> content type as application/json and json input), however it failed with 500 error (able to read stacktrace - suggest input is not passed correctly).
With more debugging: As there are no logs from Transformation plugin, have added sysouts and found that JsonToXmlTransformer is NOT being called for input (json -> xml) transformation, however, on response XmlToJsonTransformer is being called successfully.
Kindly suggest.
Thanks & Regards,
Ashish Patel
"Scientists investigate that which already is;Engineers create that which has never been." - Albert Einstein.
________________________________
Disclaimer: This message may contain privileged and confidential information and is solely for the use of intended recipient. The views expressed in this email are those of the sender and not Future Group's. The recipient should check this email and attachments for the presence of viruses. Future Group accepts no liability for any damage caused by any virus transmitted by this email. Future Group may monitor and record all emails.
8 years, 5 months
Different API version-Contract Creation
by Mohan Joyappa
Hi Eric,
I have following scenario. I have two version of same API. Version 1 of API is the base version and version 2 of API has some additional changes to it (like some extra policy and what not). When I try to create a contract for my clientApp, I get to select what version of API I need to use as shown below
[cid:image003.png@01D1C31D.59B13A70]
So if I select API version 1.0 and click on OK, contract is always created with latest version of API no matter what other older version of API you have.
[cid:image004.png@01D1C31D.59B13A70]
Is this intentionally designed? If yes, the first step to choose a particular API version while creating a contract is somewhat misleading to me.
Best
Mohan Joyappa
8 years, 5 months
APIMAN, clustering, and versioning
by Christopher Stolte
Hello Apiman community,
Our team is hoping to use Apiman in a production environment that includes a load-balanced cluster of Apiman gateway instances. Those instances would share Elasticsearch storage for metrics etc., as per this architecture summary:
http://www.apiman.io/latest/production-guide.html#_architecture_summary
As we imagine this scenario, some questions pop up that we don't have answers to. For example, what assumptions can we make about data integrity when Apiman releases a new version? Are major releases the only ones that might break a schema (and thus not coexist happily in a cluster with other instances of a different version) ? I apologize if this is documented somewhere - I took a look around but didn't find anything related to versioning semantics. Basically we'd like to understand the upgrade path for a given instance within a cluster.
Apiman team: what have you tested or consciously targeted as far as clustered environments? Has anyone out there in the community tried to use a cluster of gateways? Has there been any work done related to this ticket?
https://issues.jboss.org/browse/APIMAN-278
Thank you in advance for any comments or guidance!
Chris Stolte
8 years, 5 months