If you are unable to create a new account, please email support@bspsoftware.com

 

News:

MetaManager - Administrative Tools for IBM Cognos
Pricing starting at $2,100
Download Now    Learn More

Main Menu

Cognos Installation For Load Balancing ..

Started by NaviGator, 16 Mar 2014 02:47:33 PM

Previous topic - Next topic

NaviGator

Hello guys,

I am facing an issue while trying to enable load balancing in my Cognos installation.

I have 2 AIX machines ( Machine A and Machine B). I installed Cognos 10.2.1 in both machines as follow,

Machine A, I installed all Cognos component ( Gateway, application tier and Content Manager). I configured the Content Store database As well.

Machine B, I installed also all Cognos components ( Gateway, application tier and Content Manager). I configured the Content Store database to point to the same content store used by machine A.

now in the Dispatcher URI for Machine A I added the URI for Machine B and in Machine B I added the URI for Machine A as well.

I configured the Content manager of Machine A to be the Active Content Manager for both.

After restarting the 2 machines. Machine A first and then machine B, Dispatcher B in both machines has the status of Unknown. and even if I started it, it will work but it keeps the status of Unknown.

Am I missing anything in the Configuration? or Did I do anything wrong in the listed steps?

You help is really appreciated.
Never Stop Learning ..

adam_mc

For Machine A; in the Dispatcher URI's for Gateway do you have it A then B?
For Machine B; in the Dispatcher URI's for Gateway do you have it B then A?

Also, do you have both servers listed in the Content Manager URI's under Other URI Settings?

We don't have two AIX machines, but just some thoughts based on my Windows configuration.
Hope this helps,
Adam.

MFGF

Quote from: NaviGator on 16 Mar 2014 02:47:33 PM
Hello guys,

I am facing an issue while trying to enable load balancing in my Cognos installation.

I have 2 AIX machines ( Machine A and Machine B). I installed Cognos 10.2.1 in both machines as follow,

Machine A, I installed all Cognos component ( Gateway, application tier and Content Manager). I configured the Content Store database As well.

Machine B, I installed also all Cognos components ( Gateway, application tier and Content Manager). I configured the Content Store database to point to the same content store used by machine A.

now in the Dispatcher URI for Machine A I added the URI for Machine B and in Machine B I added the URI for Machine A as well.

I configured the Content manager of Machine A to be the Active Content Manager for both.

After restarting the 2 machines. Machine A first and then machine B, Dispatcher B in both machines has the status of Unknown. and even if I started it, it will work but it keeps the status of Unknown.

Am I missing anything in the Configuration? or Did I do anything wrong in the listed steps?

You help is really appreciated.

Hi,

You can only have one active content manager, and this should be defined the same way on each machine. The content manager URIs on both machines will need to have the Machine A content manager URI defined as the first one in the list and the Machine B content manager URI defined second. Make sure you start Machine A first.

You haven't made it clear where your web server is located and how many you have. Currently you have two gateways installed, so to use them both you will need to have a web server installed on each machine, meaning each will have a different URL. Is this what you want?

On each machine it's a good idea to define the "dispatcher URI for gateway" consistently to have one machine first in the list (say Machine A) and the other second, which will mean one of the two (A in this case) acts as the load balancing dispatcher and the other is a standby in case Machine A disappears.

Cheers!

MF.
Meep!

sdf

Is this setup for load balancing? or for High-Availability?


Suraj

We have similar setup here but gateways are on windows machine.
Linux1 and Linux2 have cognos app/cm installed.
Windows1 and windows2 have gateway installed with IIS configured on both.
But network guys have some process in place that routes requests to one of those two gateways.

Not sure why it's done that way as I think having just one gateway with two dispatchers in the list would have the same load balancing effect.
Thoughts?


MFGF

Hi,

Load balancing is done by the "driving dispatcher" within the architecture (ie the dispatcher which the gateway hands off the request to). Normally this will be the first dispatcher in the list defined in the gateway config. The dispatcher will use a weighted round robin approach to load balancing, where requests are handed off to other dispatchers in a proportion based on their relative weighting. In low usage situations load balancing does not occur and all the requests are handled by the server the "driving dispatcher" is situated on - the tipping point is where 50% of the configured connections are in use on that server.

If you have a setup with multiple gateways fed by a hardware router acting as a load balancer, it probably makes sense to turn off the load balancing feature of each dispatcher by using the "Cluster compatible" setting - otherwise the load balanced requests from the hardware router might get load balanced again to a different server.

Cheers!

MF.
Meep!

SomeClown

