[asterisk-users] Need input on scalable system design...

Gregory Malsack gmalsack at coastalacq.com
Tue Aug 27 12:16:12 CDT 2013


Hey All,

Growing call center. Currently at about 200 call center staff, running 
about 1000 calls per hour. Gearing up to double that. Not too sure that 
a single server will support that growth. So, I'm trying to come up with 
ways to scale the system and still maintain a simplistic design. So I'd 
like to bounce some ideas around.

Currently I am running on a Dell 1950, dual quad core 2.33ghz xeons, 
with 16gb ram, and 2 tce400p cards. This server is managing the full 
load of the company. We are recording all calls, running ivr, queues, 
cdr, cel, and web for reporting. I currently have another 1950 of the 
exact same specifications as a cold spare.

Here's where you can see drawings of my current connectivity and an 
optional connectivity I'm contemplating...

http://www.paydaysupportcenter.com/current.pdf 
<http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Epaydaysupportcenter%2Ecom%2Fcurrent%2Epdf&urlhash=qLsB&_t=tracking_anet>http://www.paydaysupportcenter.com/option.pdf 
<http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Epaydaysupportcenter%2Ecom%2Foption%2Epdf&urlhash=CJG1&_t=tracking_anet>

As you can see I currently have a separate sql server and a separate 
storage server for the call recordings. This is all working fine.

However, I'm thinking for scalability I should be looking to migrate to 
a configuration similar to the one in option.pdf. Where I have a VOIP 
gateway server that simply relays traffic and possibly can do some load 
balancing or intellegent routing. But nothing more then that, and 
possibly a second one of these online as a hot failover.

Then have separate sql, storage, (i forgot it in the pic) web, and 
asterisk servers behind that on separate dedicated network. Here's my 
dilemma though, how do I balance the load across multiple machines for 
scalability...

Since 95% of our calls come into queues, I need to be able to maintain 
queue stats and presence across all of the servers. Thus far, I've got 
everything except the extensions.conf file into the mysql database. I 
thought about setting up 2 servers, 1 for sales, and 1 for customer 
service, then possibly break out each call queue to it's own server as 
things grow. Just not sure if that's the right way to go.

Then regarding extensions.conf, I've read that it too can be placed in 
the sql database and accessed via switch. however it's resource intense, 
so now I'm thinking of maybe putting that file on the nfs server for all 
of the boxes to read from.

As for the design of that file, I was kind of thinking of a modular 
design within the file using various goto's and gosubs. Our business 
model is based on affiliates and corporate marketing, so we have a ton 
of did's that follow the same call flow with minor modifications in some 
variables, as well as variations in call flow, and hours of operation. 
Thus the modular design of the call flow. Then the primary inbound 
context would simply be a list of did's pointing to a goto with a list 
of the variations and variables for the did.

Ok, now that I've melted your brains.... thoughts?

Thanks all in advance for the discussion...
Greg

-- 
Greg

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20130827/be6c4c1c/attachment.htm>


More information about the asterisk-users mailing list