Resource Usage, Load, Etc.

Discussion in 'General' started by mlewis, Jun 10, 2009.

  1. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    We have been playing with Elastix and it's looking interesting. However, some questions have come up and I am hoping that some in the forums might have enough experience to be able to share some input.

    With all of the functionality of Elastix into the one box, the question that constantly comes up is quality of voip when so many things are running.

    For example, there is the IM, the FAX, the Email and so on and there is even the possibility of having video calls. It is easy to start wondering just how many users such a system could handle, without breaking voice quality to the point where it's users become frustrated.

    That leads to a couple of questions.

    1: Let's say, using the 64bit version on a dual 64bit CPU system with 16GB of memory, with most things activated, how many users could we safely assume to have while keeping voice quality very good?

    2: Is there any way of load balancing multiple servers, centralized database for example, keeping the load between a number of Elastix servers nicely balanced?

    I had thought about perhaps setting up a shared storage for the web based side of things, so that this portion could be distributed over a number of web servers, offloading the main Elastix server/s.

    Perhaps something which would allow SIP connections to be load balanced again, across a number of servers?

    Any help, input, thoughts and even experience, telling how many users you are successfully running would help a great deal.

    Thank you in advance.

    Mike
     
  2. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    I would start here for some real world tales of dimensioning:

    http://www.voip-info.org/wiki/view/Aste ... mensioning

    As to load balancing SIP, well asterisk is a back-to-back user agent and is probably not what you need. I would look into a SIP proxy like sipexec or freeswitch if you need to scale that big.
     
  3. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    >I would start here for some real world tales of dimensioning:
    >http://www.voip-info.org/wiki/view/Asterisk+dimensioning

    I see some mighty impressive numbers. Hardware isn't a problem, I've got all kinds of it. Most of the servers I am using lately are dual CPU 64bit machines which can have up to 16GB of ram. From what I'm reading, I seem to be fine on the hardware side at least.

    >As to load balancing SIP, well asterisk is a back-to-back user agent and
    >is probably not what you need.

    Could you expand on this please, I'm not quite sure what you mean. Do you mean that a user is one one machine, so that means user TO server, not user to multiple servers?

    >I would look into a SIP proxy like sipexec
    >or freeswitch if you need to scale that big.[/quote]

    I did see an open source project which is a SIP router/load balance unit I think. I'll have to find it again.

    As I understand, SIP cannot be load balanced in that it cannot be sent mid-flight between servers but when someone registers their phone, I could guess that if I had some sort of load balancing in front, then that user could simply be sent to the next least busy server no?

    Basically, I don't care if I have to run a bunch of machines, so long as they system itself is more or less ONE machine. This is why I was wondering about centralizing various parts, such as the database.

    Mike
     
  4. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    Hopefully to elucidate:

    A phone call (traditional or voip) is ultimately an audio connection between two endpoints. The routing and delivery are handled by signaling, in effect the dial tones produced by one endpoint and the ultimate ringing of another endpoint, once that connection is made, voila two-way audio.

    SIP can be load balanced, with a proxy that takes an inbound request rewrites all the headers it cares to and sends it to the User Agent of choice (the device that handles the call itself (an endpoint).
    Asterisk is in itself a User Agent (analogous to a PBX (Public Branch Exchange)), that can forward a connection to another User Agent. A proxy is not in itself an endpoint but more like a telephone "exchange" that just handles the routing.

    I hope that helps, you can certainly use Elastix' as PBX's after a proxy server, hopefully the limitations of that topology are apparent, (just like traditional PBX's).

    As to databases, both sqlite and mysql are used in Elastix mysql is certainly suitable for networking but the sqlite parts might have a performance penalty as it is intrinsically disk based. Without some major restructuring the Elastix/FreePBX is only appropriate for use as a front end on one machine (PBX) although it is available remotely over the http protocol of course.
     
  5. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    I see. I don't know what is used with mysql or sqlite so would need to look into that.

    Making the assumption that I could centralize the extensions database for example, being able to create many of them, could I perhaps use a front end to many elastix boxes, making sure that only x number of users were registered on any one box?

    And if so, might someone have any thoughts on on how many simultaneous users we might be able to have on one box at a time, given enough horsepower.

    Mike
     
  6. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    There is no theoretical limit as to extensions (apart the number of digits in the extension), you will normally run into bandwidth limitations way before hardware limitations, The previous voip-info reference and:

    http://www.elastix.org/index.php?option ... 2744#22746

    will help you dimension your systems.

    Any web browser plus an ssh client are all the tools you need as a "front end" to Elastix.
     
  7. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    Sorry, the two things I meant were;

    Front end, meaning some way of balancing registrations with x number of servers. If I can sync up as many extensions as I need, then I should only need to run many Elastix boxes while limiting the number of registered users.

    Second, all that I am trying to achieve is some sort of single function machine, sort of like when you run multiple web servers and balance connections from the front. You can have as many web servers as you need, they all talk the same data and are identical. If one goes down, the rest continue to funtion.

    I would like to have this type of reliability using elastix on a large scale, so that in the long run, the larger picture is that all users, all resources, are seemingly on one machine but physically exist on many.

    I'm sorry if this is not clear, I'm not quite sure how to explain it :).

    Mike
     
  8. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    And if I get you right, basically Asterisk just doesn't work that way it is way too "stateful" , so "you can't do that" at least not directly with Elastix, or even lots of Elastix, you will, as I said very early in this thread, need a SIP proxy server(s). It is as easy to make this service (SIP) "load balanced" as it is with HTTP(S) through DNS, (given acquiescent protocol servers).

    As a gedankenexperiment as to what I mean by stateful, where would an incoming phone call to one of your extensions be sent to? Box A or Box Z?, ideally of course to the machine on which it were registered, but the question would remain, "how would it know?", conversely, to which box should an extension register to? and similarly how would IT know?. Well I guess your hypothetical "front end" could work it out from the various database, and if it could do that efficiently and explicitly, then congratulations! you have built that elusive SIP proxy server you are trying to avoid! Then you just have the overhead of the asterisk boxes re-processing all that signaling metadata so diligently gleaned (remember that back-to-back user agent thingy?) so it can provide the RTP(audio/video) path between the two endpoints. . . QED?

    When you have several hundred, if not thousands, users, you might need this type of deployment, until then Elastix/Asterisk will, I'm sure, work just fine for you in it's unadorned state.

    I'm sorry if this is not clear, I'm not quite sure how to explain it otherwise. :)

    Dick
     
  9. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    Interesting set of problems in this.
    Indeed I am looking into the products you've mentioned. In the meantime, I'm trying to get a handle on Elastix itself, being used to it's best maximum. In other words, having all of the features enabled, plus video conferencing, how many users. Perhaps I could simply run x-number of clients on each box, to some limit and not go beyond that. At some point, when something new, a solution comes along, perhaps I could migrate everything over to a better method, such as distributed.

    Are you saying to look at these products as solution or as front end to Elastix? It is the cool dashboard of Elastix that I very much want.

    I found freeswitch but don't see anything for sipexec?

    Thanks for all of the input.

    Mike
     
  10. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    You're welcome,
    There are no problems, just solutions.
    You have, I hope, the rudiments. I might suggest that you should limit yourself initially to 42 extensions, 42 trunks and 42 video conferences, this apparently is the answer to everything. :)
    (sipxecs maybe, sorry, I suffer from CRS)
    You ask a dimensionless question, I reply in a similar fashion B)
     
  11. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    Is that a joke or a rule? Sorry if I'm missing the reference :).
     
  12. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    Douglas Adams is the reference.

    The underlying question, and it's ultimate resolution, however can only be, I suggest, rooted in pragmatic experience , I apologize for my obliqueness.
     
  13. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    Not a problem at all, just wondered :).

    Can you let me know on the one question I had, asking if you saw these other tools as front ends or replacements for Elastix?

    I think what we'll do is go with Elastix, and just limit the number of users per server.

    Other than this, my next query is that of using Elastix as a virtual server. Even if I use a blade for just one instance, I would do this to gain the benefits of a virtualized server over a physical one. I think someone had posted some good findings on having to replace kernel and some other things.

    Mike
     
  14. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    I personally would not use asterisk in the sort of deployment you describe.

    It depends on how you intend to virtualize, vmware, xen ??, I think you will find plenty of posts here on the subject. In general the abstraction of any hardware from the virtual machines leaves you with a problem with some hardware telephony devices, if you just need a solid zap dummy timer, then opinions and performance are as varied as each other.

    If I am close in believing you are intending to do a "massive" deployment, then I would recommend against virtualization, any advantages are likely to be out-weighed by the disadvantages inherent with VM's
     
  15. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    Not so much massive as badly required to be scalable. Even 30/40 users per system would be a good start for us. Like I said, we very much want the features of Elastix is why.
     
  16. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    I think given the hardware you describe you can increase that by a factor of at least five if call-center type load and ten or more if just regular phone users. 30 to 40 I'd be happy with a 1g fanless thingy.
     
  17. mlewis

    Joined:
    Sep 25, 2008
    Messages:
    124
    Likes Received:
    0
    That's good to know. If I could get even 50 users per server, that would make me quite happy because at some point down the road, we would find a solution to centralizing, load balancing everything.
     

Share This Page