Gateways behind a load balancer don't distribute work to dispatchers unless you isolate dispatchers in the gateway config.  Under typical configs, the balanced gateways still use the default Cognos routing. (load balancer picks gateway for request, gateway sends to dispatcher, then off they go).   Loadbalancing web is usually a "no single point of failure" policy and less a capacity issue.

Cluster compatible would be when you put the dispatcher servers behind the load balancer and specify the loadbalancer IP/machine name as the only dispatcher in the environment.

One item to watch: sticky sessions.  If you get the occasional failed redraw, session dropped, etc, you may be seeing functions that require the web session to continue through the initial chosen gateway machine.  I usually tell clients to turn it on and avoid any headaches down the road.  It's not always needed, but easier than debugging weird issues (and less an issue when it's a policy decision about single-point-failure)

Suraj

I see.
Quote from: MFGF on 07 Apr 2014 02:52:43 AM
If you have a setup with multiple gateways fed by a hardware router acting as a load balancer, it probably makes sense to turn off the load balancing feature of each dispatcher by using the "Cluster compatible" setting - otherwise the load balanced requests from the hardware router might get load balanced again to a different server.
Cheers!
MF.

I think that's may be what's going on here partially.
Since both gateway machines have both the dispatchers listed but the order is reversed, it may be okay as the first one in the list gets more requests.
But during heavy uses, they might be re-load balanced.  ::)

It's a new job and I'm just starting to understand how everything is setup.

BTW, Gateway machine is not counted as Cognos server install as there is no app right?

MFGF

Quote from: Suraj Neupane on 07 Apr 2014 09:36:11 AM
Since both gateway machines have both the dispatchers listed but the order is reversed, it may be okay as the first one in the list gets more requests.
But during heavy uses, they might be re-load balanced.  ::)

Yes - exactly. Each gateway machine will send requests to the first dispatcher in it's list, and only send to the second if the first one disappears (ie failover). However, the dispatchers know about each other and will load balance between each other if >50% of their defined connections are utilised. You can prevent this by setting each to Cluster Compatible, in which case each dispatcher will load balance between the connections available on it's local machine but will not send requests to any other dispatcher.

Quote from: Suraj Neupane on 07 Apr 2014 09:36:11 AM
BTW, Gateway machine is not counted as Cognos server install as there is no app right?

Correct :)

MF.
Meep!

Suraj

#9
Quote from: MFGF on 07 Apr 2014 09:51:19 AM
...You can prevent this by setting each to Cluster Compatible, in which case each dispatcher will load balance between the connections available on it's local machine but will not send requests to any other dispatcher.
MF.
Or I can just remove the other machine's dispatcher from the list so each gateway machine just has one dispatcher.
That'll have the same effect since the network load balance has both gateways listed anyways.  ???

MFGF

Quote from: Suraj Neupane on 07 Apr 2014 10:09:00 AM
Or I can just remove the other machine's dispatcher from the list so each gateway machine just has one dispatcher.
That'll have the same effect since the network load balance has both gateways listed anyways.  ???

No - this is not the way it works. The dispatchers listed for a gateway are a list that is used for failover, and nothing to do with load balancing. The gateway will always attempt to send requests to the first dispatcher in its list. Only if this dispatcher is unresponsive will it attempt to send requests to the second one in the list. Once a request reaches a dispatcher, the dispatcher will load balance it - either sending the request to one of its own connections or (if more than 50% of its connections are in use) to another dispatcher in the architecture - if it is set to Weighted Round Robin (the default). You can prevent this by setting each dispatcher to Cluster Compatible. This will mean that all requests sent to the dispatcher on Machine A will always be routed to a connection on Machine A - even if all the connections on machine A are in use. The request would be queued, and either get processed once a connection frees up, or would time out.

Cheers!

MF.
Meep!

Suraj

Hmm...
Think of this way.
If there are 10 requests coming in, the network load balance itself divides them to the two gateways.
Basically, the way it's setup here, requests are divided even before they come to one of the gateway machines.
It is same as if the requests are only 5 for each gateway.
In other words, there is no load balancing done inside Cognos as the load is equally divided from the network.
Or am I missing something?

MFGF

Quote from: Suraj Neupane on 07 Apr 2014 11:32:21 AM
Hmm...
Think of this way.
If there are 10 requests coming in, the network load balance itself divides them to the two gateways.
Basically, the way it's setup here, requests are divided even before they come to one of the gateway machines.
It is same as if the requests are only 5 for each gateway.
In other words, there is no load balancing done inside Cognos as the load is equally divided from the network.
Or am I missing something?

