I have IPCC Enterprise and 2 CVP servers. I don't have CSS in the place. I want to load share CVP VXML server as today I observed huge call load and all vxml ports on CVP 1 was filled and all ports on CVP 2 was free. So I have to put traffic from 1 voice gateway to CVP 2 manually to resolve the problem. Please advise the best way I can achieve this load sharing.
Furthermore also note that we have CUPS in place and both CVP Call Servers are being load shared through cups. Please help on vxml part.
Thanks & regards,
The normal way is to set up the ICM script so that it uses a keyword for the ECC variable user.microapp.media_server and allow the ip host table in your gateways to resolve it.
I have always used the slightly odd keyword "mediaserver" because that's what Cisco specified in ISN and I just got used to it. It doesn't matter what the keyword is, but let's go with that for the purpose of the exercise.
Now if you only have 1 voice gateway you are screwed, but no one playing with CVP is going to use one VG - are they?
Let's say you have 2 (even numbers work well).
ip host mediaserver 192.168.0.2
ip host mediaserver-backup 192.168.0.3
ip host mediaserver 192.168.0.3
ip host mediaserver-backup 192.168.0.2
Make sure your ECC variable is long enough to hold http://mediaserver-backup:7000/CVP.
It is the voice gateway that chooses the external VXML server (the Audium box) so the above technique will distribute the load evenly. The "-backup" syntax will allow the VG to find the second VXML server should the first fail. This is a function of the Call Server, which will append "-backup" to the keyword in the ECC variable and retry if it gets a 404 error on the fetch for the first VXML page.
Although this all works surprisingly well, it is not as efficient as a CSS and does not work well if you have an odd number of gateways.
I am already using the below mentioned options, but the point is I am using 3 voice gateways. Thats the bad part .
Ah, three gateways. It's not going to work as well as 2 or 4 etc.
But let's go back to your original statement.
You said all the ports on the first VXML server were in use but none on the second. I'm therefore wondering how you have the incoming PRIs arranged by the carrier. Are these arranged in a trunk group? Is the carrier filling up a T1 before oveflowing to the next T1 in the trunk group? That could explain what you were seeing. Maybe the T1s could be re-ordered in the trunk group.
Let's say (for example) that you have 46 ports and 46 redundant VXML ports. You have a T1 in each of three gateways. Calls come in on gateway 1, fill up the T1 (using 23 ports) then the carrier routes calls down the second T1 into gateway2, which also has the keyword pointing at VXML server 1. Now the second T1 fills up and 46 ports are being used on VXML1; it's maxed out and no calls are on VXML2.
You get the idea. If the keyword on gateway 2 was pointing to VXML2, distribution would be better. Now when the T1 on gateway1 is full and the T1 on gateway2 is full, you have 23 ports in use on each VXML server. The third T1 can fill up (say using VXML1) and now you are maxed out on one VXML server, but it doesn't matter as the T capacity has been reached.
Does this make sense?
Geoff, last I tried this scheme I noticed that the "-backup" url was not attempted until the "http client timeout" timer expired on the VXML gateway. The CVP documentation recommends this be set to 30 seconds, which is a tad long for a caller to be waiting in silence.
If I lowered the setting down to something more reasonable, like 3 seconds, the "-backup" behavior worked ok. However, this setting also applies when the VXML gateway is waiting for a long running server transaction, such as a complex database lookup, so there are potential issues with setting the timeout too low. I'm curious if you have run into this before, or if I just missed something.
P.S. I noticed you mentioned a 404 error, in that situation I think it would work fine since the error is returned right away by the web server. The situation I ran into happens if the web server is not reachable at all, and the vxml gateway is waiting on a connection timeout.
Good questions. I used to be in favour of this -backup method since it saved the customer the cost of a 2-pack CSS. But since my last deployment which used the CSS, I have become enamoured by it and am now very keen on it for media files and for CVP VXML servers.
That said, I am working on an Audium application for an older customer and they don't have a CSS. The application also uses a DB in several of the pages. I set up a a test with the two VXML servers addressed through "mediaserver" and "mediaserver-backup" in the ip host table. I tried turning off the first VXML server and the application ran on the second one with a barely perceptible delay.
I did not adjust the gateway - "http client response timeout 30" is what I have also.
What was preventing the app from working on VXML1? Was it just down?
I am sure there are failure modes that don't work well without the CSS, but a simple "shutdown of VXML Server 1" did seem to work rather well, and I was a bit surprised.
I'm still hot on the CSS, though.
In ICM set the ECC variable to a string, not an IP address. Any string will do. Allow the VXML gateway to resolve this through the IP host table. This is described in the Guide.
I hope you have sorted it out. In this discussion Geoff alreay mentioned it how to do this. If not just use the below commands on your vxml gateways
On VG1: (10.6.20.211)
ip host mediaserver 10.6.20.202
ip host mediaserver-backup 10.6.20.203
On VG2: (10.6.20.212)
ip host mediaserver 10.6.20.203
ip host mediaserver-backup 10.6.20.202
and in ICM script instead of giving ip address "10.6.20.202" use "mediaserver"
Thanks and Regards,