VMware {code} Community
ZIAXRenas
Contributor
Contributor
Jump to solution

ViSDk api fails when behind a load balancer network

Hi Everyone,

I have an application using the VI SDK to find the virtual Infrastructure of newtwork.This application is behind a load balancer network configuration.

Does having this sort of ntwork configuration affect the VI SDK apis.The funny problem is that all the virtual machine are found but there is an issue with getting the host systems.

Can anything be done to make it work without changing the network configuration?

All help related to this is appriciated

Thank you

Tejas

0 Kudos
1 Solution

Accepted Solutions
Steve_Jin
Expert
Expert
Jump to solution

Yes. Check out: http://pubs.vmware.com/vi-sdk/visdk250/ReferenceGuide/vim.SessionManager.html#sessionIsActive

Steve JIN, VMware Engineering

Creator of VMware Infrastructure Java API:

VI Java API 2.0 --- 15 times faster than AXIS in loading, 4+ faster in deserialization; only 1/4 of the size required by AXIS. More importantly freedom to redistribute your applications.

Download, Samples, DocWiki, RSS Feed

Steve JIN Author of VMware VI and vSphere SDK; Creator of open source VI Java API (http://vijava.sf.net); Blogger at http://www.doublecloud.org

View solution in original post

0 Kudos
12 Replies
Steve_Jin
Expert
Expert
Jump to solution

Were all the VI SDK traffic routed to the same server behind load balancer? Did you get any exception?

Steve JIN, VMware Engineering

Creator of VI Java API: http://vijava.sf.net

Steve JIN Author of VMware VI and vSphere SDK; Creator of open source VI Java API (http://vijava.sf.net); Blogger at http://www.doublecloud.org
ZIAXRenas
Contributor
Contributor
Jump to solution

Thank you for the prompt reply

I am getting an exception ForkedActionException: java.net.SocketException: Software caused connection abort: socket write error

Does it help you ?

vimService.retrieveProperties(PropCollector, new PropertyFilterSpec[] ); has returned null and hence no host systems are getting shown

Tejas

0 Kudos
stumpr
Virtuoso
Virtuoso
Jump to solution

1) Is the VC SOAP Service behind a Load balancer or just your application?

2) Are you using sticky sessions on your load balancer to your application? If not, are you running some shared session data (the VI SDK Session ID) between your Load balanced API applications?

Reuben Stump | http://www.virtuin.com | @ReubenStump
Steve_Jin
Expert
Expert
Jump to solution

Tejas

Most likely your load balancer route the VI SDK traffic to somewhere else in the middle of communication. Can you configure your load balancer so that all the traffic to the ESX/VC?

Steve JIN, VMware Engineering

Creator of VI Java API:

Steve JIN Author of VMware VI and vSphere SDK; Creator of open source VI Java API (http://vijava.sf.net); Blogger at http://www.doublecloud.org
ZIAXRenas
Contributor
Contributor
Jump to solution

Hi ,

THe answers to your questions is as follows

1) My application is on a balanced network, Virtual Center is on a "normal" network

2) sticky session is used with incoming traffic, I don't know what happens the other way

THnak you

Tejas

0 Kudos
ZIAXRenas
Contributor
Contributor
Jump to solution

The answer to your question is:

1) I suppose there are no extra rules for VI SDK traffic, and I can't route all the traffic to the ESX/VC

Can this be a problem for timeout

Thank you

Tejas Saner

0 Kudos
Steve_Jin
Expert
Expert
Jump to solution

To isolate the problem, I would suggest to run your app from a test machine connecting to the VC directly (no load balancer in the middle). If all works fine, let's look for other possible causes. If not, investigate more on the load balancer.

Steve JIN, VMware Engineering

Creator of VI Java API: http://vijava.sf.net

Steve JIN Author of VMware VI and vSphere SDK; Creator of open source VI Java API (http://vijava.sf.net); Blogger at http://www.doublecloud.org
0 Kudos
ZIAXRenas
Contributor
Contributor
Jump to solution

I did that it works fine on a test environment

0 Kudos
Steve_Jin
Expert
Expert
Jump to solution

Good. I think you may want to look into the load balancer.

Steve JIN, VMware Engineering

Creator of VI Java API: http://vijava.sf.net

Steve JIN Author of VMware VI and vSphere SDK; Creator of open source VI Java API (http://vijava.sf.net); Blogger at http://www.doublecloud.org
0 Kudos
ZIAXRenas
Contributor
Contributor
Jump to solution

Hi Steve,

Thanks a million for your responce.We increased the timeout of the VC and it worked.

But that was just a work around we did.

My question is, are there any apis present which tell me whether the connection i.e session is still active ,so if it not I can close that session and create a new session .So that It wont affect my application.

Thank you for your earlier help and hope to get more on my currect issue Smiley Happy

Have a good day,

Tejas Saner

0 Kudos
Steve_Jin
Expert
Expert
Jump to solution

Yes. Check out: http://pubs.vmware.com/vi-sdk/visdk250/ReferenceGuide/vim.SessionManager.html#sessionIsActive

Steve JIN, VMware Engineering

Creator of VMware Infrastructure Java API:

VI Java API 2.0 --- 15 times faster than AXIS in loading, 4+ faster in deserialization; only 1/4 of the size required by AXIS. More importantly freedom to redistribute your applications.

Download, Samples, DocWiki, RSS Feed

Steve JIN Author of VMware VI and vSphere SDK; Creator of open source VI Java API (http://vijava.sf.net); Blogger at http://www.doublecloud.org
0 Kudos
ZIAXRenas
Contributor
Contributor
Jump to solution

Thanks a lot Steve that was very helpful.But my further problem is I use VISDK 2.0 and the api which you gave me is from version 2.5.So I cant use the api which you suggested.Is there any other way or a work around that i may take to get this funtionality in my application without using version 2.5?

Thanks a lot for your hep

Tejas

0 Kudos