I see your point - yes. The thing to remember is what would happen in situations with more load.

In that same setup, let's say your two servers have four defined report services each, and each report service has five connections. This means each server has 4x5 = 20 connections and can process 20 requests simultaneously. Now let's say you have 30 simultaneous requests coming in to your network load balancer. It will divide these up and send 15 to each server. However, those 15 simultaneous requests per server are above the 50% threshold at which each dispatcher will begin doing its own load balancing (it has 20 connections so the 50% threshold would be 10 simultaneous requests per server). With Weighted Round Robin set for each dispatcher (the default) those dispatchers would most likely start spreading the 15 requests they each receive between each other. You would likely still end up with 15 requests per server, but not necessarily the same 15 the network load balancer sent to each. The 15 requests sent to the dispatcher on machine A would be load balanced again and would be spread between machines A and B. The same with the requests sent by the network load balancer to machine B - they would be spread by the dispatcher on B to be processed on both machines. In other words, the architecture would be doing work unnecessarily in performing its own load balancing. If, however, you set each dispatcher to Cluster Compatible, it turns off the behaviour of the dispatchers spreading requests between themselves. The 15 requests the network load balancer sends to server A would get processed on server A and the 15 requests the network load balancer sends to server B would get processed on server B.

Cheers!

MF.
Meep!

Suraj

Okay got it.
But what's the advantage of setting up two dispatchers in cluster mode vs setting just one dispatcher in each corresponding machine so Cognos never has to do any load balancing?
30 requests will be divided into 15 by the network for each gateway that only see it's one dispatcher.
Cognos never has to worry about what dispatcher to route the requests to.

MFGF

#14
Quote from: Suraj Neupane on 08 Apr 2014 09:54:55 AM
Okay got it.
But what's the advantage of setting up two dispatchers in cluster mode vs setting just one dispatcher in each corresponding machine so Cognos never has to do any load balancing?
30 requests will be divided into 15 by the network for each gateway that only see it's one dispatcher.
Cognos never has to worry about what dispatcher to route the requests to.

Hi,

You're assuming that a gateway load balances. It doesn't - it simply routes requests to the first dispatcher in it's list. Only if that dispatcher dies/disappears/fails will it try the second (if there is a second defined.) If there is only one dispatcher in the list and that dispatcher disappears, the gateway will have nowhere to send requests and the requests will fail. The list of dispatchers defined for a gateway is for failover only. Not for load balancing. Gateways don't load balance. It's the dispatchers that load balance. Every app server machine in the architecture has a dispatcher. Because you have two app servers you have two dispatchers, and they know about each other because they are configured to use the same content manager. Because they know about each other and will be set to "Weighted Round Robin" by default, they will automatically load balance between each other. The only way you can prevent this is to set each dispatcher to Cluster Compatible.

I think you misunderstood what I said before about dispatchers. You would not need to set up two dispatchers on each app server - each app server would have one dispatcher. You end up with two dispatchers in the architecture because you have two app servers in the architecture. All you need to do is to define the dispatcher on each app server as Cluster Compatible to prevent load balancing between the servers.

Cheers!

MF.
Meep!

Suraj

#15
Yes, got confused with the two machines.
As you said, removing 2nd dispatcher from windows gateway machine won't matter as the app configuration has them in the linux machine using the same content store and the two dispatchers show up in Cognos administration window.
Thanks for explanation.

chilonnb

hello,

i'm using distributed architecture for cognos 10.2.1

server 1 : Cognos Web + Gateway (dispatcher for gateway : dispatcher server 3 then dispatcher server 4)
server 2 : cognos web + gateway (dispatcher for gateway : dispatcher server 4 then dispatcher server 3)


server 3: cognos BI App + CM (CM1)
server 4 : cognos BI App + CM (CM1)

SGBD CM1 = database sql server 2012


dispatcher server 3: http://server3:9300/p2pd/servlet/dispatch/ext
dispatcher server 4:  http://server4:9300/p2pd/servlet/dispatch/ext


when server 3 and 4 is ok, access on web servers (portal) is ok

when server 4 fail, the cognos web access (portal) from server1 is OK, but the cognos web access (portal) from server2 is very very very slow,

when server 3 fail, the cognos web access (portal) from server2 is OK, but the cognos web access (portal) from server1 is very very very slow,

any ideas please,

thanks,
Modify message

chilonnb

i've the solution,

Resolving the problem

Switch from CGI to ISAPI in the Cognos Configuration Gateway URI

http://www-01.ibm.com/support/docview.wss?uid=swg21358733

thanks,

MFGF

Meep!